利用 FPGA(ACEX EP1K50) 设计DDS在用FPGA设计DDS电路的时候,相位累加器是决定DDS性能的一个关键部分。小的累加器可以 利用ACEX器件的进位链得到快速、高效的电路结构。然而由于进位链必须位于临近的LAB(逻辑阵列块) 和LE(逻辑单元)内,因此长的进位链势必会减少其它逻辑使用的布线资源,同时过长的进位链也会制 约整个系统速度的提高。 另一种提高速度的办法就是采用流水线技术,即把在一个时钟内要完成的逻辑操作分成几步较小的 操作,并插入几个时钟周期来提高系统的数据吞吐率。但是流水线技术比较适合开环结构(open-loop) 的电路,要用在累加器这样的闭环反馈(close-loop feedback)的电路中必须谨慎考虑,以保证设计的 准确无误。 综合考虑后,这一部分决定采用进位链和流水线技术相结合的办法,这样既能保证较高的资源利用 率,又能大幅提高系统的性能和速度。 相位/幅度转换电路是DDS电路中另一个关键,设计中面临的主要问题就是资源的开销。电路通常采 用ROM结构,相位累加器的输出是一种数字式锯齿波,通过取它的高若干位作为ROM的地址输入,而后通 过查表(LUT)和运算后,ROM就输出所需波形的量化数据。 ROM一般在FPGA(针对Altera公司的器件)中是由EAB实现,并且ROM表的尺寸随着地址位数或数据位 数的增加成指数递增关系,因此在满足信号性能的前提条件下,如何减少资源的开销就是一个重要的问 题。在实际设计时我们充分利用了信号周期内的对称性和算术关系来减少EAB的开销。 我们利用图2的结构设计整个DDS电路:采用Verilog硬件描述语言来实现整个电路,这不仅利于设计 文档的管理,而且方便设计的修改和扩充,以及在不同FPGA器件之间的移植。 为了进一步提高速度,在DDS电路的相位累加器模块和加法器模块的设计时并没有采用FPGA单元库中 的16~32位加法器,尽管它们可以很容易地实现高达32位的相位累加器,但当工作频率较高时,这种方 法不可取,因为它们较大的延时不能满足速度要求。 因此,具体实现时我们分别用了4个和8个4位的累加器,以流水线的方式实现16位和32位累加器和加 法器。比较仿真结果表明,采用流水线技术可以大大提高系统的工作速度。 从前面的分析可知,相位/幅度变换电路也是比较难实现的部分,它不仅要解决速度的问题,还要考 虑节省资源的问题。如何有效利用FPGA有限的资源,是实现相位/幅度变换电路的最关键一点。 在实际运用中,我们将着眼点主要放在了节省资源上来,相位/幅度转换电路中的主要问题在于ROM 的大小上。由于本次设计的DDS主要用于数字视频编码中,因此只需要输出余弦(正弦)波,我们考虑了 以下的优化方式:余弦波信号对于直线成偶对称,基于此可以将ROM表减至原来的1/2,再利用左半周期 内,波形对于点成奇对称,进一步将ROM表减至最初的1/4,因此通过一个正弦码表的前1/4周期就可以变 换得到正弦和余弦的整个周期码表。这样就节省了将近3/4的资源,非常可观。 系统控制电路主要是根据是否需要相位调制(BPSK)及频率调制(BFSK),系统时钟是否需要分频 得到所需的基准时钟,频率码的输入方式是串行、并行还是微机接口方式,如何控制输出等具体要求而 设计的。这一部分可以灵活设计,凸现FPGA的优点所在。
利用ACEX EP1K50 实现的DDS电路和专 用DDS 芯片的比较 系统速度:用ACEX EP1K50实现DDS电路,16位精度(分辨率)的DDS电路最高频率达到148MHz,32位 精度(分辨率)的电路最高工作频率107MHz;而采用专用DDS芯片的话,频率在数十至数百兆赫兹之间, 如AD9850 为125MHz,AD9851为180MHz,比较新的AD9854已经达到300MHz.用FPGA实现的DDS电路能工作在 如此之高的频率,主要依赖于ACEX EP1K50器件先进的结构特点,以及在前文提出的多种优化措施。 可控性:虽然有的专用DDS芯片的功能也比较多,但控制方式却是固定的,因此不一定是我们所需要 的。而利用ACEX EP1K50器件则可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良 好的实用性。 信号质量:专用DDS芯片由于采用特定的集成工艺,内部数字信号抖动很小,可以输出高质量的模拟信 号;利用ACEX EP1K50器件也能输出较高质量的信号,虽然达不到专用DDS芯片的水平,但信号精度误差 在允许范围之内。 成本:专用DDS芯片价格较高,而用FPGA器件设计的DDS电路嵌入到系统中并不会使成本增加多少。 结语 本文利用Altera公司的FPGA(ACEX EP1K50)器件,通过各种优化措施,设计开发了DDS电路,达 到了预期的目的,具有较高的性价比