基于FPGA的直接数字频率合成器的设计和实现
在实际设计中,根据项目具体要求,还设计了一个系统控制电路。
综合以上考虑,整个DDS电路的电路结构如图2所示。
采用Verilog硬件描述语言实现整个电路,不仅利于设计文档的管理,而且方便设计的修改和扩充,还可以在不同FPGA器件之间实现移植。
由图2可以清楚地看出,整个系统只加入了一级流水线来提高速度。需要说明的是,在ROM和系统控制电路之间也可以加入流水线,但实际仿真表明效果不明显,反而消耗了更多的资源,因此综合考虑后只加入一级流水线。
为了进步提高速度,在设计相位累加器模块和加法器模块时并没有采用FPGA单元库中16~32位加法器,尽管它们可以很容易地实现高达32位的相位累加器,但当工作频率较高时,它们较大的延时不能满足速度要求,故不可取。因此,具体实现时我们分别用了4个和8位4位的累加器以流水线的方式实现16位和32位累加器和加法器。比较仿真结果表明采用流水线技术可以大大提高系统的工作速度。
由前面分析可知,相位/幅度变换电路是比较难实现的电路,不仅要解决速度的问题,还要考虑节省资源的问题。如果有效利用FPGA的有限资源,是实现相位/幅度变换电路的最关键的一点。
在实际运用中,我们将着眼点主要放在了节省资源上,相位/幅度转换电路中的主要问题在于ROM的大小。由于设计的DDS电路主要用于数字视频编码中,只需要输出余弦(正弦)波,故考虑了以下的优化方式:余弦波信号对于x=π直线成偶对称,基于此可以将ROM表减至原来的1/2,再利用左半周期内,波形对于点(π/2,0)成奇对称,进一步将ROM表减至最初的1/4,因此通过一个正弦码表的前1/4周期就可以变换得到的正弦和余弦的整个周期码表。这样就节省了将近3/4的资源,非常可观。
系统控制电路主要是根据是否需要相位调制(BPSK)及频率调制(BFSK),系统时钟是否需要分频得到所需的基准时钟,频率码的输入方式是串行、并行还是微机接口方式,如何控制输出等具体要求而设计的。这一电路可以灵活设计,凸现FPGA的优点所在。
javascript:window.open(this.src);" style="cursor:pointer;"/>
3 利用ACEX EP1K50实现的DDS电路和专用DDS芯片的比较
(1)系统速率:用ACEX EP1K50实现DDS电路,16位精度(分辨率)的DDS电路最高频率达到148MHz,32位精度(分辨率)的电路最高工作频率为107MHz,可以看出这个频率已经是比较高了;而采用专用DDS芯片,频率可在数十至数百兆赫兹之间,如AD9850为125MHz,AD9851为180MHz,比较新的AD9854已经达到300MHz。用FPGA实现的DDS电路能工作在如此之高的频率主要依赖于ACEX EP1K50器件先进的结构特点,以及前面提出的多种优化措施。
(2)可控性:虽然有的专用DDS芯片的功能也比较多,但控制方式却是固定的,因此不一定是我们所需要的。而利用ACEX EP1K50器件则可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良好的实用性。
(3)信号质量:专用DDS芯片由于采用特定的集成工艺,内部数字信号抖动很小,可以输出高质量的模拟信号;利用ACEX EP1K50器件也能输出较高质量的信号,虽然达不到专用DDS芯片的水平,但信号精度误差在允许范围之内。
(4)成本:专用DDS芯片价格较高,而将用FPGA器件设计的DDS电路嵌入到系统中并不会使成本增加多少。
利用Altera公司的ACEX EP1K50器件,通过各种优化措施,设计开发的DDS电路,达到了预期的目的,具有较高的性价化。