数字频率合成器的FPGA实现

技术分类: 可编程器件  | 2006-04-28
来源:国外电子元器件 | 潘 毅 李 栋 龚建荣

       这样,相位累加器 在参考时钟的作用下将进行线性相位累加,相位累加器累加满量时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDFS合成信号的一个频率周期,累加器的溢出频率就是DDFS输出的信号频率。

       2.2 相位-幅值转换

       用相位累加器输出的数据作为取样地址来对正弦波波形存储器进行相位-幅值转换,即可在给定的时间上确定输出的波形幅值。

       2.3 数模转换

       通过DAC可将数字量形式的波形幅值转换成所要求的合成频率模拟量形式信号,低通滤波器用于衰减和滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。

       对于计数容量为2N的相位累加器和具有M个相位取样的正弦波波形存储器,若频率控制字为K,则DDS系统输出信号的频率为

:fo=fc×K/2N,而频率分辨率则为:Δf=fomin=fc/2N。3 基于FPGA的DDFS结构设计

       图2是利用DDFS原理设计的一个信号源发生器的结构框图。图中,FPGA用来控制输出波形的频率、相位和波形的选择。波形数据的存放有两种形式,一种是将固定波形数据存放在EEPROM里,主要有正弦波,三角波,锯齿波包括半正弦波,半三角波,半锯齿波数据。而对于特殊的波形,则通过上位机下载到RAM里,然后从RAM里读取数据。

       该系统在工作时,首先由上位机把控制命令和数据参数通过USB接口用AT96总线传给FPGA。如果是固定波形,就从EEPROM中读取数据,否则就从RAM中读取数据。数据传送给FPGA后即可等待触发信号,触发信号由时基卡或软件给出。触发信号到来之后,就开始读取数据并输出波形。同时由FPGA给上位机一个状态位,该状态位可用于表示发送波形是正在发送,还是已经发送结束了。

       信号源的输出频率范围分为如下几档:0.001Hz~1Hz 1Hz~10Hz 10Hz~100Hz;100Hz~200Hz,步进为1/1000。之所以分档控制,是为了保证输出波形频率具有更高的精度,在输出波形频率较低时可对数据不抽点,频率较高时应进行抽点。要达到较高的频率精度,必须利用数字频率合成器(DDFS)来实现对输出波形频率的控制并按频率要求对相位增量进行累加,然后以累加相位值作为地址码来读取存放在存储器中的波形数据。通过改变相位增量寄存器的增量值(即步长),使相位累加器能够输出依据相位增量寄存器所给出的步长来改变波形存储器的地址,从而改变波形每周期的点数,从而达到改变输出波形频率的目的。该电路的设计关键在于用硬件构造一个多位累加器来实现相位的累加。

       根据DDFS的原理,输出信号频率fo与累加器时钟fclk、累加器位数M、相位增量N的关系如下:

       fo=(fclk×N)/2M

       根据以上原理,结合实际情况可得到的各项参数(这里采用32.768MHz=1000×215的晶振频率)。为了保证所需的精度以及输出波形频率的步进。这里选M=27。由于D/A的最大转换速度为1MHz,波形每个周期的样点数是128k,因此当输出波形的频率大于8Hz时,一般就需要进行抽样。

寻址仿真结果

点击看原图


       对于RAM和EEPROM的寻址可通过以下两种方式来实现:

       (1)基于EEPROM的寻址方式

       这种方式首先用累加器实现地址的寻址,然后通过改变累加器的第24位和第25位(A15和A16)的所赋初值来改变发送波形的初始相位。

       由于发送波形的结束时刻可通过一个减法计数器来实现,而且波形周期寄存器里寄存的是T/4的个数。因此,可根据所需发送的波形周期的个数来给计数器赋初值,并在减到0时使累加器复位,从而停止寻址。此时时钟应接A14。

1】【2】【3
加载中

对文章的评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销