利用FPGA实现的任意波形发生器的研究设计
块)中,长的进位链会减少供其他逻辑使用的布线资源,同时过长的进位链也会制约系统频率的提高,所以进位链不能太长。因此,在相位累加器的设计中,要解决的难题是设法提高工作速度。为了解决速度难题,需从两个方面进行改进。 1.2.1 改进的流水线结构 在时序电路设计中为了提高速度,流水线结构是一种常用的设计方法。对于累加器来讲,流水线结构就是把一个位数很长的加法拆分成N个位数较短的加法,在N个时钟周期内做完然后输出运算结果,N就是流水线的级数。采用流水结构以后由于加法器的字长变短了,对于FPGA来讲加法器字长变短对工作频率的提高是相当可观的。当然,流水结构的使用并不能无限制地提高电路的工作速度。因此对于不同的器件来说,采用多少级流水对性能的提升比较大这个要经过仿真实验才能得到一个比较肯定的值。 本文运用流水线结构对相位累加器进行设计,当m=8、n=4的情况下,相位累加器的工作频率是最高的,达到了约70 MHz。但是为了进一步提高工作频率,还需要结合下面的并行进位方法。 1.2.2 并行进位加法器 DDS累加器电路的设计采用了流水线结构,由8级4位加法器完成对32位控制字的累加。32位累加器的结果在送入相位幅度变化电路时,进行了高位截断,只取高12位数据进行查表。因而,在8级的流水线结构中,前5级4位加法器实际上只贡献了进位,在设计时,前4级加法器采用了超前进位链,而高位加法器不仅要给出进位值,还要获得加法的结果,因此采用了QuartusII自带的宏模块结构。通过每一位的Pi、Gi和Ci-1值很容易求得该位进位值Ci。再与该位的和(Ai+Bi)相异或就得到最后的结果Si。即 采用上述结构,极大地提高了累加器的工作速度,其功能仿真图如图6所示,从图中可以看出,此4 bit超前进位加法器完全满足4位全加器的逻辑功能。 下面就将前5级采用超前进位加法器的32位累加器和宏模块中调用的4位全加器组成的32位相位累加器性能进行比较。 普通流水线累加器的模块是由4位D触发器,5位D触发器和4位全加器作为基本元件,采用原理图输入的方法设计FPGA的流水线累加器。该模块的设计参照流水线累加器结构进行,不同之处在于:由于相位累加器只用高位寻址,所以低位上为了和高位结果同时输出而做延时作用的D触发器件均被去掉了。这样做的结果是,相位累加器输出的低20位会因为提前输出而混乱,但是由于高12位的输出一定是正确的,这样做既节省了资源,对结果又没有任何影响。仿真结果证明假如不用流水线结构,32 bit相位累加器工作频率最高达到约25 MHz。消耗的资源是82个LEs,而用了8级流水线结构后,编译工作频率最高达到了约317.79 MHz,资源消耗为186个LEs。可见在资源上的消耗换来了在性能上的极大提高。 流水线累加器的时序仿真如图7所示:可以看出当输入数据确定后,输出结果要经过8个时钟周期的延时后输出,这是因为采用了8级流水结构。采用多少级流水结构,输出就会延时多少个周期。同时也说明,对于输入数据切换来说,该系统会有8个时钟周期的延时,这是累加器采用流水线结构所不可避免的后果。事实上目前许多DDS专用芯片由于也采用流水线结构,所以本身也存在这样的问题。由于8个时钟周期的延时与系统时钟相比,实际上还是很小的,在一般的应用场合下也是可以接受的。由于输出的低20位未用,被省略了,只用了输出的高12位,所以仿真波形中只有高12位的输出结果。从输出结果来看,高12位的输出值是没有错误的,与设计思想吻合。 下面介绍超进位流水线累加器的构成,比较流水线累加器内部结构图和超前进位加法器的32位相位累加器的结构图,可以看出两个图的区别,经过编译以后的报告如图8所示,可以看出经过改进后,编译的最大工作频率提高到了336.7 MHz。比单纯的流水线累加器提高了将近20 MHz。 图9是其时序仿真图,从图上可以看出,其值完全和功能仿真一致。 1.3 双口RAM设计 在设计波形存取电路时,首先应确定波形RAM的深度和字长。波形RAM的深度和字长与很多因素有关系。存储器内部存储的是一个或N个整周期的标准波形数据,存储器容量越大,存储的被采样波形点数就越多,采样效果就越好。存储器的读取速度是产生高频波形的重要保证,读取速度必须满足相位累加器的累加速度,这样才能保证直接数字合成过程的正常进行。同时,为了保证整个速度的同步性,选用一种同步RAM也是很必要的。 首先要确定波形RAM的深度和字长,由于任意波形发生器设计中选择的DAC的字长是12位,很明显波形RAM的字长也应该是12位;由于选择的地址线位数为12位(即相位累加器输
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)