基于DDS技术的多路同步信号源的设计

2009-05-12 03:14孙永亮张忠友
现代电子技术 2009年5期

孙永亮 张忠友

摘 要:多路同步数字调相信号源一般采用单片机和多片专用DDS芯片配合实现。该技术同步实现复杂,成本高。给出了一种基于FPGA的多路同步信号源的设计方法,通过VHDL语言硬件编程实现了基于单片FPGA的多路同步信号,数字调相快速准确。利用QuartusⅡ进行综合和仿真验证了该设计的正确性,该设计具有调相方便、速度快、成本低等优点。

关键词:DDS;多路同步;VHDL;FPGA

中图分类号:TN911文献标识码:B

文章编号:1004-373X(2009)05-020-03

Design of Synchronized and Continuously Tunable Multi-routing

Signal Source Based on DDS Technology

SUN Yongliang,ZHANG Zhongyou

(College of Science,Air Force Engineering University,Xi′an,710051,China)

Abstract:The synchronized and continuously tunable multi-routing signal sources are generally based on combination of a Micro Control Unit (MCU) and multiple specialized DDS chips.However,the realization of synchronization is difficult due to technology complications and high cost.In this paper,a design for a synchronized multi-routing signal source based on a single FPGA micro unit by VHDL hardware programming is proposed.It has good synchronization between multi-routing signals,and is continuously tunable and cost-efficient.This design is verified by integration and simulation through Quartus II.Experiments show that this design is simple and highly applicable.

Keywords:DDS;synchronization of multi-routing signals;VHDL;FPGA

0 引 言

实现信号源的多路同步输出,在雷达、通信等多领域有着重要的应用。为了实现此功能,大多数设计是利用多个专用DDS芯片外围借助单片机帮助,实现多信号同步输出,如图1所示。

系统工作时,根据键盘输入,单片机输出频率控制字和相位控制字以及波形选择字,控制专用DDS芯片AD9854产生特定频率和相位的波形,经滤波放大后输出要求的模拟波形。为输出频率相同,相位相关的多路同步信号,控制数据由键盘输入,单片机向各专用DDS芯片输出相同的频率控制字和不同的相位控制字指令,控制各专用DDS芯片输出指定的频率和相位的波形。这样就从整体上实现了频率和相位的连续可调及同步。

AD9854是美国AD公司的DDS系列产品,性能良好,频率可调范围宽。在这样的设计中,利用AD公司的AD9854芯片,尽管有频率可调范围宽,波形丰富,实现调副、调频容易等特点,但是由于是采用分立的专用DDS芯片,各芯片参数很难做到完全相同,参数的差异会造成输出信号频率和相位不同。因此,尽管各DDS芯片采用同一频率字,各个输出信号频率也难以完全相同。同样,由于参数的不一致,波形之间的相位也难以准确调整到位,更重要的是各个信号频率差异的累积效应可能会导致同步失败。另外,专用DDS 芯片价格昂贵,设计成本也较高。

基于以上原因,这里给出一种基于单片FPGA的多路同步信号源的设计方案,这种方案具有实现简单、同步性好等优点,且成本较低。

1 基于FPGA技术的多路同步信号源的设计模型

基于FPGA技术的多路同步信号源的整体框图如图2所示。

在本框图中,以三路输出为例,在一个FPGA芯片中,实现了三路基于DDS的信号通道,完成传统上三个专用DDS芯片AD9854完成的功能,实现三路波形的数字输出,在数字信号输出后进行D/A转换,实现三路信号的模拟输出。三个DDS信道频率取自同一个累加器输出的地址值,进行查表,同时相位的加法实现也是针对同一个累加器输出的地址,消除了分立专用DDS芯片计算的误差。由于在一块芯片中实现,所以各DDS信道的参数一致性好,分立专用DDS芯片的外部连线带来的延时误差也被降到最低。因此,通过以上措施,可以大大改善信号的一致性,可实现精准的相位连续调节。

单片机及总线配置电路通过键盘实现人机接口。通过4×4矩阵式键盘可以将频率选择、初始相位选择等数据输入单片机并经单片机处理后送FPGA,实现DDS的调整。

FPGA是完成DDS多信号产生的核心部件,完成DDS多路同步信号的产生。

2 基于DDS技术的多路同步信号输出的FPGA核心设计

2.1 一般DDS的工作原理

DDS(Direct Digital Synthesizer)是从相位概念出发直接合成所需的波形的一种频率合成技术。一个DDS信号发生器是由:相位累加器、波形数ROM 表、D/A转换器以及模拟低通滤波器LPF组成,原理框图如图3所示。DDS技术的核心是相位累加器,相位累加器在稳定时钟信号的控制下产生读取数据的地址值,随后通过查表变换,地址值被转化为信号波形的数字幅度序列,再由数/模变换器(D/A)将代表波形幅度的数字序列转化为模拟电压,最后经由低通滤波器将D/A输出的阶梯状波形平滑为所需的连续波形。相位累加器在时钟F<sub>c</sub>的控制下以步长F作累加,输出的值与相位控制字P相加后形成查表的地址值,对波形ROM进行寻址。波形ROM的输出值即是幅度值,经过D/A变换后形成阶梯状的波形,最后通过低通滤波平滑成所需的波形。合成信号的波形取决于ROM表中的幅度序列,通过修改数据可以产生任意波形,如果要产生多种波形,只需把所需的多种波形数据存放到波形ROM表中。

一般DDS的原理示意图如图3所示。

2.2 同步多路输出DDS的工作原理

同步多路输出DDS工作原理示意图如图4所示。

由方框图可以看出,从同一个相位累加器输出的地址值在进行查表之前,根据需要有不同的相位字进行加法运算,再根据新的地址进行查表,从而形成波形之间需要的相位值。由于各个输出信号是在DDS内对同一个累加器输出的地址进行相位的加法,参数一致,相位的可调性非常好。频率取自同一频率字,各个信号存在固定的同步同频特性,因此输出的信号源同步性能优越,完全满足设计要求。

2.3 相位累加器的设计

相位累加器是DDS设计的核心部件。本设计相位累加器由32位加法器与32位寄存器级联构成。累加器将加法器在上一个时钟作用后所产生的相位数据反馈到加法器的输入端;使加法器在下一个时钟作用下继续与频率控制字(K)进行相加,实现相位累加,当相位累加器累加结果等于或大于232时就会产生一次溢出,回到初始状态,完成一个周期性的波形输出。本设计累加器用VHDL语言[quartus6.0]设计实现如下:

32位累加器模块实现:

library ieee;--32位累加器

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity adder32b is

port(a:in std_logic_vector(31 downto 0);

b:in std_logic_vector(31 downto 0);

clk0:in std_logic;

s:out std_logic_vector(31 downto 0) );

end adder32b;

architecture behav of adder32b is

begin

process(clk0)

begin

if clk0'event and clk0= '1' then

s<=a+b;

else null;

end if;

end process;

end behav;

2.4 波形存储器的设计

用相位累加器输出的数据作为波形存储器的取样地址,进行波形的相位-幅码转换,即可在给定的时间上确定输出的波形的抽样幅码。本设计利用FPGA资源,构造一个10位的ROM进行数据的存储和转换。

ROM可利用Quartus的插件管理程序Megawizard plug_in manager容易获得,这里给出正弦波形数据生成的C程序,来生成ROM存储的数据。要想生成其他波形的数据,只需要简单修改其中的波形表达式即可。

#include″stdio.h″

#include″math.h″

#define N 256/*N is the DEPTH of the table(数据个数也就是一个周期采样点数)*/

#define P 10 /*P is the Precision of data in the table(数据精度也就是一个数据的位数)*/

void main()

{FILE *fp;

double y,bias,amp;

int n;

if((fp=fopen(″sindata.c″,″w″))==NULL)

{printf(″cannot open this file\n″);

exit(0);

}

fprintf(fp,″WIDTH=10;\n″);

fprintf(fp,″DEPTH=256;\n″);

fprintf(fp,″ADDRESS_RADIX=DEC;\n″);

fprintf(fp,″DATA_RADIX=DEC;\n″);

fprintf(fp,″CONTENT BEGIN\n″);

bias = amp = pow(2,P-1)+0.5;

for(n=0;n<=N-1;n++)

{y=bias+amp*sin(n*3.1415936535/(N/2));

if(fmod(n,10)==0)

{fprintf(fp,″\n″);}

fprintf(fp,″%4d:%4.0f;\n″,n,y);

}

fprintf(fp,″END;″);

fclose(fp);

}

3 仿真与调试

本设计在Quartus Ⅱ中进行分析和综合后,得到该相位可调多输出DDS的结构如图6所示。

在Quartus Ⅱ中,输入控制信号:F<sub>c</sub>=100 MHz,fword=50,pword=35,进行仿真,其仿真结果如图7所示。在Quartus中生成的仿真数据经过验证完全正确,得到了同频和可调相的三个正弦波的幅值数据序列,完全满足设计要求。

4 结 语

本设计运用VHDL硬件编程语言和DDS技术,结合FPGA高速器件,实现了多路信号的同步输出,很好地解决了要求信号之间同频率可调,相位连续可调的问题,且具有易于程控、相位连续、输出频率稳定度高、分辨率高等优点,并且采用一个FPGA块就解决了传统上需要三个DDS才能解决的问题,也大大降低了设计成本。

参考文献

[1]潘松,黄继业.EDA技术与VHDL.2版.北京:清华大学出版社,2007.

[2]陆春妹.基于DDS技术的数字信号发生器的设计.苏州市职业大学学报,2007,18(2):55-57.

[3]Phillip E Allen,Douglas R Holberg.CMOS Analog Circuit Design.Beijing:Publishing House of Electronics Industry,2005.

[4]王玉珍,李袁柳.直接数字式合成技术之研究[J].宇航计测技术,2004,24(3):7-11.

[5]姜田华.实现直接数字频率合成器的三种技术方案[J].电子技术应用,2007,30(3):1-3.

[6]石伟,宋跃,李琳.基于FPGA的DDS调频信号的研究与实现[J].微计算机信息,2005,21(5):179-180.

[7]唐东峰,王福昌.DDS+PLL系统的频谱分析[J].通信技术,2007(2):56-57.

[8]屈新建,常义林.基于DDS+PLL频率合成源的设计[J].现代电子技术,2005,28(3):115-117.

[9]郝新红,崔占忠.虚拟仪器技术在无线电引信射频干扰试验系统中的应用[J].探测与控制学报,2004,26(4):49-51.

[10]张骏凌,张玉兴.直接数字频率合成器中的相位噪声分析[J].电子科技大学学报,2007,28(1):24-27.

作者简介

孙永亮 男,1970年出生,河南西平人,硕士研究生。主要研究方向为电子设计自动化及信号处理。