实现信号源常用的方法是频率合成法,其中直接数字频率合成法是继直接频率合成法和间接频率合成法之后,随着电子技术迅速发展的第三代频率合成技术。DDS是一种全数字技术,它从相位概念出发直接合成所需频率,它具有频率转换时间短,频率分辨率高,相位变化连续,低相位噪声和低漂移,易于集成、调整、实现正交输出等优点。近年来,DDS技术在频率合成、通信、雷达、电子对抗、仪器测试等领域均有广泛的应用。目前专用的DDS芯片产生的信号波形、功能和控制方式固定,常不能满足具体需要。现场可编程门阵列(FPGA)器件具有规模大、工作速度快及可编程的硬件特点,并且开发周期短,易于升级,因此非常适用于实现DDS。
l DDS的基本原理
DDS的结构由相位累加器,相位调制器,波形存储ROM和D/A转换器组成,是Tierney,Rader和Gold于1971年提出。一个正弦信号发成器结构图如图1所示。相位累加器是整个DDS的核心,完成相位累加运算,它输入的是相位增量B△θ。相位累加器每溢出一次,就代表输出ROM内的一个完整波形。相位调制器接收相位累加器的相位输出。加上一个相位偏移量,用于信号的相位调制。正弦ROM查找表完成相位到幅度的转换,它的输入是相位调制器的输出,也就是ROM的地址。
fo为输出频率,fo的值由fclk和B△θ共同决定:fo=fclk×B△θ/2N。根据Nyquist采样定律,最高的输出频率是时钟频率的一半,即fo=fclk/2。实际应用中,一般取fo≤40%fclk。DDS的频率分辨率△f用频率输入值步进一个最小间隔对应的频率输出变化量来衡量,即△f=fclk/2N(默认情况下,ROM存储整个周期信号波形)。可见,△f越小,DDS输出精度越高。
2 DDS精度改进方案
ROM查找表实际上是一个存储了正弦信号抽样点幅度编码的只读存储器,将输入的序列转换为正弦信号的幅度编码。ROM查找表地址位数M越靠近相位累加器的位数N,相位寻址时舍去的位数就越小,相位舍位误差也就越小,但ROM表的大小会随地址位数M的增加成指数递增关系。因此,为了使用较小的ROM而满足信号性能,必须采用优化方法压缩ROM。
2.1 正弦波特点
已知正弦波存在下面的关系:
可见,[π,2π]区间的波形可以通过[0,π]区间波形转化得到。进一步,由于[O,π/2]和[π/2,π]区间波形关于α=π/2对称,则[π/2,π],[π,3π/2],[3π/2,2π]三个区间波形都可以通过[0,π/2]区间的波形转化得到。
2.2 基于DSP Builder的ROM优化方案
从上面对正弦波特点的分析可得出,查找表ROM中只存储[O,π]或[0,π/2]区间的波形就可得完整周期的正弦信号。这样就有效地利用了ROM存储完间,提高了存储效率。对于ROM中存储[O,π]区间波形的情况,可以利用相位调制器输出的最高位作为符号位,将正弦波合成到[0,2π]区间。而对于ROM中存储[0,π/2]区间波形的情形,利用相位调制器输出的次高位判断象限,将正弦波合成到[O,π]区间;最高位作为符号位,将正弦波合成到[0,2π]区间。图2给出了ROM中存储[O,2π],[0,π],[O,π/2]区间波形时,用DSP Builder实现正弦信号发生器的系统模型。
其中,PWORD为相位字输入,其值设置为O;FWORD为频率字输入,其值设置为9000000;AWORD为幅度控制输入,其值设置为50;adder为相位累加器;adderl为相位调制器。LUTl,LUT2,LUT3分别为存储[O,2 π],[O,π],[0,π/2]区间正弦信号的具有相同存储空间的ROM,它们模块参数“MATLAB Array”分别设置为:
另外,需注意的是,子系统controller的作用是,判断象限,将LUT3中正弦波合成到[0,π]范围。
2.3 仿真分析
图3给出了图2系统模型中3个输出OUTl,OUT2,OUT3的波形。由图3可见,OUT2的频率是OUTl的1/2,而OUT3的频率是OUT2的1/2。这表明,OUT3的频率分辨率最高,0UT2次之,OUTl最低。由此可得出,有着相同地址输入的ROM,在存储空间大小相同情况下,存储正弦波区间越小,输出正弦信号的频率分辨率越高,即输出精度越高。所以,用相同的ROM,当存储1/4周期正弦信号时,合成的正弦信号有着较高的精度。
3 信号源的FPGA实现
Matlab/Simulink对设计好的DDS系统进行编译,通过调用DSP Builder的SignalCompiler工具可直接生成QuartusⅡ的工程文件,再调用QuartusⅡ完成综合、网表生成和适配,直至完成FPGA的配置下载过程。
本设计方案采用的FPGA芯片是APEX20K系列器件EP20K200FC484。所得结果中的数字输出可以输出到SRAM芯片中,然后上载到计算机进行数字信号分析,模拟输出则通过HP示波器测试。图4给出了用QuartusII的仿真结果。图中,clock为系统时钟,sclrp为高电平复位信号,PWORD,FWORD,AWORD的值分别设为十进制数0,9000000和50。仿真得到的3个输出OUTl,OUT2和OUT3与Matlab/Simulink中的仿真结果在相位、频率和幅度上基本一致。实验表明,利用FPGA所计设的DDS在满足性能的条件下,节约了芯片资源,提高了输出的精度。
4 结语
本文介绍了一种改进了的基于DSP Builder的正弦信号发生器设计方法,应用APEX20K系列FPGA芯片实现。继承了传统DDS设计中调频、调相迅速的优点,同时,采用了查找表压缩方案,使芯片在节约资源的基础上达到了较高的输出精度。