DDS实验报告 下载本文

内容发布更新时间 : 2024/12/26 9:43:44星期一 下面是文章的全部内容请认真阅读。

DDS直接数字频率合成器电路设计

图 6 相位累加器结构图

相位累加器在基准频率信号fc的控制下以频率控制字kf为步长进行累加运算,产生所需要的频率控制数据。相位寄存器则在时钟的控制下把累加的结果作为波形存储器ROM的地址,实现对波形存储器ROM的寻址。当累加器加满量时就会产生一次溢出,完成一个周期性的动作。这个周期也就是DDS信号的一个频率周期。

本设计相位累加器采用文本输入法VHDL语言设计,具体如下(参见VHDL源文件SUM4096.vhd):

--SUM4096.VHD LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SUM4096 IS

PORT(K:IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK:IN STD_LOGIC; EN: IN STD_LOGIC; RESET:IN STD_LOGIC;

OUT1:OUT STD_LOGIC_VECTOR(11 DOWNTO 0)); END ENTITY SUM4096;

ARCHITECTURE ART OF SUM4096 IS

SIGNAL TEMP: STD_LOGIC_VECTOR(11 DOWNTO 0); BEGIN

PROCESS(CLK,EN,RESET)IS BEGIN

IF RESET='1' THEN //清零端为1时累加器清零 TEMP<=\ ELSE

IF CLK'EVENT AND CLK='1' THEN

IF EN='1' THEN //使能端EN为1时累加器正常工作

TEMP<=TEMP+K; //时钟CLK上升沿到来时以kf为步长递增 END IF; END IF; END IF;

OUT1<=TEMP; //将目前的累加结果保存并输出,下次上升沿时实现累加 END PROCESS;

END ARCHITECTURE ART;

7

DDS直接数字频率合成器电路设计

以上程序不仅定义了累加器还添加了清零和使能功能。相位寄存器是与相位累加器同步的寄存器,也是采用文本输入法VHDL语言设计,具体如下(参见VHDL源文件EG1.vhd):

--REG1.VHD LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG1 IS

PORT(D:IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK:IN STD_LOGIC;

Q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0)); END ENTITY REG1;

ARCHITECTURE ART OF REG1 IS BEGIN

PROCESS(CLK) IS BEGIN

IF(CLK'EVENT AND CLK='1' )THEN

Q<=D; //当时钟上升沿到来时输出相位累加器的结果 END IF;

END PROCESS;

END ARCHITECTURE ART;

//相位寄存器的输出就是波形存储ROM的地址。

6.3 波形存储器模块

用累加器的输出作为波形存储器的取样地址,进行波形的相位—幅值转换,即可在给定的时间上确定输出的波形的抽样幅值。以正弦波形存储器sine_rom为例,N(12)位的寻址ROM相当于把0—2π的正弦信号离散成具有2N个样值的序列,波形ROM有D(10)位数据位,所以设置2N个样值的sin值以D位二进制数值固化在ROM中,这里设置D=10,所以ROM中的数据范围应该从0到1023,但是正弦值只从-1到1,所以要对其进行量化,公式如下:

存储数据=round(sin(n×2π/4096))×512+512

其中,n为存储地址,范围是从0到4095。

按照地址的不同可以输出相应相位的正弦信号的幅值。相位—幅度变换原理如图7

8

DDS直接数字频率合成器电路设计

所示。

图7 相位-幅度变换原理图

同理,余弦波ROM、锯齿波ROM、三角波ROM、方波ROM只需在ROM里存储相应波形的幅度量化序列即可。

1) 正弦ROM的存储数据表参见dds.mif。

2) 余弦ROM的存储数据表与正弦ROM类似(参见cos.mif):

存储数据=round(cos(n×2π/4096)×512)+512

3) 三角波ROM的数据表参见sanjiao.mif。三角波的数据没有现成的生成三角波的数据,本设计根据图5做出相应的函数产生三角波的数据表。

图8 三角波

所以三角波函数如下:

当n∈(0,1023)时,存储数据=round(n/2)+512;

当n∈(1023,3071)时,存储数据= 1024-round(n/2)+512; 当n∈(3071,4095)时,存储数据= round(n/2)-2048+512;

4) 锯齿波ROM的数据表参见juchibo.mif。锯齿波的波形如图9所示。

9

DDS直接数字频率合成器电路设计

图 9 锯齿波

由图9可得出锯齿波的函数如下:

存储数据=round(n/4)

5) 方波ROM的数据表参见fangbo.mif。方波的波形如图10所示。

图 10 方波

由图10可得出方波的函数如下:

1023,n ∈(0,2047)

存储数据= 0, n ∈(2047,4095)

最后,生成5个存有不同波形的存储器,分别是sine_rom、cos_rom、fangbo_rom、juchibo_rom、sanjiao_rom。

分别如图11所示。

10

DDS直接数字频率合成器电路设计

正弦波sine_rom

余弦波cos_rom

方波fangbo_rom

三角波sanjiaobo_rom

图11 5个波形存储器

锯齿波juchibo_rom

所有.mif文件的数据都来源于电子表格ROM地址数据。

6.4频率测定模块设计

本设计的测频电路是通过测定相位累加器输出的ROM地址信号在1秒钟内溢出的次数来测定输出频率的。原理图如图12所示:

图12 测频电路原理框图

电路波形示意图如图13所示:

11