APP下载

基于FPGA的DDS信号发生器的设计与实现*

2016-10-13崔永俊王晋伟贾磊杨兵

电子器件 2016年2期
关键词:累加器位数存储器

崔永俊,王晋伟,贾磊,杨兵

(1.中北大学仪器科学与动态测试教育部重点实验室,太原030051;2.电子测试技术重点实验室,太原030051)

基于FPGA的DDS信号发生器的设计与实现*

崔永俊1,2*,王晋伟1,2,贾磊1,2,杨兵1,2

(1.中北大学仪器科学与动态测试教育部重点实验室,太原030051;2.电子测试技术重点实验室,太原030051)

针对专用DDS芯片功能单一的缺点,提出了基于FPGA的DDS信号发生器的设计方案。利用Xilinx公司的ISE完成了系统核心部分数控振荡器的设计,其中波形存储器通过调用IP核实现,方便且集成度高。通过功能模块仿真与最终完整电路测试,表明基于FPGA的DDS信号发生器稳定度高,分辨率高以及转换速度快,而且能够输出任意波形的信号。由于FP⁃GA实现软核处理器,因此可以方便地对DDS进行修改与优化,具有无与伦比的灵活性。

直接数字频率合成;信号发生器;现场可编程门阵列;软核

随着通信技术、卫星定位系统以及航空航天领域技术的不断发展,对频率源的稳定度、精确度和频率范围要求越来越高,而振荡器由于产生的频率信号过于单一或者只能在很小范围内可微调而无法满足要求。为了解决这些问题,就需要用到频率合成技术。直接数字频率合成DDS(Direct Digital Synthesis)是一种把一系列数字信号通过D/A转换器转换为模拟信号的合成技术[1]。DDS在相对带宽、频率转换时间、相位连续性正交输出、分辨率以及集成化等一系列性能指标方面远远超过了传统频率合成技术所能达到的水平,为各种电子系统提供了优于模拟信号源发生器的高质量的频率源[2]。利用DDS生成的任意波形信号发生器,可产生不同频率、幅度的正弦波、三角波、矩形波、锯齿波等信号,精度高、灵活可调且稳定性好。

1 DDS的结构原理

DDS的理论基础是“奈奎斯特采样定理”。当抽样频率大于等于模拟信号最高频率2倍时,可以由抽样得到离散序列无失真的恢复出原始模拟信号。只不过在DDS技术中,这个过程被颠倒了过来。DDS不是对模拟信号进行抽样,而是假定一个抽样过程已经发生且抽样值已经量化完成,如何通过某种方法由已经量化数值重建原始模拟信号的问题[3]。

基本的DDS结构主要由相位累加器、波形存储器、D/A转换器和低通滤波器组成[4]。其中相位累加器、波形存储器全称数控振荡器(NCO),是DDS结构中的数字部分,具有数控频率合成的功能,是本文设计的重点。DDS基本结构原理如图1所示。

图1 DDS原理图

图中:fc为输入频率,Tc=1/fc。

fo输出频率,To=1/fo。

K为频率控制字,N为相位累加器的字长,m为ROM地址线位数,M为ROM数据线位数,即D/A转换器的位数[5]。

DDS的功能模型可归结为:在每一个时钟周期Tc内,频率控制字K与N bit相位累加器累加一次,并同时对2N取模运算,得到的和作为相位值,以二进制代码的形式作为波形存储器的地址(即对应的ROM查找表的相位码)寻址波形ROM。波形存储器里面存储着一个完整周期的相位码序列所对应的幅度码序列。在时钟信号的作用下,相位累加器输出相位码序列寻址ROM,ROM输出相应的幅度码序列,然后通过数模转换器和低通滤波器将幅度码序列处理成我们所需要的平滑的模拟波形。DDS输出信号的频率与基准时钟频率的关系由下式给定:

在理想情况下,相位累加器的N位全部用来寻址时,当K=1时,得DDS的最小分辨率:

如果改变频率控制字,就可以改变合成的频率。

2 信号发生器的NCO设计

DDS信号发生器的NCO部分主要由相位累加器与波形存储器组成,是FPGA的数字控制部分,是本设计的核心部分。频率控制与波形切换均由FPGA控制实现。

2.1FPGA控制NCO

2.1.1相位累加器

相位累加器是DDS系统中重要的组成部分,用于实现相位累加并将累加结果存储起来。相位累加器由N位数字全加器和N位数字寄存器组成[6],当时钟信号的上升沿到来时频率控制字K与寄存器反馈回来的数据相加,相加的结果再存储到寄存器中,寄存器不断地将全加器送来的数据反馈回全加器,然后在下一个时钟信号的上升沿到来时与频率控制字相加,当相位累加器加满时会产生溢出,完成一个周期的动作,这个周期也就是DDS信号的一个周期;寄存器的输出还作为波形存储器的地址。相位累加器的结构框图如图2所示。

图2 相位累加器结构

2.1.2波形存储器

波形存储器,又叫ROM查找表,是DDS系统的核心,波形存储器主要完成相位码向幅度码的转换。这里,用ROM构造一个查找表。如果把相位码作为ROM的地址,只要在该地址中存储相应的波形幅度码作为数据,就可以通过相位码寻址ROM,输出函数波形[7]。为了提高DDS系统的频率分辨率,一般将相位累加器的位数取得比较大,又为了节省ROM资源,可以采用相位截断的方法取相位累加器输出的高m位作为波形存储器的地址位。

Xilinx公司的ISE开发软件中提供了现成的ROM IP核,直接调用该IP核即可生成原理图功能模块。但在调用IP核形成波形存储器时需要加载ROM初始化数据文件(.coe文件),以输出所需波形的信号。.coe文件可以借助MATLAB软件来完成。本设计中N取32位,m取13位,M取14位,以正弦波为例生成.coe文件所用的MATLAB程序如下:

clc

clear all

wide=14;%初始化ROM的数据宽度(M值)

depth=8192;%初始化ROM的地址深度

x=linspace(0,2*pi,depth);%在区间[0,2π]之间等间隔地取1 024个点

y=(2(^wide-1)-1)*(1+sin(x));

fid=fopen(‘f:/ise/sin.coe','wt');%输出文件路径以及文件名

fprint(ffid,'%14.0f ',y);

fclose(fid);

在生成的sin.coe文件中再经稍加完善便可生成完整的可供Xilinx IP核调用的文件。

2.2VHDL实现

在NCO模块中还需要加入波形选择器,使输出波形能够随时切换。完整的NCO模块如图3所示。图中clk为时钟信号,K(31:0)为频率控制字,能够随时控制频率的改变,state模块为由状态机构成的波形选择器,用来切换波形输出。

图3 NCO功能模块

3 DDS信号发生器的外围硬件设计

3.1D/A转换器设计

由查找表中读出的数字幅度值是一串数字序列,最终要经过D/A转换器(DAC)才能转换成相应的模拟波形。为了保证数据处理结果的准确性,DAC转换器必须有足够的转换精度,同时为了能够在较高频率下工作,它必须有足够快的转换速度。此外还要考虑DAC的非线性和噪声特性,综合了各方面的因素之后,本设计采用TI公司的DAC904。DAC904最高能够处理14位数据,转换速率能够达到165 Msample/s。另外由于DAC904采用差分信号输出,所以还必须将其转换为单端信号才能输出给滤波器。DAC904的外围电路设计如图4所示,信号转换芯片OPA680的输出信号Vdiv为D/A转换器的最终输出信号。一般情况下,DAC作为DDS的外部模块,提高了DAC设计的方便性。

图4 DAC904外围电路

3.2低通滤波器与电压放大器设计

我们知道从D/A转换器输出波形是阶梯型波形,含有大量的高频谐波,必须经过一个滤波器进行滤波之后,才能输出平滑的波形,设计中采用七阶椭圆低通滤波器。由于DAC芯片输出的电压幅度比较小,再经过滤波器衰减后,其幅度一般只有200 mV~300 mV,所以必须经过放大器放大才能输出合适的电压幅度。放大芯片我们所选LM7171,其采用双电源±15 V供电,电压放大位数Au=1+RB/RA≈10。具体电路如图5所示。

图5 滤波与放大电路

4 输出信号测试分析

若将频率控制字K取不同的值,则相位增量就会不同,输出频率也将不同,当相位累加器的字长N 取32位时,由于ROM地址线位数m取高13位,所以最小输出频率只有当K取219时才有意义,当K<219时,由于ROM无法寻址,低于219的位数都将被舍去,此时的最小输出频率同K取219时一致。当fc取50 MHz时,最小输出频率fmin=fc×219/232=4.88 kHz,最大输出频率fmax=40%×50=20 MHz。

由相位截断误差引入的DDS无杂散动态范围SFDR为[9]:

其中,

式中,Sa(x)定义为Sa(x)=sin(x)/x,in(tx)表示对变量x作最接近x的取整运算,min(x,y)表示取变量x和y的最小值,<x>y=x-int(x/y)×y,B=N-M。可以由式(3)得出DDS的无杂散动态范围为(SFDR)dB≥6.02(N-B)[8]。N和B取值分别为32、22,由此可知相位截断引起的无杂散动态范围大于60.2 dB。

用ISE调用Modelsim仿真波形如图6所示。由图可见,波形之间可实现快速切换,几乎不占任何时间。将波形发生器输出给示波器,观测到的结果如图7所示。正弦信号与三角波信号非常完美,没有任何失真,而矩形波信号与锯齿波信号由于电路设计中阻抗不匹配等问题出现了过冲与振铃现象。

图6 Modelsim仿真波形

图7 示波器观测图

5 结束语

基于FPGA的DDS信号发生器能够输出任意波形的信号。使用FPGA来实现的DDS系统,具有转换时间短、精度高、相位变化连续等诸多优点,而且可以充分发挥FPGA的优点,只要改变频率控制字K的值,就可以改变输出频率的大小,只要改变ROM中的数据就可改变输出的波形,具有相当大的灵活性。

[1]褚振勇,翁木云.FPGA设计及应用[M].西安:西安电子科技大学出版社,2002:422-427.

[2]截逸民.频率合成与锁相技术[M].中国科学技术大学出版社,1994:150-168.

[3]陈学英,李颖.FGPA应用实验教程.北京:国防工业出版社,2013:262-275.

[4]余勇,郑小林.基于FPGA的DDS正弦信号发生器的设计和实现[J].电子器件,2005,28(3):596-599.

[5]潘志浪.基于FPGA的DDS信号源的设计[D].武汉:武汉理工大学文,2007:6-7.

[6]王丹,李平,文玉梅,等.采用DDS频率合成的虚拟信号发生器研究[J].传感技术学报,2007,20(3):586-591.

[7]阮围.基于FPGA的DDS的设计[D].成都:成都理工大学,2011:31-34.

[8]胡仕,汪学刚,姒强.直接数字频率合成技术杂散信号频谱性能分析[J].电路与系统学报,2009,14(5):87-91,103.

[9]曹郑蛟,滕召胜,李华忠,等.基于FPGA的DDS信号发生器设计[J].2011,19(12):3175-3177,3186.

崔永俊(1973-),男,汉族,山西省忻州人,博士,副教授,主要研究方向为纳米测试技术与仪器,wjwnuc@163.com。

Design and Research of the DDS Signal Generator Based on FPGA*

CUI Yongjun1,2*,WANG Jinwei1,2,JIA Lei1,2,YANG Bing1,2
(1.Key Laboratory of Instrumentation Science&Dynamic Measurement,Ministry of Education,North University of China,Taiyuan 030051,China;2.Education Science and Technology on Electronic Test&Measurement Laboratory,Taiyuan 030051,China)

According to signal function of dedicated DDS(Direct Digital Frequency Synthesizer)chip,a design scheme of DDS signal generator based on FPGA(Field Programmable Gate Array)is introduced.Using Xilinx ISE to design core part of the system,the digitally controlled oscillator,in which the waveform memory is implemented by calling the IP core.And this method is very convenient and IP core is high integration.It shows that DDS signal generator based on FPGA has a stability,high resolution and fast conversion speed,and can generate all kinds of signal according to functional modules simulation and complete circuit test.Since FPGA implements the soft-core processor,DDS can easily be modified and optimized with unparalleled flexibility.

DDS;signal generator;FPGA;soft core

TP273

A

1005-9490(2016)02-0339-05

EEACC:123010.3969/j.issn.1005-9490.2016.02.019

项目来源:国家自然科学基金项目(61335008)

2015-06-03修改日期:2015-07-13

猜你喜欢

累加器位数存储器
密码累加器研究进展及应用
静态随机存储器在轨自检算法
五次完全幂的少位数三进制展开
Fpga的信号发生器设计原理
基于霍夫变换的工位点识别算法设计与实现
用于时间延迟积分型图像传感器的流水采样列级运放共享累加器*
遥感卫星CCD相机量化位数的选择
存储器——安格尔(墨西哥)▲
“判断整数的位数”的算法分析
基于分位数回归的剪切波速变化规律