可编辑的聘书

2024-10-18

可编辑的聘书(通用2篇)

可编辑的聘书 篇1

关键词:ZK,listbox,eclipse,zkstudio,wtp

在Ajax技术推出以后,互联网上可以看到很多针对Ajax的技术框架,比较优秀的有DWR、DOJO等相信广大开发人员也都比较熟悉这些框架了,但是当看到ZK框架时,你会眼前一亮,有一种豁然开朗的感觉没错,ZK框架的思想是非常棒的,它的口号是Without Javascnpt,是想将Ajax开发人员从繁琐的Java Script语言中解脱出来,它同时也是基于事件驱动的组件,通过标记语言来设计组件,以简化开发人员的工作。它显著的特点是使用类似XUL的标记语言来定义组件,这个框架的优点是:它将Windows桌面式开发模式引入到Ajax的Web应用中,在设计Ajax网络应用程式时,轻松简便的操作就像设计桌面程式一样,在项目中成功运用该框架实现系统的部分通用组件,如listbox和Combo Box等,并准备更深入地研究ZK框架,将其更多的思想运用在开发基于Ajax的应用中。

1 ZK环境搭建

(1)打开Eclipse(前提条件是已经安装好了ZK studio插件)。

(2)点击菜单Window->Preferences(From menu goto Windows>Preferences)。

(3)在打开的这个窗口上选择ZK->ZK Packages(On the Preferences Window,select ZK>ZK Packages)。

(4)点击Add Diretory选择到你下载的ZK Library包,不用解压,直接是ZIP文件,如图1所示。

(5)会跳出一个窗口来,点击OK。

(6)给这个包命名,一般就用默认的,点击OK。

(7)再选择上那个ZK Library就行了,如果不选择,会自动选择最后你引入的版本。到此,ZK的环境就配置完了。

2 程序实现

程序的主窗体如图2,图3所示。

(1)使用zkstudio可视化编辑器(如图4所示)创建zu放置combobox和listbox组件并设置相应属性:

(2)本案例从数据库中直接取出的数据,显示在LISTBOX中,但为了实现数据与视图分离,用接口ListModel来接受数据,再用listbox.setModel(listmodel)。

创建自定义ListModel。

(3)自定义一个渲染器

(4)combobox的事件监听器

(5)编辑框内容变化事件触发写入数据库

3 结语

通过中的示例,体验到ZK是C/S构架在Web应用中的实现。在编写C/S构架程序的时候都是基于各个组件的应用,如窗口、按钮、列表等,用面向对象的语言来说,C/S程序是由各个可视化的对象组成的。B/S构架应用开发步骤:编写前台数据输入页面,然后编写后台处理数据的代码,最后编写数据处理的结果的页面,以上的3个步骤通常是独立分开的,而目前ZK框架则将三者能够绑定在一起,在一个ZK得页面中完成。像桌面程序一样,每个显示页面关联一个后台程序,页面中元素值及属性在后台程序中均能够随时得到,后台程序也能够控制页面元素。

参考文献

[1]HenriChen,RobbieChen.ZK框架——Ajax开发实战.电子工业出版社,2009.

可编辑的聘书 篇2

1 FFT 算法的选择

对于N点有限长序列x( n) ,DFT( discrete fourier transform) 傅里叶变换对应的公式对为[4]:

式中,x( n) 代表n点的DFT序列,WnNk为DFT的旋转因子。FFT是DFT( 离散傅里叶变换) 的快速算法,它是根据DFT的奇、偶、虚、实特性演变而成。

传统的FFT算法包括卷积FFT算法和分裂FFT算法,卷积FFT算法是将DFT序列转换为卷积计算。分裂基算法是把有限长序列的N点DFT分解为每个长度为r的短序列进行DFT计算。分裂基算法相对卷积算法在逻辑控制上更加简单,这在硬件实现上占有很大优势。

FFT分裂基算法的表达式为N = rm,称为基r的N点FFT运算,其中m为FFT的级数。可见基二与基四、基八相比,FFT的序列长度N更灵活。

比较常用的基二和基四FFT算法,基四FFT的蝶形运算量为基二FFT的1 /4,级数为基二的一半,并且基四FFT的运算速度要比基二FFT块。但是,基四每个蝶形运算需要用到了三个复数乘法,而基二只需要一个复数乘法,从占用的FPGA资源方面考虑,基二算法更加节省资源。不仅如此,由于基四算法的复杂度较高,在一定程度上增加了器件连线长度和布线难度,使得芯片的连线延迟较高。综合这些因素,选择基二算法进行FFT硬件处理较为合理[5]。

基二FFT按时域抽 取法 ( DIT) 的蝶形运 算公式[6]:

式中,Am,Bm对应前一级的两个复数点,Am +1,Bm +1对应后一级两个复数点,WkN为旋转因子,该值可以预先计算得到。时域抽取法( DIT) 是在时域上分解N点DFT序列,输入为位倒序,输出为顺序。由上述公式可知,一次蝶形运算用到了1个复数乘法和2个复数加法。

2 1024点FFT硬件实现

硬件实现一般有顺序结构、并行结构、流水结构以及级联结构。其中顺序结构蝶形运算资源占用最少但速度最慢,并行结构最快但占用资源最大,流水结构虽然处理速度快但所占用资源仍然较大,而级联结构在资源占用与速度比例相对均衡。本文采用级联结构实现1024点FFT运算。

FFT的设计由时序控制单元,蝶形运算单元,地址管理单元,旋转因子存储单元及两组memory组成,如图1所示。

2. 1 旋转因子的产生与存储

旋转因子,既是X( k) 对x( n) 的离散傅里叶变换在频率处的采样值,也是Z平面单位圆上幅角在Z平面N等份后的第k点的值[7]。

因此,旋转因子 可以表示 为:

这里N为当前计算的点长度。第一级的旋转因子为W01024,W11024;第二级的旋转因子为W01024,W11024,W21024,W31024; 第九级的旋转因子为W01024,W11024,…,W11002234。这些旋转因子一一对应于Z变换域单位圆上,且各级旋转因子复用了前一级的旋转因子并使用了新的旋转因子,因此仅需存储第九级1 024个旋转因子即可。

将第九级产生的1,2,3,4象限的旋转因子的虚部实部分别存储到ROM中。而由上图可知,根据Z平面单位圆的对称性,第1、2、3、4象限的幅值是一样的,仅相位不同。第一象限的旋转因子分解到坐标轴后与其他象限分解后的值仅存在正负性差别,因此设计时,只需要存储第一象限的旋转因子即256个旋转因子即可,其他象限的旋转因子可通过对称性得到,进而节省所需的硬件资源。

2. 2 蝶形运算单元

蝶形运算是FFT运算的重要单元,该单元包括了乘法器电路,加法器,移位寄存器,饱和处理。如式( 3) 、式( 4) 所示,蝶形运算中需要将复数数据与旋转因子做复数乘法,及与其他数据加、减等运算。其中一次复数乘法如公式( 5) 所示,两组复数 ( A +Bj) 和 ( C + Dj) 相乘,包括4次实数乘法。而在式( 6) 、式( 7) 中对复数乘法做了优化[8]。

这种优化方式,使得原有的4次实数乘法转变为3次实数乘法,1次实数加法及2次实数减法。

硬件实现这种算法,只需提前知道C与D的值,得到C - D ,C + D即可。可以将上述公式的A,B对应蝶形运算输入数据的实部与虚部,C,D对应为旋转因子的实部与虚部,而由于FFT的旋转因子已知,即可通过查表的方式直接读出旋转因子的值并做加减运算,以式( 6) 、式( 7) 的方法完成蝶形运算复数乘法,节约乘法器资源。

本文对FFT数据采用定点化处理,定点化处理的优点在于实现简单,不需要额外的硬件资源。当单个蝶形运算单元的输入为N位时,输出最多为N + 2位,本文为了简化处理,将输入输出数据位宽都定为N + 2位。本文对每一级结果进行溢出判断,处理过程中对乘法结果进行了四舍五入,这样减小了截断误差。

2. 3 memory 存储单元

1 024点的FFT采用基二算法结构,需要10级FFT处理。本文采用8块256×28的双口RAM处理每级间数据,每4块RAM合成一组大小为1 024×28的memory,共合成两组,其中一组用于存储第0,2,4,6,8级的数据结果,另一组用于存储第1,3,5,7,9级的数据结果,以形成乒乓结构。如图2所示。

每一级的蝶形运算需要从对应的memory中的4块RAM里分别读取两个数据与旋转因子进行运算,每次并行处理八个数据,即4组蝶形运算,并在一个周期内完成,完成后将这8个点的结果写到另一组memory中,这样在128个周期后1 024个点都运算结束,如此往复,十级蝶形运算后,结束FFT。

2. 4 时序控制单元

时序控制单元包括状态机处理、数据控制逻辑。其中状态机主要处理每级蝶形运算间的状态跳转;数据控制逻辑主要负责memory数据读写控制以及不同memory间的乒乓操作控制。

由图3可知,第0级并行处理四个蝶形运算,每个蝶形运算单元处理同一块RAM里相邻地址的两个数据;

第1级的每个蝶形运算单元处理同一块RAM里间隔1个地址的两个数据;

第2级的每个蝶形运算单元处理同一块RAM里间隔3个地址的两个数据;

以此类推,第N( N < 8) 级时,则处理同一块RAM里间隔 ( 2N- 1) 个地址的两个数据;

当N≥8时,读取数据已超过了RAM的深度256,因此不能按照上述方法去处理。

当N = 8时,根据图3所示,从ram0和ram1的两个相同地址分别取两个数据,然后使用不同RAM但地址相同的两个数进行蝶形运算,ram2和ram3也按照此方式进行运算。

当N = 9时,从ram0和ram2的两个相同地址分别取两个数据,然后使用不同RAM但地址相同的两个数进行蝶形运算,ram1和ram3也按照此方式进行运算。

2. 5 地址生成单元

地址生成单元主要完成RAM的读写地址以及ROM的地址生成。地址生成单元包括计数器,截位拼接单元,块计数器,输出单元。计数器计算每一级所用周期数,每一级都为128 + 4个周期; 截位拼接单元用于通过计数器生成读取旋转因子的地址及读取memory的地址; 块计数器计算总共FFT的级数,范围为0 ~ 9。

需要注意的是,由于ROM中仅存有四分之一的旋转因子,因此需要根据需求对ROM中读出的旋转因子的值进行正负变换以得到符合要求的旋转因子。

3 时序仿真及结果

本文在ASIC下进行FFT的仿真及综合。将双口RAM及蝶形运算单元例化在FFT模块的测试代码中,双口RAM需要例化8块,进行ASIC仿真。以下两幅图为FFT仿真图。

先将输入数据写进memory2中,启动FFT的start信号,进行两组memory乒乓操作,图4( a) 即为FFT仿真结果。如图4( a) 所示,m从0级累计到9级,表示FFT内部控制memory数据读写的过程。

ASIC中的仿真结果显示,FFT每一级处理蝶形运算用到128个周期,则十级需要的时间是1 280周期,加上时序控制的状态转移30个周期,一共用1 310个周期。

ASIC的综合结果显示,整个FFT实现仅占用5万门资源。

本文用Xilinx公司的Virtex-7系列芯片做FFT的FPGA原型验证。Xilinx公司7系列的芯片工艺为28 nm,降低其成本和功耗,同时提高了FPGA的性能和容量。它通过整合6-LUT并与ARM公司合作规范AMBA总线,大幅提高芯片灵活性和片上系统性能。1024点的FFT数据,由于FPGA调试包括了DSP的控制,时钟频率仅开到50 MHz,仿真时间约为26. 2μs。如果在只有FFT硬件模块而没有DSP控制,时钟频率可以达到200 MHz,仿真时间仅有6. 55μs。

最后在matlab中做RTL硬件实现的误差分析。图5( b) 所示,real_error及image_error两个曲线为matlab结果与FPGA的仿真结果对应实部虚部的相对误差曲线,曲线在0附近波动,误差最大为5×10- 3,基本符合理论要求。图5( b) 中的matlab_real与dut_real曲线图分别对应matlab的FFT实部结果和RTL的FFT的实部结果,两条曲线基本一致,进一步说明RTL设计结果符合理论要求。

4 结论

通过对FFT一般算法的研究对比,提出了基2算法时域抽取法处理1 024点FFT的设计方案。通过了ASIC仿真、综合及FPGA的原型验证。该设计具有如下特点:

1) 四个蝶形运算并行处理,一个周期完成一次蝶形运算。

2) 用8块深度为256的双口memory读写FFT数据,并行8点处理FFT内部数据,共用1 320个周期。

3) 通过ASIC综合,硬件占用资源仅为5万门。

4) 用Xilinx的FPGA仿真测试,在50 MHz时钟频率下,需要时间为26. 4μs。

该FFT硬件实现是全RTL实现,已经通过前仿后仿及综合,可以作为IP核直接运用到实际工程中。

参考文献

[1] 解翀.基于FPGA的高速FFT处理器的研究.南京:南京航空航天大学,2010Xie C.Research on a high speed FFT processor with FPGA.Nanjing:Nanjing University of Aeronautics and Astronautics,2010

[2] 赵国亮.基于FPGA的1024点流水线结构FFT的算法研究与实现.西安:西安电子科技大学,2011Zhao G L.Research and implementation of 1024-point pipeline FFT algorithm based on FPGA.Xi’an:Xidian University,2011

[3] 李雪.基于FPGA的FFT处理器的设计与优化.哈尔滨:哈尔滨工业大学,2008Li X.The design and optimization of FFT processor on FPGA.Harbin:Harbin Institute of Technology,2008

[4] 谢彦林.可变点流水线结构FFT处理器的设计及FPGA实现.西安:西安电子科技大学,2007Xie Y L.The design of variable point pipeline FFT and implementation based on FPGA.Xi’an:Xidian University,2007

[5] 李小进,初建朋,赖宗声,等.高速基2FFT处理器的结构设计与FPGA实现.电路与系统学报,2005;10(5):49—53Li X J,Chu J P,Lai Z S,et al.FPGA implementation of a highspeed base-2 256-point FFT.Journal of Circuits and Systems(Natural Science),2005;10(5):49—53

[6] 王远模,赵宏钟,张军,等.用FPGA实现浮点FFT处理器的研究.国防科技大学学报,2004;26(6):61—64Wang Y M,Zhao H Z,Zhang J,et al.Realization of Floating-point FFT Processor with FPGA chip.Journal of National University of Defense Technology,2004;26(6):61—64

[7] 何方白,张德明,杨莉,等.数字信号处理.北京:高等教育出版社,2009:83—92He F B,Zhang D M,Yang L,et al.Digital signal processing.Beijing:Higher Education Press,2009:83—92

上一篇:社会实践实习报告下一篇:作文评语大全初中缺点