摘 要:针对DDS频率转换时间短,分辨率高等优点,提出了基于FPGA芯片设计DDS系统的方案。该方案利用Altera公司的Quartus Ⅱ开发软件,完成DDS核心部分即相位累加器和ROM查找表的设计,可得到相位连续、频率可变的信号,并通过单片机配置FPGA的E2PROM完成对DDS硬件的下载,最后完成每个模块与系统的时序仿真。经过电路设计和模块仿真,验证了设计的正确性。由于FPGA的可编程性,使得修改和优化DDS的功能非常快捷。
关键词:DDS; Quartus Ⅱ开发软件; FPGA; 单片机配置
中图分类号:TN702 文献标识码:A
文章编号:1004-373X(2010)13-0090-03
Design and Implementation of DDS Based on FPGA
SHUAI Qian, WU Guo-hui, DAI Ji-yang
(School of Information Engineering, Nanchang Hangkong University, Nanchang 330063, China)
Abstract: A design scheme of DDS system based on FPGA is introduced for the merits of fast frequency conversion time and high resolution of DDS.The design of the phase accumulator and ROM lookup table which are the cores of DDS is achieved with the Quartus Ⅱ development software produced by Altera Company. The phase continuous and frequency variable signal can be obtained with design scheme. The download of DDS hardware is implemented by E2PROM based on MCU allocation FPGA, the time sequence simulation of each module and system is completed. After designing and testing circuit,it illustrates the validity of DDS. As the advantage of the programmable of FPGA,it is convenient to modify,add and optimize the function
of DDS.
Keywords: DDS; Quartus Ⅱ software; FPGA; MCU configuration
0 引 言
随着现代电子技术的不断发展,在通信系统中往往需要在一定频率范围内提供一系列稳定和准确的频率信号,一般的振荡器己不能满足要求,这就需要频率合成技术[1]。直接数字频率合成(Direct Digital Frequency Synthesis,DDS)是把一系列数据量形式的信号通过D/A转换器转换成模拟量形式的信号合成技术。DDS具有相对带宽宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号等优点,已成为现代频率合成技术中的姣姣者。目前在高频领域中,专用DDS芯片在控制方式、频率控制等方面与系统的要求差距很大,利用FPGA来设计符合自己需要的DDS系统就是一个很好的解决方法。
现场可编程门阵列(FPGA)器件具有工作速度快、集成度高、可靠性高和现场可编程等优点,并且FPGA支持系统现场修改和调试,由此设计的DDS电路简单,性能稳定,也基本能满足绝大多数通信系统的使用要求[2-3]。
1 DDS的结构原理
DDS的基本原理是利用有限的离散数据,通过查表法得到信号的幅值,通过数模转换器D/A后生成连续波。DDS的原理框图如图1所示。
图1 DDS的原理框图
其中:频率控制字为fword;相位累加器的位数为N。相位累加器以步长fword做累加,产生所需的频率控制数据;把得到的频率控制数据作为地址对ROM存储器进行寻址。数据存储器(ROM)实质是一个相位/幅度转换电路,ROM中存储二进制码表示所需合成信号的相位/幅度值,相位寄存器每寻址一次ROM,就输出一个相对应的信号相位/幅度值。
理想情况下,累加器的N位全部用来寻址时,DDS的合成频率为:
fo=fword×fclk2N
式中:fword为频率控制字;N为相位累加器位数;fclk为输入时钟。当fword=1时,得DDS的最小分辨率。如果改变频率控制字,就可以改变合成的频率的频偏[4-5]。
2 DDS调频系统在FPGA中的实现
2.1 累加控制模块的设计
累加控制模块通过调用QuartusⅡ中模块化库LPM进行设计[6]。即由加法器lpm_add_sub和乘法器lpm_mult及累加器altaccumulate模块构成。若要求DDS系统精度高,相位累加器的位数N须较大。现在大多数专用的DDS芯片的位数都在24~32位之间,这里取N=32。累加控制模块如图2所示。
图2 累加控制模块部分设计图
ADC转换芯片处理后的8位数字信号,为了使DDS合成的频率较大[7],末尾补4个0作为参数化模块lpm_add_sub的12位输入datai。由于 ADC信号输出的是8位二进制偏移码,与计算机处理的二进制补码形式不同,需将二进制偏移码转换成二进制补码,在这里与另一路输入信号常数2 048做减法,就能达到求补的目的,并输出12位有符号数。
12位的输出接入lpm_mult模块,lpm_mult的另一路输入为12位任意数输入。乘法器的输出直接影响累加器累加相位的速度。当乘以一个比较大的数,则频率变化加快。
同理,为了使合成频率较大,乘法器的24位输出在末尾补0成为32位数datab送到累加模块altaccumulate中。为了节省ROM容量,最后取altaccumulate输出的高10位作为ROM查找表的地址信号。累加控制模块的时序仿真如图3所示。
2.2 ROM查找表的设计
针对不同的可编程器件,ROM查找表的设计采用的方法也不相同。主要是基于lpm_rom和VHDL选择语句这两种方法。使用lpm_rom的波形存储表只需要产生数据文件*.mif[8],然后直接在定制lpm_rom时,添加数据文件即可。不过这种方法在FPGA支持内部嵌入式阵列块(EAB)时才可以使用;使用VHDL选择语句比较直观,但当输入数据量大的时候,这种方法是比较繁琐的。此次设计采用第一种方法。
图3 累加控制模块时序仿真
mif文件是在编译和仿真过程中作为存储器(ROM或RAM)初始化输入的文件,即memory initialization file。创建mif文件的方式有很多种,在这次设计中,在Matlab中采用C语言来生成mif文件。mif文件编写格式如下:
depth=1024; %存储单元数;
widths=12;%数据宽度为12位;
N=0:1: 1023;
s=sin(π*N/512);%计算0~π/2的sin值;
fidc=fopen(′dds.mif′,′wt′);%以″wt″的形式打开,\\n为换行
% 写入 dds.mif %
fprintf(fidc,′depth=%d;\\n′,depth);
fprintf(fidc,′width=%d;\\n′,widths);
fprintf(fidc,′address_radix=dec;\\n′);
fprintf(fidc,′data_radix = dec;\\n′);
fprintf(fidc,′Content Begin\\n′);
for(x=1:depth)
fprintf(fidc,′%d:%d;\\n′,x-1,round(2047*sin(π*(x-1)/1024)+2048));
end%采样波形数据存储入mif文件
fprintf(fidc,′end;′); %按mif文件内容格式输出
fclose(fidc); %关闭文件
通常相位累加器的位数N很大,实际设计中受到体积和成本的限制。为了节省ROM的容量采用相位截断的方法,一般只取累加器输出的高几位作为ROM的寻址地址。设计中取累加结果的高10(M=10)位来进行查表,也就是说正余弦ROM有210=1 024个寻址地址,数据宽度为12。如图4所示,设计了2个lpm_rom模块,分别是sin波形存储器和cos波形存储器。
图4 ROM查找表模块设计
3 单片机控制电路
此次选择的FPGA芯片为Altera公司的ACEX1K系列的EP1K30TT144-2。它可以采用专用的配置器件来配置,也可以采用单片机来配置。前者价格昂贵,而且专用配置器件的ROM为一次性编程,不易实现FPGA的系统功能转换。采用单片机C8051F330D对FPGA进行被动串行(PS方式)配置,使用可多次修改的AT24C512(E2PROM)作为配置文件存储器,真正做到“现场可编程”,对提高生产率、降低生产成本均有好处。
系统的配置电路如图5所示。其电路的工作过程为:经Quartus Ⅱ编译生成的配置文件(.rbf),利用PC机端的控制程序,通过PC机的串行通信口,经U1存储在U2中,U1再根据系统的要求通过P0.6,P1.0,P1.1,P1.6和P1.7等5个I/O口将其存储在U2中的配置数据下载到电路中的FPGA器件U3中。PC机的控制程序在此略[9]。
图5 系统的配置电路图
4 设计结果
累加控制器、ROM查找表组成一个整体,实现了一个基本的DDS系统[10]。DDS系统的最后仿真结果如图6所示。
图6 DDS系统仿真图
图6中的pllclk,acum,dai,daq分别代表时钟输入、累加输出及正弦波和余弦波输出。把0~2π的相位分成3FF段,取出相应的幅度值存储于ROM中。
ROM中存储数据如下,相位数据(0~3FF),幅度数据
(0~FFF)。从仿真图可以看出dai[11..0]输出从EFF~FFF~0~EFF变化,daq[11..0]输出从FFF~0~FFF变化。最后通过单片机配置FPGA运行,把得出的信号通过D/A转换和滤波能够得到所需的正弦波和余弦波信号。
5 结 语
给出了基于FPGA的DDS设计的实现方案。通过仿真分析可以看出,DDS输出信号具有如下特点:
(1) 频率稳定性好,转换时间短,分辨率高,相位变化连续。
(2) 设计者只需要通过改变测试输入数据,就能够快速准确地实现不同波形并且验证正确性,使得测试工作更加全面高效,从而提高了调试效率和成功率。
(3) 整个信号实现过程较为简单,实用性较强。
限于实验条件,此次设计在降低相位截断误差等方面仍有改进的空间,还可以进一步优化,限于篇幅,在此不多做介绍。
参考文献
[1]迟忠君,徐云,常飞.频率合成技术发展概述[J].现代科学仪器,2006(3):21-24.
[2]KUSHNER L J,AINSWORTH M T.A spurious reduction technique for high-speed direct digital synthesizers[ J] . IEEE, 1996,40:920-927.
[3]ZWOLINSHI Mark. Digital system design with VHDL[M]. Beijing: Publishing House of Electronics Industry,2005.
[4]陈风波,冒燕,李海鸿.基于FPGA的直接数字频率合成器设计[J].微计算机信息,2006,22(5):197-199.
[5]杨萍,兀旦晖,杨良煜.DDS技术在正弦信号发生器中的应用[J].计算机测量与控制,2008(11):1738-1740.
[6]石伟,宋跃,李琳.基于FPGA的DDS调频信号的研究与实现[J].微计算机信息,2005,21(5):179-180.
[7]余勇,郑小林.基于FPGA的DDS正弦信号发生器的设计和实现 [J].电子器件,2005,28(3):596-599.
[8]徐丹呖,张晓红,王勇.任意波形发生器ROM查找表的设计[J].现代电子技术,2008,31(11):172-173.
[9]王玉花,郭书军,葛纫秋.FPGA器件的在线配置方法[J].单片机与嵌入式系统应用,2004(3):8-10.
[10]魏东梅.基于FPGA的DDS的设计[J].计算机技术与发展,2006(16):30-31.
相关热词搜索: 设计 FPGA DDS