dds正弦波信号发生源.docx
- 文档编号:4000331
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:9
- 大小:58.83KB
dds正弦波信号发生源.docx
《dds正弦波信号发生源.docx》由会员分享,可在线阅读,更多相关《dds正弦波信号发生源.docx(9页珍藏版)》请在冰点文库上搜索。
dds正弦波信号发生源
《EDA》综合设计报告
题目:
dds正弦波信号发生源
班级:
学号:
姓名:
地点:
工业中心EDA机房
指导老师:
曹艳
2012年
一.课题设计简介
DDS是一种以全数字技术从相位概念出发直接合成所需波形的一中频率合成技术。
目前使用最广泛的方式是利用高速存储器做查找表,然后通过高速DAC输出已经用数字形式存入的正弦波。
二.课题设计具体思路(包括设计的原理图,主要源程序及注释)
DDS信号源正弦波的合成由dds_fen,dds_sin,dds_rom三部分组成
总体设计框图如图1。
图1
(1)端口说明
Clk:
系统时钟
Clr:
清零信号
Datain[19..0]:
设定频率值
Dataout[7..0]:
频率输出
(2)dds_fen模块
根据需要生成的频率信号,产生对应的时钟信号,是DDS设计的核心部分。
clk为系统时钟,clr为清零信号,datain为所需频率值。
该模块根据datain提供的频率值,产生对应的后续模块的时钟信号。
在后续正弦波所需模块中需要提供的时钟信号为所需频率的64倍,通过相位累加产生模块中需要。
dds_fen模块的VHDL原代码如下
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYdds_fenIS
GENERIC(WIDTH:
INTEGER:
=20;
clk_k:
INTEGER:
=10000000);
PORT(clk,clr:
INSTD_LOGIC;
datain:
INSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0);
clk_out:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFdds_fenI
BEGIN
data_c<=datain&"000000";
PROCESS(clk,clr,datain)
BEGIN
IFclr='1'THENq<=0;
ELSIFclk'EVENTANDclk='1'THEN
IFq q<=q+CONV_INTEGER(data_c); clk_out_c<='0'; ELSE q<=0; clk_out_c<='1'; ENDIF; ENDIF; ENDPROCESS; clk_out<=clk_out_c; END; (3)dds_sin模块实现正弦波地址数据输出, 模块的VHDL原代码如下 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; USEIEEE.STD_LOGIC_ARITH.ALL; ENTITYdds_sinIS GENERIC(WIDTH: INTEGER: =6; depth: INTEGER: =64); PORT(clk,clr: INSTD_LOGIC; q: OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0)); END; ARCHITECTUREoneOFdds_sinIS SIGNALq1: INTEGERRANGE0TO(depth-1); BEGIN PROCESS(clk,clr) BEGIN IFclr='1'THENq1<=0; ELSIFclk'EVENTANDclk='1'THEN IFq1<(depth-1)THEN q1<=q1+1; ELSE q1<=0; ENDIF; ENDIF; ENDPROCESS; q<=CONV_STD_LOGIC_VECTOR(q1,WIDTH); END; (4)dds_rom模块用来保存正弦波波形数据 其模块如下 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; USEIEEE.STD_LOGIC_ARITH.ALL; ENTITYdds_romIS GENERIC(addr: INTEGER: =6; width: INTEGER: =8); PORT(clk: INSTD_LOGIC; address: INSTD_LOGIC_VECTOR(addr-1DOWNTO0); dataout: OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0)); END; ARCHITECTUREoneOFdds_romIS SIGNALq: INTEGERRANGE0TO63; SIGNALd: INTEGERRANGE0TO255; BEGIN q<=CONV_INTEGER(address); PROCESS(clk) BEGIN CASEqIS WHEN00=>d<=255;WHEN01=>d<=254;WHEN02=>d<=252;WHEN03=>d<=249; WHEN04=>d<=245;WHEN05=>d<=239;WHEN06=>d<=233;WHEN07=>d<=225; WHEN08=>d<=217;WHEN09=>d<=207;WHEN10=>d<=197;WHEN11=>d<=186; WHEN12=>d<=174;WHEN13=>d<=162;WHEN14=>d<=150;WHEN15=>d<=137; WHEN16=>d<=124;WHEN17=>d<=112;WHEN18=>d<=99;WHEN19=>d<=87; WHEN20=>d<=75;WHEN21=>d<=64;WHEN22=>d<=53;WHEN23=>d<=43; WHEN24=>d<=34;WHEN25=>d<=26;WHEN26=>d<=19;WHEN27=>d<=13; WHEN28=>d<=8;WHEN29=>d<=4;WHEN30=>d<=1;WHEN31=>d<=0; WHEN32=>d<=0;WHEN33=>d<=1;WHEN34=>d<=4;WHEN35=>d<=8; WHEN36=>d<=13;WHEN37=>d<=19;WHEN38=>d<=26;WHEN39=>d<=34; WHEN40=>d<=43;WHEN41=>d<=53;WHEN42=>d<=64;WHEN43=>d<=75; WHEN44=>d<=87;WHEN45=>d<=99;WHEN46=>d<=112;WHEN47=>d<=124; WHEN48=>d<=137;WHEN49=>d<=150;WHEN50=>d<=162;WHEN51=>d<=174; WHEN52=>d<=186;WHEN53=>d<=197;WHEN54=>d<=207;WHEN55=>d<=217; WHEN56=>d<=225;WHEN57=>d<=233;WHEN58=>d<=239;WHEN59=>d<=245; WHEN60=>d<=249;WHEN61=>d<=252;WHEN62=>d<=254;WHEN63=>d<=255; WHENOTHERS=>NULL; ENDCASE; ENDPROCESS; dataout<=CONV_STD_LOGIC_VECTOR(d,WIDTH); END; 完成上述步骤后进行编译,封装,仿真、锁定引脚,再下载。 三.实验结果分析(要附图) 通过嵌入式逻辑分析仪SingalTapⅡ观察波形 设计引脚用N2作为时钟信号clk输入,用开关N25作为清零信号clr输入,用开关(N26、P25、AE14、AF14、AD13、AC13、C13、B13、A13、N1、P1、P2、T7、U3、U4、V1、V2)作为datain[19..0]的输入,用扩展端口GPIO_0[7]~GPIO_0[0](J20、J21、F23、F24、E25、E26、J22、D25)作为dataout[7..0]的输出。 全程编译通过下载到DE2板,扩展端口外接D/A变换后送示波器观察波形。 动态仿真正弦波 四总结 设计过程中遇到了一些问题。 如,编译control时总出现错误,但源代码不存在问题,最后发现control的编译必须在con1编译封装完成后才能实现。 而且在保存的时候,文件名必须与实体名一致。 每一次编译的时候都要将文件置顶,否则编译不成功。 文件名保存错误或编译错误都要从打开程序。 经过一次的修改,一次次的编译,最后终于完成了设计,看到最终的波形,无比开心。 虽然期间遇到了很多困难,但通过与同学的探讨和老师的提点,成功的解决了很多问题,最终圆满完成。 这次学习让我认识到一件事: 不断挑战摸索出来的成功比简单的胜利更有意义。 遇到并解决困难,是学习与提高的必经过程,这样才能使能力与心智得到成长。 丰富的知识,冷静的态度,成熟的头脑,不懈的精神都是成功的要素。 同时经过这次设计让我对EDA有了个更整体更全面的认识,对其步骤也比以前更清楚更熟练了。 真的收获颇多 五.问题 1.什么是DDS? DDS一种以全数字技术从相位概念出发直接合成所需波形的一种频率合成技术。 2.DDS完成什么功能? 能输出什么信号? 能够产生任意波形,能输出数字化的正弦波。 3.DDS各端口都有什么功能? clk: 系统时钟clr: 清零信号 datain[19..0]: 设定频率值 dataout[7..0]: 频率输出 4.dds_fen模块实现什么功能? 根据需要生成的信号频率值,产生对应的时钟信号 5.GENERIC类属说明语句有什么作用,其定义的值在程序中如何使用? 类属为实体与外界通信提供了一种静态信息通道,用来规定端口大小、总线宽度和实体中子元件的数目等。 类属值可以由设计实体外部提供,接受赋值。 6.后续模块时钟信号与所需频率值之间有什么关系? 后续模块时钟信号为所需频率值的64倍,通过相位累加即可得到所需频率。 7.dds_sin模块实现什么功能? 实现正弦波地址数据输出。 8.dds_sin模块输出的数据地址范围是…? 0到11111111.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dds 正弦波 信号 生源
![提示](https://static.bingdoc.com/images/bang_tan.gif)