首页 > 代码库 > 采用DDS(数字频率合成法)设计信号发生器

采用DDS(数字频率合成法)设计信号发生器

§2.1设计指导思想

用大规模CPLD设计多功能信号发生器,要求能够输出方波、锯齿波、三角波、正弦波。

具体是用VHDL硬件描述语言编写多功能信号发生器程序,经过编译、仿真,再下载到CPLD器件上,再经数模转换器输出各类波形。

1.CPLD(COMPLEX Programmable Logic Device,复杂可编程逻辑器件)属于最具有代表性的IC芯片之一。CPLD基本上是由多个SPLD(SIMPLE PLD)在单片上的集成,集成度高,可以实现比较复杂的电路或系统。CPLD的优点是其结构的规则性,可以较好地预测定时(延时)时间。CPLD的市场增长极快,已广泛用于各个领域。CPLD是大规模集成电路技术的飞速发展与计算机辅助设计(CAD)、计算机辅助制造(CAM)和计算机辅助测试(CAT)相结合的一种产物,是数字逻辑电路向着超高集成度、超低功耗、超小型封装和专用化方向发展并采用“阵列逻辑”技术生产的器件。在CPLD上,工程师能根据自己的要求来实现所需要的逻辑功能。通常利用计算机辅助设计,用原理图、布尔方程、状态机、HDL等方法来表示设计思想,经编译或转换后形成jedec文件或目标机器能接受的文件格式,通过编程器和下载线,下载到目标器件中。这就将CPLD设计成了符合用户要求的ASIC了。

CPLD已广泛用于通信、电子、自动化等各个领域,它们在单一芯片上实现信号采集、转换、存储、处理和I/O等功能,或者说在单一芯片上集成了数字电路,模拟电路信号采集和转换电路、存储器、MPU、MCU、DSP、MPEG等,实现了过去一个需要多片集成电路才能完成的功能,集成读高,速度快,功耗小,可靠性高等特点。CPLD器件正在向在系统可编程(IN SYSTEM PROGRAMMMABLE—ISP)方向发展,即CPL的器件不仅具有可编程和可再编程的能力,而且只要把PLD器件插在系统内或电路板上,就能编程,不需要使用额外的编程器,使系统内的硬件功能可以像软件一样地被编程配置,从而可以实时地进行灵活方便的更改和开发。这种成为“软”硬件的全新的系统设计概念,为数字系统的设计和许多复杂的信号处理的实现提供新的思路和方法,使电子系统具有极强的灵活性和多功能的适应性。

2.VHDL(Very High Speed Integrated Circuit(VHSIC)Hardware Description Language)作为IEEE标准所规范的硬件描述语言,随着各种EDA工具和集成电路厂商的普遍认同和推广,目前正在全球范围内先进国家的电子系统设计领域获得广泛应用。在硬件电子电路设计领域中,设计自动化工具已经被广大电子工程师所接受,它必将取代人工设计方法,成为主要的设计手段。电子设计自动化的重要特征就是要求采用形式化语言来描述硬件电子电路的功能,即使用硬件描述语言来描述硬件电子电路。目前,作为硬件描述语言之一的VHDL已经成为各家EDA工具和集成电路厂商所普遍认同和共同推广的标准化硬件描述语言。掌握VHDL语言,学会用VHDL语言设计硬件电子电路,是每个电子工程师所必须掌握的一项基本技能。

3.MAX+PLUS2是Altera公司开发的一个软件设计平台。本文重点要探讨的是用VHDL来设计数字电路。在Altera公司的MAX+PLUS2设计软件上用VHDL设计了波形发生器,成功地进行了波形仿真,并下载到实验板上进行了验证。MAX+PLUS2是在WINDOWS环境下开发的可编程逻辑设计平台。该平台将数字电路设计集成在一个环境内,它支持Altera公司各种可编程器件,允许多种输入方式逻辑设计文件。经过系统编辑器的编译、综合等操作,可对设计进行功能模拟,对数字电路的设计实现同步模拟分

析、延时时间分析、编译,最后将编译好的电路分配到一个或多个器件中。MAX+PLUS2

软件进行逻辑设计的过程主要有四个阶段:设计输入、设计处理、设计校验、和器件编程。本设计运用Altera公司的F10K10下载板系列中的芯片(EPF10K10LC84-3:密度10000门;封装PLCC84;频率高于150MHZ;I/O口55个)。

4.随着电子技术的不断发展与进步,电子系统的设计方法发生了大的变化,由上述可知基于EDA技术的芯片设计成为电子系统设计的主流。大规模可编程逻辑器件CPLD和FPGA是当今应用最广泛的两类可变成专用集成电路(ASIC),电子设计工程师利用它可以在办公室和实验室里设计出所需的专用集成电路,从而大大缩短了产品上市时间,降低了开发成本。此外,它还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,这样就极大地提高了电子系统设计的灵活性和通用性。因此掌握可编程逻辑器件的应用在电子设计中具有置关重要的意义。

§2.2信号发生器的构成

本设计利用VHDL硬件描述语言对信号发生器的电路进行硬件描述,把描述的整个电路通过动态配置写进CPLD芯片。CPLD芯片输出的波形是数字信号,要在示波器上观察其波形输出是否正确,就必须是模拟信号,所以还必须利用数模准换芯片把数字信号转换为模拟信号。

如图所示,信号发生器是由五部分组成。分别是:控制部分、数模转换部分、时钟输入、键控输入。控制部分由CPLD器件完成,它是信号发生器的主要部分,所有的数字波形信号都是从这里输出。控制部分输出的数字信号经过D/A芯片TLC7528转换后得到模拟信号。这时输出的是电流信号,必须经过一级运放后得到电压信号。键控输入部分主要是波形的选择。

 

图2-1多功能信号发生器电路框图

 

§2.3波形发生设计

信号发生器设计了四种波形,分别是方波、锯齿波、三角波和正弦波。

信号发生采用直接数字频率合成方法(DDS)。直接数字频率合成(DDS)是指从相位概念出发直接合成所需波形。它是由美国学者J.TierncyC.M.Rader和B.Gold1971年提出来的,并随着技术和器件水平的提高,得到了飞速的发展。它以有别于其它频率合成

方法的优越性能和特点成为现代频率合成技术中的佼佼者:(1)它具有非常快的频率切换速度。目前,DDS的调谐时间一般在ns级,比使用其它的频率合成方法都要短数个数量级;(2)它其有极高的频率分辨率。大多数DDS的分辨率在HZ、mHZ至μHZ的数量级;(3)它具有优良的低相位噪声和低漂移性能。DDS系统中合成信号的频率稳定度直接由参考源的频率稳定度决定,而在大多数DDS系统应用中,一般由固定的晶振来产生基准频率,所以其相位噪声和漂移特性是极为优异的。另处,DDS还具有一系列如:连续的相位变化、在极宽的频带范围内输出幅度平坦的信号和易于集成、易于调整等优点。

DDS技术是一种把一系列数字量形式的信号通过DAC转换成模拟量形式的信号的合成技术。文中DDS的数字合成正弦波的基本工作原理就是将一个正弦波信号分为512个点,按一定的速率依次周期性输出每一点的正弦波幅值对应的数据,将该数据通过高速D/A转换后以得到一个周期的正弦波信号,并通过改变每一点正弦波幅值数据输出的速率来改变正弦波信号源的频率。

§2.1.1方波的发生

方波是在数字信号中比较容易得到的一种波形,由于它只有两个值无论是使用什么方法都是比较易形成的。在本程序中我们只需要注意各种波形的交叉就可以了。

方波的程序如下:

process(clk,y,q)

begin

if(clk‘event and clk=‘1‘) then

q<=q+1;

l<=l+1;

if y=‘1‘ then

if q<32 then

d1<=0;

else

d1<=255;

end if;

end if;

end if;

end process;

§2.1.2锯齿波的产生

锯齿波的波形如图所示:

图2-2锯齿波波形

 

锯齿波波形数据可以由256个点构成,对周期内的256个点按线性关系赋值就可以得到锯齿波的波形数据。具体程序如下:

process(clk,a,d2)

begin

if(clk‘event and clk=‘1‘) then

if a<=‘1‘ then

if d2<255 then d2<=d2+1;

else d2<=0;

end if;

end if;

end if;

end process;

§2.1.3三角波的产生

根据三角波的图形特点,同样可以把波形周期分成512个点,对每个点按线性赋值就可以了。程序如下:

process(clk)

begin

if(clk‘event and clk=‘1‘) then

if x<=‘1‘ then

if l<256 then

q1<=l;

else

q1<=q1-1;

end if;

end if;

end if;

end process;

§2.1.4正弦波的产生

本部分主要是通过制造一个正弦波的波形表通过对表格的循环采样来实现正弦波的产生。其中表格是通过计算得来的。首先将一个周期中的波形分为若干点例如50个点则将这50个点所对应的电压计算出来在与标准电压进行比较,然后进行模数换算使其变成数字量然后进行赋值。事实上CPLD只是对数字信号进行控制因而要变为模拟量就需要进行数模变换。正弦波的数字信号程序如下:

process(q)

begin

if z=‘1‘ then

case q is

when 00 => d<=255;when 01 => d<=254;

when 02 => d<=252;

when 03 => d<=249;when 04 => d<=245;

when 05 => d<=239;

when 06 => d<=233;when 07 => d<=225;

when 08 => d<=217;

when 09 => d<=207;when 10 => d<=197;

when 11 => d<=186;

when 12 => d<=137;when 13 => d<=162;

when 14=> d <=150;

when 15=> d <=137;when 16=> d <=124;

when 17=> d <=112;

when 18=> d <=99;when 19=> d <=87;

when 20=> d <=75;

when 21=> d <=64;when 22=> d <=53;

when 23=> d <=43;

when 24=> d <=34;when 25=> d <=26;

when 26=> d <=19;

when 27=> d <=13;when 28=> d <=8;

when 29=> d <=4;

when 30=> d <=1;when 31=> d <=0;

when 32=> d <=0;

when 33=> d <=1;when 34=> d <=4;

when 35=> d <=8;

when 36=> d <=13;when 37=> d <=19;

when 38=> d <=26;

when 39=> d <=34;when 40=> d <=43;

when 41=> d <=53;

when 42=> d <=64;when 43=> d <=75;

when 44=> d <=87;

when 45=> d <=99;when 46=> d <=112;

when 47=> d <=124;

when 48=> d <=137;when 49=> d <=150;

when 50=> d <=162;

when 51=> d <=174;when 52=> d <=186;

when 53=> d <=197;

when 54=> d <=207;when 55=> d <=217;

when 56=> d <=225;

when 57=> d <=233;when 58=> d <=239;

when 59=> d <=245;

when 60=> d <=249;when 61=> d <=252;

when 62=> d <=254;

when 63=> d <=255;

when others=>null;

end case;

dd<=d;

采用DDS(数字频率合成法)设计信号发生器