这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 基于FPGA的直接数字频率合成器的设计和实现

共4条 1/1 1 跳转至

基于FPGA的直接数字频率合成器的设计和实现

菜鸟
2008-08-02 10:46:56     打赏


概述
  直接数字频率合成技术(Direct Digital Frequency Synthesis,即DDFS,一般简称DDS),是从相

位概念出发直接合成所需要波形的一种新的频率合成技术。目前各大芯片制造厂商都相继推出采用先进

CMOS工艺生产的高性能、多功能的DDS芯片,为电路设计者提供了多种选择。然而在某些场合,专用DDS

芯片在控制方式、置频速率等方面与系统的要求差距很大,这时如果用高性能的FPGA器件来设计符合自

己需要的DDS电路,就是一个很好的解决方法。
 
  ACEX 1K器件是Altera公司着眼于通信、音频处理及类似场合的应用而推出的芯片系列,总的来看将

会逐步取代FLEX 10K 系列,成为首选的中规模器件产品。它具有如下优点:* 高性能。ACEX 1K器件采

用查找表(LUT)和EAB(嵌入式阵列块)相结合的结构,特别适用于实现复杂逻辑功能和存储器功能,

例如通信中应用的DSP、多通道数据处理、数据传递和微控制等。
 
  * 高密度。典型门数为1万到10万门,有多达49,152位的RAM(每个EAB有4,096位RAM)。
 
  * 系统性能。器件内核采用2.5V电压,功耗低,能够提供高达250MHz的双向I/O功能,完全支持

33MHz和66MHz的PCI局部总线标准。
 
  * 灵活的内部互联。具有快速连续式、延时可预测的快速通道互连;能提供实现快速加法器、计数

器、乘法器和比较器等算术功能的专用进位链和实现高速多扇入逻辑功能的专用级联链。
 
  本次设计采用的是ACEX EP1K50,典型门数50000门,逻辑单元2880个,嵌入系统块10个,完全符合

单片实现DDS电路的要求。设计工具为Altera的下一代设计工具Quartus软件。

DDS的工作原理和电路结构
  DDS以数控振荡器的方式,产生频率、相位可控制的正弦波。电路一般包括基准时钟、频率累加器、

相位累加器、幅度/相位转换电路、D/A转换器和低通滤波器(LPF)。其中:* 频率累加器对输入信号进

行累加运算,产生频率控制数据或相位步进量。
 
  * 相位累加器由N位全加器和N位累加寄存器级联而成,对代表频率的2进制码进行累加运算,是典型

的反馈电路,产生累加结果Y. * 幅度/相位转换电路实质是一个波形存储器,以供查表使用。读出的数

据送入D/A转换器和低通滤波器。
 
  具体工作过程如下:每来一个时钟脉冲,N位加法器将频率控制数据X与累加寄存器输出的累加相位

数据相加,把相加后的结果 送至累加寄存器的输入端。累加寄存器一方面将在上一时钟周期作用后所产

生的新的相位数据反馈到加法器的输入端,以使加法器在下一时钟的作用下继续与频率控制数据X相加;

另一方面将这个值作为取样地址值送入幅度/相位转换电路(即图1中的波形存储器),幅度/相位转换电

路根据这个地址值输出相应的波形数据。最后经数/模转换和低通滤波器将波形数据转换成所需要的模拟

波形。
 
  相位累加器在基准时钟的作用下,进行线性相位累加,当相位累加器累加满量时就会产生一次溢出

,这样就完成了一个周期,这个周期也就是DDS合成信号的一个频率周期。
 
DDS输出信号的频率由式(1)给定:
=(X/Y)× (1)
例如,我们假定基准时钟为70 MHz,累加器为16位,则:

Y=216= 65,536
=70MHz
再假定X=4096,则:
=4096/65,536×70
=4.375MHz
可见,理论上通过设定DDS相位累加器位数频率控制字X和基准时钟的值,就可以产生任一频率的输出。

而DDS的频率分辨率定义为:
/ Y (2)
  由于基准时钟一般固定,因此相位累加器的位数就决定了频率分辨率。比如上面的例子中,相位累

加器为16位,那么频率分辨率就可以认为是16位。位数越多,分辨率越高。</P><P>利用 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的优点所在。</P><P>利用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电路,达

到了预期的目的,具有较高的性价比

 




关键词: 基于     直接     数字     频率     合成器     设计     实现     芯片         

菜鸟
2008-08-26 12:22:09     打赏
2楼
讲的不错,很透彻,很深入,值得学习,学习了~~

菜鸟
2008-08-28 15:26:37     打赏
3楼

我是搞软件测试的,这篇文章真的很好,我在中国IT实验室有很多朋友,他们都是这方面的高手,有空我们可以切磋切磋~~~~


高工
2008-08-28 20:40:41     打赏
4楼
有点像“移相时钟计数法测频率”,就是同一时钟信号经过不同的相位偏移后由不同的计数器计数,然后再合成,俗称“内插法”。使用FPGA也可以做

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]