新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 利用FPGA实现的任意波形发生器的研究设计

利用FPGA实现的任意波形发生器的研究设计

作者: 时间:2010-12-28 来源:网络 收藏

  地址分配模块采用一个3/8译码器来实现地址选通的功能,如图4所示。

  由于累加器的清零是当“clr”=1的时候,所以在与门后加一个反相器,而频率寄存器清零的条件是“clr”=0,所以,就可以直接与门后相连即可。3/8译码器的使能端接VCC,G2AN和G2BN连起来接CS,作为整个模块的片选信号,当低电平的时候选中,各模块才开始工作。

  地址锁存模块主要解决单片机P0口的分时复用问题。本设计选用的单片机为51系列单片机,其PO口既作为数据口,又作为地址总线的低8位,因此在使用时,需要将地址信号从分时复用的地址/数据总线中分离出来。本设计选用8D锁存器7415373来作为地址锁存器。当74LS373用作为地址锁存器时,应使OEN为低电平导通输出,此时,锁存使能端G为高电平时,输出Q1~Q8状态与输入D1~D8状态相同;当G发生负跳变时,输入端数据D1~D8锁入Q1~Q8。因此在使用74LS373时,51单片机的ALE信号可以直接与74LS373的G相连。

  1.2 相位累加器设计

  相位累加器用于对输入频率控制字进行累加运算,输入频率控制字决定输出信号的频率和频率分辨率。因此相位累加器是整个DDS性能的关键部分。传统的相位累加器是用1个加法器加1个D触发器组成,调用其中的1个宏模块设置成32位数据相加,再加另一个32位的宏模块,就可以组成相位累加器。它在QuartusII软件中的最高编译频率只有262.12 MHz,显然不能满足设计要求。其时序仿真如图5所示。

利用FPGA实现的任意波形发生器的研究设计

  通过仿真,当直接采用32 bit累加器的时候系统时钟最大只能达到大约25 MHz,显然是达不到要求的。从设计上看,它实质上是一个带反馈的32位加法器,把输出数据作为另一路输入数据和从单片机传来的频率控制连续相加,产生有规律的32位相位地址码。一般位数小的累加器可以通过中的进位链得到快速高效的电路,但是进位链必须位于临近的LE(逻辑单元)或LAB(逻辑阵列块)中,长的进位链会减少供其他逻辑使用的布线资源,同时过长的进位链也会制约系统频率的提高,所以进位链不能太长。因此,在相位累加器的设计中,要解决的难题是设法提高工作速度。为了解决速度难题,需从两个方面进行改进。

  1.2.1 改进的流水线结构

  在时序电路设计中为了提高速度,流水线结构是一种常用的设计方法。对于累加器来讲,流水线结构就是把一个位数很长的加法拆分成N个位数较短的加法,在N个时钟周期内做完然后输出运算结果,N就是流水线的级数。采用流水结构以后由于加法器的字长变短了,对于来讲加法器字长变短对工作频率的提高是相当可观的。当然,流水结构的使用并不能无限制地提高电路的工作速度。因此对于不同的器件来说,采用多少级流水对性能的提升比较大这个要经过仿真实验才能得到一个比较肯定的值。

  本文运用流水线结构对相位累加器进行设计,当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。即

利用FPGA实现的任意波形发生器的研究设计

  采用上述结构,极大地提高了累加器的工作速度,其功能仿真图如图6所示,从图中可以看出,此4 bit超前进位加法器完全满足4位全加器的逻辑功能。



评论


相关推荐

技术专区

关闭