在高可靠应用领域,如果设计得当,将不会存在类似于MCU的复位不可靠和PC可能跑飞等问题。CPLD/FPGA的高可靠性还表现在,几乎可将整个系统下载于同一芯片中,实现所谓片上系统,从而大大缩小了体积,易于管理和屏蔽。所以,本文将在对DDS的基本原理进行深入理解的基础上,采用多级流水线控制技术对DDS的VHDL语言实现进行优化,同时考虑到系统设计中的异步接口的同步化设计问题,把该设计适配到Xilinx公司的最新90nm工艺的Spartan3E系列的FPGA中。
1 DDS基本原理及工作过程
一个基本的DDS由相位累加器、波形存储器ROM、D/A转换器和低通滤波器组成,如图1所示。
在图1中,fc为时钟频率,K为频率控制字(N位),m为ROM地址线位数,n为ROM数据线宽度(一般也为D/A转换器的位数),f0为输出频率。DDS的基本工作过程如下:每来一个时钟脉冲fc,加法器将频率控制字K与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。其中相位累加器由N位加法器与N位累加寄存器级联构成,累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此可见,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。用相位累加器输出的数据作为波形存储器ROM的相位取样地址,可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号,由低通滤波器滤除杂散波和谐波以后,输出一个频率为f0的正弦波。输出频率f0与时钟频率fc之间的关系满足下式:
由式(1)可见,输出频率f0由fc和K共同决定,保持时钟频率一定,改变一次K值,即可合成一个新频率的正弦波。DDS的最小输出频率(频率分辨率)△f可由方程△f=f0/2N确定。可见,频率分辨率在fc固定时,取决于相位累加器的位数N。只要N足够大,理论上就可以获得足够高的频率分辨精度。另外,由采样定理,合成信号的频率不能超过时钟频率的一半,即f0≤f0/2,因此频率控制值的最大值Kmax应满足Kmax≤2N-1。 |