您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

数字频率合成器的FPGA实现

时间:2007-1-20栏目:电子通信论文

数模转换

通过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时,一般就需要进行抽样。

图3

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

(1)基于EEPROM的寻址方式

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

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

EEPROM里面可以存放4种波形,每一种波形的数据是64kB。波形的选择可通过给A17和A18赋初值来实现。

(2)对RAM的寻址方式

RAM共有1MB的容量,因此,可寻址20位的地址。对于RAM里面的波形,只需要控制样点频率和发送波形的结束时刻即可。

结束时刻的实现主要是将结束时刻值存放到寄存器中,然后把计数器的输出和寄存器的值进行比较,若两者相等就给计数器发送复位信号以停止计数,以结束发送波形。

这里的计数器是加1计数,因而可通过改变分频器的值来改变计数器的时钟,从而引起读取样点频率的改变。

图4

4 电路仿真

通过上述结构设计可得到顶层电路结构。整个电路设计可采用Verilog语言和原理图输入相结合的方法来设计。图3和图4分别给出了对RAM和EEPROM进行寻

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页