- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计---直接数字式频率合成器(DDS)的设计
EDA技术课程设计报告
课题名称: DDS直接数字式频率合成器的设计
目 录
一 概述 1
(一) 设计背景及意义 1
(二) 设计要求 1
二 设计方案 1
(一) 直接数字式频率合成器(DDS)的基本结构 1
(二) 基本DDS结构的常用参量计算 2
(三) DDS的工作原理 2
三 软硬件设计 3
(一) VHDL程序 3
(二) ROM源代码 7
(三) ROM定制 7
(四) 仿真波形图 8
(五) D/A转换电路 8
四 调试过程 8
五 实验结果 9
六 心得体会 9
七 参考文献 9
直接数字式频率合成器(DDS)的设计
一、设计任务
1、设计任务
设计并制作一个直接数字式频率合成器(DDS),包括加法器、寄存器、存储器和D/A转换器,基本结构如图1所示:
图1 直接数字式频率合成器(DDS)的基本结构
2、设计要求
输出一路5V的正弦波、方波和三角波信号;
频率(200kHz;
结果用显示、频率合成(Direct Digital Frequency Synthesis,简称DDS或DDFS)是近年来发展起来的种新的频率合成技术。其主要优点是相对带宽很宽、频率转换时间极短(可小于20ns)、频率分辨率很高(典型值为0.001Hz)、全数字化结构便于集成、输出相位连续、频率、相位和幅度均可实现程控。DDS由于其频率分辨率极低、频率捷变速度极快、变时相位连续、相位噪声低、集成度高、体积小、价格较低以及可灵活产生多种信号等传统频率合成技术无可比拟的优点DDS结构的常用参量计算
a) DDS的输出频率fout。
b) DDS的产生的相位。
c) DDS的频率分辨率。
d) DDS的频率输入字FW计算。
2.2 DDS的工作原理
2.2.1 相位累加器与频率控制每来一个时钟脉冲clk,N位加法器将频率控制与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的输入端。累加寄存器一方面将在上一时钟周期作用后所产生的新的相位数据反馈到加法器的输入端,使加法器在下一时钟的作用下继续与频率控制相加;另一方面将值作为存储器地址输出相应的波形数据。最后经D/A转换成所需要的模拟波形相位累加器在基准时钟的作用下,进行线性相位累加,当相位累加器加满量时就会产生一次溢出,这样就完成了一个周期,这个周期也就是DDS信号的频率周期。DDS输出信号的频率:=
设基准时钟为0MHz,累加器为位,则)*50 MHz =11.6MHz。可见,通过设定相位累加器位数和频率控制字可确定输出频率。
2.2.2相位控制clk,加法器将相位控制字PW与累加寄存器输出的数据相加,把相加后的结果作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形取样值(二进制编码)经查找表查出,完成相位到幅值转换。波形存储器的输出送到D/A转换器,将数字量转换成所要求合成频率的模拟量信号。
2.2.3 数据存储器
数据存储器采用 LPM模块的VHDL文本调用方式实现。
ROM的深度为1024,输出的数据为8位;
rom_data.mif 可参阅下例,设计时根据D/A转换器的输出极性确定相应的取样公式。
rom_data.mif 8位正弦波数据文件,用C语言生成。
rom_data.mif
WIDTH=8;
DEPTH=1024;
ADDRESS_RADIX=DEC;
DATA_RADIX=DEC;
CONTENT BEGIN
0: 127;
1: 128;
2: 129;
3: 129;
...
1019: 123;
1020: 124;
1021: 125;
1022: 125;
1023: 126;
END;
三、软硬件设计
3.1 VHDL程序
3.1.1 32位锁存器的VHDL程序
library ieee;
use ieee.std_logic_1164.all;
entity reg32b is
port(load :in std_logic;
din :in std_logic_vector(31 downto 0);
dout:out std_logic_vector(31 downto 0));
end ;
architecture behav of reg32b is
begin
process(load)
begin
if load'event and load='1' then dout(31 downto 0)<=din(31 downto 0);
end if;
end process;
end behav;
3.1.2 32位加法器的VHDL程序
library ieee;
use ieee.std
文档评论(0)