DDS 实验报告.docx
《DDS 实验报告.docx》由会员分享,可在线阅读,更多相关《DDS 实验报告.docx(31页珍藏版)》请在冰点文库上搜索。
DDS实验报告
电子线路硬件课程设计实验报告
课题:
DDS信号发生器设计
班级:
电信0802
作者:
丁高强
学号:
U200812809
指导老师:
罗杰
课设评价:
课设成绩:
一.实验目的
1.通过本课程的训练,较系统地完成电子系统设计过程的方案论证、电路设计、电路实现、装配调试、系统测试等各个环节,加深对模拟电路、数字电路、微机原理等相关课程的理论知识的分析理解和综合应用,从而掌握工程设计的基本方法和一般规律。
2.充分发挥学生的自我能动性和创造力,引导学生由原理分析向工程设计过渡;
3.进一步熟悉用集成器件实现电路与系统的方法。
4.培养撰写综合实验报告的能力。
二.实验原理
DDS的基本原理是利用采样定理,通过查表法产生波形。
DDS的结构有很多种,其基本的电路原理可用下图来表示。
相位累加器由N位加法器与N位累加寄存器级联构成。
每来一个时钟脉冲fc,加法器将频率控制字与累加寄存器输出的累加相位数据相加,把相加后的结果送至累加寄存器的数据输入端。
累加寄存器将加法器在上一个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。
这样,相位累加器在时钟作用下,不断对频率控制字进行
线性相位累加。
由此可以看出,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据就是合成信号的相位,相位累加器的溢出频率就是DDS输出的信号频率。
用相位累
加器输出的数据作为波形存储器(ROM)的相位取样地址,这样就可把存储在波形存储器内的波形抽样值(二进制编码)经查找表查出,完成相位到幅值转换。
波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。
低通滤波器用于滤除不需要的取样分量,以便输出频谱纯净的信号波形。
DDS在相对带宽、频率转换时间、高分辨力、相位连续性、正交输出以及集成化等一系列性能指标方面远远超过了传
统频率合成技术所能达到的水平,为系统提供了优于模拟信号源的性能。
在实现此DDS波形产生器时有很多方式,在此我们选择FPGA方式。
原理图如下:
DDS原理框图
fclc
假设时钟为fclc,数据保持寄存器选择32Bit,在时钟驱动下,累加器输出结果F被反馈到累加器输入端B,B和DATA的数据被累加到F,下一个时钟脉冲又将F反馈到B,再次与DATA累加到S,下一个时钟脉冲又将F反馈到B,如此循环累加,实现按步进值,按时钟节拍循环累加,使得NBit数据被徐循环累加,产生循环扫描的地址码0~4096(高12Bit)。
完成一次地址循环需要的时间由时钟和步进值决定,可以由公式计算:
一次地址循环可以输出一个完整的波形,既T就是输出波形的周期,转换成频率f,得到计算公式:
当晶振fclc和计数器位宽M确定之后,既与步进值DATA成正比,对DATA的调整可以完成对的设定,当M足够大时,比例常数可以很小,
三.实验内容
基本要求:
(1)正弦波输出频率范围:
1kHz~1MHz;
(2)具有频率设置功能,频率步进:
100Hz;
(3)输出信号频率稳定度:
优于10-4;
(4)输出电压幅度:
在负载电阻上Vopp≥1V;
(5)失真度:
用示波器观察时无明显失真。
(6)能产生三角波、方波信号,频率范围自定。
扩展要求:
1)产生模拟频率调制(FM)信号:
在100kHz~10MHz频率范围内产生10kHz最大频偏,且最大频偏可分为5kHz/10kHz二级程控调节,正弦调制信号频率为1kHz,调制信号自行产生;
2)产生二进制PSK和FSK信号:
在100kHz固定频率载波进行二进制键控,二进制基带序列码速率固定为10kbps,二进制基带序列信号自行产生;
3)利用DDS的原理来设计分频电路,由系统50MHz时钟,分出一个20.48kHz的时钟信号。
四.实验过程
此次试验中所用的软件为QuartusII9.1
1.打开QuartusII9.1选择FileNewProjectWizard并建立一个工程命名为dds_top。
如下图所示
然后点击next,给所建工程命名如下图
2.然后点击next,会出现导入文件的界面,因为我不需要导入文件,所以直接点击next进入下一步进行器件选择。
本次试验中我们所用的器件为cycloneIIEP2C35F672C6R如下图所示
3.点击Finish,至此一个完整工程就建立完毕。
此次试验我们采用画原理图的方式来实现DDS功能,DDS的核心部分包括相位累加器和波形存储器,下面通过原理图来实现
4.选择File->New选项出现如图所示界面,我们选择
BlockDiagram/SchematicFile文件,点击OK
5.首先用锁相环,对50Mhz的系统时钟进行分频和倍频
建立好的锁相环如下图
KEY[0]用来复位,锁相环的输入时钟信号有DE2板子提供的50MHz时钟。
此时得到100Mhz和10MHz,其中100Mhz作为其他逻辑器件的时钟,10MHz在进行一次分频得到1Hz的信号用于频率改变。
从10MHz中分得1Hz的原理图
6.建立相位累加器
a.首先建立一个加减法器,用来实现信号频率的加或者减的,此模块通过调节DATA的值来改变频率,用SW【0】来控制加或者减,KEY【0】控制时钟的使能。
b.此模块使用了一个选择器通过SW[3:
1]来选择每次的递增或递减量,和上面的加减法器来实现DATA的加或者减。
c.将上面产生的DATA偏移量和原始DATA(原始DATA对应的频率为5000Hz)相加,就可以产生新的DATA,即新的频率。
d.产生新的DATA值后在通过累加器,就可以产生数据存储器的地址值。
如下图:
7.DDS的另外一个部分就是数据存储器,下面就介绍一下数据存储器的生成。
a.在系统的元件库中招lpm_rom如下图,并设置存储器的位宽为10。
寻址范围为0~4095.
b.将正弦信号的采样数据放到ROM中如图。
然后点击Finish一个ROM就建立完毕。
c.建立完毕后如图所示。
d.同理在分别建立存储方波、三角波采样数据的存储器,如下图
三角波数据存储器
方波数据存储器:
此模块的总体原理图如下图,用相位累加模块所产生的地址信号的高12位(Ctrlword[31:
20])做存储器的地址信号,此时三个存储器都会有数据输出,我们可以通过多路选择器来选择我们想要的波形。
e.上面所用到的.mif文件是通过专门的软件产生大家也可以通过C语言或者Matlab产生这里就不再赘述,正弦波的存储数据如下图。
同理也可以产生三角波,方波的存储数据。
通过以上的试验后可以产生基本的波形,下面在介绍一下扩展部分的原理图。
8.首先介绍利用DDS的原理来设计分频电路,由系统50MHz时钟,分出一个20.48kHz的时钟信号。
其实时钟信号就是上面已经产生的方波,只要将其的频率调整为20.48KHz,占空比调为0.5即可。
当DATA=1759219时f=20.48KHz,输出在通过多路选择器选中就可以输出20.48KHz的时钟,下图就是产生20.48KHz时钟的原理图
输出
产生20.48KHz时钟信号的原理图
9. 对于2FSK我们用频率为5KHz,占空比为0.5的方波信号当作调制信号。
当信号为1时对应的频率为150KHz当信号为0时对应的频率为100KHz。
原理图为
产生5KHz方波信号的原理图
通过调制信号来选择不同频率载波的原理图
10.对于2PSK,我们所用到的调制信号是频率为5Khz,占空比为0.5的方波信号(将2FSK的调制信号和SW[16]相与得到)。
当信号为1时相位偏移180度,当信号为0时相位偏移0度。
如下图所示:
2PSk原理图
11.对于FM来说载波的频率随着输入信号的幅值的变化而变化,所以我们将产生的调制信号乘以常数K后,当做DATA来用。
因为信号的值一直在变所以DATA一直在变,因此载波的频率也随着改变。
但必须保证1023×K=858994(此时对应的最大频偏为10K)或者1023×K=429496(此时对应最大的频偏为5KHz)。
所用调制信号为1KHz。
产生1KHz的信号的原理图
FM的调制过程原理图
12、最后介绍一下显示模块,显示模块就是将频率控制字转换成对应的频率,然后再显示出来。
此模块的代码和绘制的原理图如下图所示。
moduledec2seg(clk_100,datain,seg7,seg6,seg5,seg4,seg3,seg2,seg1,seg0);
inputclk_100;
input[31:
0]datain;
output[6:
0]seg7,seg6,seg5,seg4,seg3,seg2,seg1,seg0;
reg[3:
0]tmp7,tmp6,tmp5,tmp4,tmp3,tmp2,tmp1,tmp0;
always@(posedgeclk_100)
begin
tmp7<=datain/32'd429760409;//得到十兆位数据
tmp6<=(datain%32'd429760409)/32'd42949673;//得到兆位数据
tmp5<=(datain%32'd429760409%32'd42949673)/32'd4294963;
//得到100K位数据
tmp4<=(datain%32'd429760409%32'd42949673%32'd4294963)/32'd429497;//得到10K位数据
tmp3<=(datain%32'd429760409%32'd42949673%32'd4294963%32'd429497)/32'd42950;//得到千位数据
tmp2<=(datain%32'd429760409%32'd42949673%32'd4294963%32'd429497%32'd42950)/32'd4295;//得到百位数据
tmp1<=(datain%32'd429760409%32'd42949673%32'd4294963%32'd429497%32'd42950%32'd4295)/32'd429;得到十位数据
tmp0<=(datain%32'd429760409%32'd42949673%32'd4294963%32'd429497%32'd42950%32'd4295%32'd429)/32'd43;得到个位数据
end
HexDigitH7(seg7,tmp7);
HexDigitH6(seg6,tmp6);
HexDigitH5(seg5,tmp5);
HexDigitH4(seg4,tmp4);
HexDigitH3(seg3,tmp3);
HexDigitH2(seg2,tmp2);
HexDigitH1(seg1,tmp1);
HexDigitH0(seg0,tmp0);
endmodule
moduleHexDigit(segs,num);
input[3:
0]num;//thehexdigittobedisplayed
output[6:
0]segs;//actualLEDsegments
reg[6:
0]segs;
always@(num)
begin
case(num)
4'h0:
segs=7'b1000000;
4'h1:
segs=7'b1111001;
4'h2:
segs=7'b0100100;
4'h3:
segs=7'b0110000;
4'h4:
segs=7'b0011001;
4'h5:
segs=7'b0010010;
4'h6:
segs=7'b0000010;
4'h7:
segs=7'b1111000;
4'h8:
segs=7'b0000000;
4'h9:
segs=7'b0010000;
4'ha:
segs=7'b0001000;
4'hb:
segs=7'b0000011;
4'hc:
segs=7'b1000110;
4'hd:
segs=7'b0100001;
4'he:
segs=7'b0000110;
4'hf:
segs=7'b0001110;
defaultsegs=7'b1111111;
endcase
end
endmodule
13. 本次试验的整体原理图如下图所示:
13.原理图建立完毕后,进行一次编译,产生所用到的引脚。
编译成功后出现下图所示的界面,点击确定。
14.编译成后进行引脚分配。
我们先用excel分配好引脚然后再导入。
如下图:
15. 选择菜单栏中的Assignment->Import Assignment.导入分配好的引脚文件,点击OK完成。
如下图:
16.分配完引脚后在编译一次,产生可下载到板子的
dds_top.sof文件,如图编译成功。
17. 编译成功后点击软件右上角的
将产生的dds_top.sof文件下载到DE2板子上进行仿真,在线调试。
如下图
18.接着有在线调试工具,观察输出波形。
选择Tool->SignalTapIILogicAnalyzer进行调试。
添加所要进行仿真的变量,此处我们只观察输出变量的波形
调试的参数设置如下图所示:
五仿真实验结果
基本部分的结果
1.SW[5:
4]为00时波形为正弦波,并且按下KEY[3]可以调节波形的频率,如下图所示。
增大频率后为10KHz:
2.SW[5:
4]为01时产生的波形为三角波,频率为5000Hz如下图
3.SW[5:
4]为10是产生的波形为方波,频率5000Hz如下图
扩展部分的结果:
1.打开开关SW[15],可以看到FM已调信号的波形,载波的频率为100K的正弦波,最大频偏为5KHz。
如下图:
2.同时打开SW[15]和SW[14]时输出信号载波为100K的正弦波,最大频偏为10K的FM已调信号。
如下图;
3.关闭开关SW[15:
14],然后打开开关SW[16],此时输出的波形为2PSK,载波的频率为100KHz
4.关闭开关SW[16]打开开关SW[17],此时输出的波形为2FSK,如下图;
5.关闭开关SW[17],然后同时打开开关SW[5:
4],此时输出的波形为频率为20.48K时钟信号。
六.实验结果
1.正弦波,频率为5000Hz
2.正大频率后的正弦波,此时频率为5200Hz
3.方波,频率5000Hz
4.三角波,5000Hz
5.频率为20.48K的时钟信号
6.2FSK,1对应载波的频率为150K,0对应的载波频率为100K,
7.2PSK
8.FM,此时频偏为5K,载波为100K。
由于频偏远远小于载波的频率并且示波器显示的频率范围有限所以效果不是很明显。
9.FM.此时频偏为10K,载波的频率为100K
六.实验总结
经过本次实验,我学到了很多东西。
首先以前我对DDS的原理一无所知因为本次实验要用这个原理我就到图书馆去借有关的书籍、在网上查阅各种与DDS相关的资料,然后开始慢慢解了DDS原理,然后再动手利用这个原理去实现一些功能,到现在为止可以说已经完全掌握了该原理。
还有以前我对QuartusII原理图的方式不是很熟悉,但因为这次我们是利用原理图的方式来实现我们需要的功能,所以我就有许多动手的机会,现在已经完全熟悉了该构建电路的方式。
此外团队合作在我们这次实验中也得到了充分的体验,本次实验中的扩张功能部分均为我组成员共同智慧的结晶。
在我组成员的共同努力下我们实现了所有的扩展功能。