基于DDS技术的信号发生器资料.docx
- 文档编号:4758147
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:15
- 大小:177.40KB
基于DDS技术的信号发生器资料.docx
《基于DDS技术的信号发生器资料.docx》由会员分享,可在线阅读,更多相关《基于DDS技术的信号发生器资料.docx(15页珍藏版)》请在冰豆网上搜索。
基于DDS技术的信号发生器资料
现代电子学实验报告
实验题目:
基于DDS技术的信号发生器
姓名:
陈思
年级:
2010级电子信息科学与技术
指导教师:
马莉
完成日期:
2013.10.10
原创性声明
本人声明本实验报告涉及的电路图、程序代码均为自己设计,没有抄袭他人的成果。
特此声明!
声明人:
陈思
摘要1
1.实验目的2
2.实验原理及内容2
2.1实验的总体结构2
2.2实验的理论基础和原理3
3.实验内容4
4.实验设计与测试5
4.1频率控制模块5
4.2按键选择模块7
4.3正弦波信号产生模块8
4.4总体测试13
5.实验结论与测试14
参考文献15
摘要
函数信号发生器简介
在频率合成(Fs,FrequencySynthesis)领域中,直接数字合成(DirectDigitalSynthesis—DDS)是近年来新的FS技术。
单片集成的DDS产品是一种可代替锁相环的快速频率合成器件。
因其精度高、变换频率快、输出波形失真小成为优先选用技术。
具体体现在频带宽、频率转换时间短、频率分辨率高、输出相位连续、可产生宽带正交信号及其他多种调制信号、可编程和全数字化、控制灵活方便等方面,并具有极高的性价比。
DDS以稳定度高的参考时钟为参考源,通过精密的相位累加器和数字信号处理,通过高速D/A变换器产生所需的数字波形(通常是正弦波形),这个数字波形经过一个模拟滤波器后,得到最终的模拟信号波形。
函数信号发生器在生产实践和科技领域有着广泛的应用。
本设计是采用了EDA技术设计的函数信号发生器。
此函数信号发生器的实现是基于VHDL语言描述各个波形产生模块,然后在QuartusⅡ软件上实现波形的编译,仿真和下载到Cyclone芯片上。
基于DDS技术的信号发生器
1.实验目的
1.掌握DDS频率合成原理 ;
2.掌握正弦信号产生的原理 ;
3.掌握MCU8951 IP核合成任意频率脉冲信号的设计;
4.掌握给定一个频率字或相位字用按键改变频率合成正弦信号的设计。
5.QuartusⅡ软件上实现波形的编译,仿真和下载到Cyclone芯片上。
2.实验原理
2.1实验的总体结构
电路图
直接数字频率合成器DDS的组成见图1.
图1DDS原理简图
它由相位累加器、只读存储器(ROM)、数模转换器(DAC)及低通平滑滤波器(LPF)构成.在时钟脉冲的控制下,频率控制字K由累加器累加得到相应的相码,相码寻址ROM进行相码-幅码变换输出不同的幅度编码,再经过数模变换器得到相应的阶梯波,最后经低通波器对阶梯波进行平滑,即得到由频率控制字K决定的连续变化的输出波形。
2.2实验的理论基础和原理
DDS是以数控振荡器的方式产生频率、相位和幅度可控制的信号波形。
电路结构包括基准时钟、相位累加器、幅度/相位转换电路(ROM)、D/A转换器(DAC)和低通滤波器,系统时钟CLK由一个稳定的晶体振荡器产生,它用于同步频率合成器的各个部分。
相位累加器是DDS的核心,它由N位加法器和N位相位寄存器级联构成,完成相位累加工作。
每输入一个时钟脉冲CLK,加法器将输入的N位频率控制字和相位寄存器输出的累加相位数据相加,产生新的相位数据,并送至相位累加器的输入端。
然后,相位寄存器将新相位数据反馈到加法器的输入端,使加法器在下一个时钟的作用下继续产生新的相位数据。
当相位寄存器溢出时,将整个相位累加器置零,从而完成一个周期性的输出。
相位累加器的溢出频率即为DDS的合成输出信号频率。
性能指标:
1.输出带宽
当频率控制字K=1时(即:
向相位累加器中送入的累加步长为1),则输出的最低频率为
式中,fc为系统时钟频率,N为相位累加器的位数。
当相位累加器位数很高时,最低输出频率可达到mHz,甚至更低,可以认为DDS的最低合成频率为零频。
DDS最高输出频率受限于系统时钟频率和一个周波波形系列点数,在时钟频率为fc、采样点数为M(存储深度)下,最高输出频率为:
这是一个比较大的数值,所以,DDS相对其它频率合成技术,其带宽得到了极大的提高。
2.频率、幅度、相位分辨率
频率分辨率也就是频率的最小步进量,其值等于DDS的最低合成频率。
根据相位累加器位数的不同有着不同的频率分辨率。
由DDS最低合成频率接近零频知,其频率分辨率可达到零频。
所以DDS相比其它频率合成技术有精密的频率分辨率。
精细频率分辨率使得输出频率十分逼近连续变化。
幅度的分辨率决定于幅度控制的DAC的位数:
式中,N为幅度控制的DAC的位数,Vref为幅度控制的DAC的参考电压。
相位差的分辨率与一个周波采样点数M成反比,
从上可看出,DDS技术可根据实际需要,对频率分辨率、幅度分辨率以及相位差分辨率进行灵活控制。
3.实验内容
(1)实验内容1:
根据《EDA技术实用教程》中的相关内容,完成仿真,并由仿真结果进一步说明DDS的原理。
完成编译和下载。
选择模式1;其中键2、键1输入8位频率字FWORD;键4、键3输入8位相位字PWORD(此例中只将相位字设为常数);利用GW48系统ADDA板上的10位D/A输出波形,用示波器观察输出波形(示波器探头接ADDA板的“PA”输出口)。
注意,FPGA(EP1C3)与ADDA(设为B型)板上A/D的引脚连接锁定参考附图1。
注意打开实验箱上的+/-12V电源。
实验中,clock0可以选择12MHz或50MHz作为A/D的工作频率;按动键2,键1可以看到输出正弦波频率的提高。
(2)实验内容2:
例11-14后的程序将32位频率字作了截断,是8位。
如果不作截断,修改其中的程序,并设法在GW48实验系统上完成实验(提示,增加2个锁存器与单片机通信)。
(3)实验内容3:
将上例改成频率可数控的正交信号发生器,即使电路输出两路信号,且相互正交,一路为正弦(sin)信号,一路为余弦(cos)信号(此电路可用于正交方式的信号调制解调)。
(4)实验内容4:
利用上例设计一个FSK信号发生器,并硬件实现之。
(5)实验内容5:
利用VHDL完成10位输出数据宽度的移相信号发生器的设计,其中包括设计正弦波形数据MIF文件(数据深度1024、数据类型是10进制数);给出仿真波形。
最后进行硬件测试,对于GW48系统,选择模式1:
时钟接法参考以上实验1-28);用键4、3控制相位字PWORD输入,键2、1控制频率字FWORD输入。
观察他们的李萨如图形。
然后修改设计,增加幅度控制电路(可以用一乘法器控制输出幅度);最后可利用MATLAB设计和硬件实现。
4.实验设计与测试
4.1频率控制模块
代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFREQUENCYIS
PORT(CLK:
INSTD_LOGIC;
A:
INSTD_LOGIC_VECTOR(4DOWNTO0);--设置A的初值
FOUT:
OUTSTD_LOGIC);
END;
ARCHITECTUREoneOFFREQUENCYIS
SIGNALFULL:
STD_LOGIC;
BEGIN
P_REG:
PROCESS(CLK)
VARIABLECNT1:
STD_LOGIC_VECTOR(4DOWNTO0);
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCNT1="11111"THEN
CNT1:
=A;--当CNT1计数计满时,输入数据D被同步预置给计数器CNT1
FULL<='1';--同时使溢出标志信号FULL输出为高电平
ELSECNT1:
=CNT1+1;--否则继续作加1计数
FULL<='0';--且输出溢出标志信号FULL为低电平
ENDIF;
ENDIF;
ENDPROCESSP_REG;
P_DIV:
PROCESS(FULL)
VARIABLECNT2:
STD_LOGIC;
BEGIN
IFFULL'EVENTANDFULL='1'THEN
CNT2:
=NOTCNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反
IFCNT2='1'THENFOUT<='1';
ELSEFOUT<='0';
ENDIF;
ENDIF;
ENDPROCESSP_DIV;
END;
模块元件图
4.2按键选择模块
代码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYBUTTONIS
PORT(d:
INSTD_LOGIC_VECTOR(2DOWNTO0);
a,b,c:
OUTSTD_LOGIC);
END;
ARCHITECTUREONEOFBUTTONIS
BEGIN
PROCESS(d)
BEGIN
CASEdIS
WHEN"000"=>NULL;
WHENOTHERS=>a<=d(0);--dlt
b<=d
(1);--sqr
c<=d
(2);--sin
ENDCASE;
ENDPROCESS;
END;
模块元件图
4.3正弦波信号产生模块
代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitysinis
port(clk:
instd_logic;--正弦信号的相位
clr:
instd_logic;
d:
outstd_logic_vector(7downto0));--正弦函数值
end;
architectureoneofsinis--结构体开始
begin
process(clk,clr)
variablenum:
std_logic_vector(5downto0);
begin
ifclr='0'then
d<="00000000";
elseifclk'eventandclk='1'then
ifnum="111111"then
num:
="000000";--每加到111111时清零
else
num:
=num+1;
endif;
endif;
endif;
casenumis--四个输入,共有16总相位可能360/64=5.625
when"000000"=>d<=CONV_STD_LOGIC_VECTOR(128,8);--每5.625取一个点
when"000001"=>d<=CONV_STD_LOGIC_VECTOR(141,8);--共64个点
when"000010"=>d<=CONV_STD_LOGIC_VECTOR(153,8);
when"000011"=>d<=CONV_STD_LOGIC_VECTOR(165,8);
when"000100"=>d<=CONV_STD_LOGIC_VECTOR(177,8);
when"000101"=>d<=CONV_STD_LOGIC_VECTOR(188,8);
when"000110"=>d<=CONV_STD_LOGIC_VECTOR(199,8);
when"000111"=>d<=CONV_STD_LOGIC_VECTOR(209,8);
when"001000"=>d<=CONV_STD_LOGIC_VECTOR(218,8);
when"001001"=>d<=CONV_STD_LOGIC_VECTOR(227,8);
when"001010"=>d<=CONV_STD_LOGIC_VECTOR(234,8);
when"001011"=>d<=CONV_STD_LOGIC_VECTOR(240,8);
when"001100"=>d<=CONV_STD_LOGIC_VECTOR(246,8);
when"001101"=>d<=CONV_STD_LOGIC_VECTOR(250,8);
when"001110"=>d<=CONV_STD_LOGIC_VECTOR(253,8);
when"001111"=>d<=CONV_STD_LOGIC_VECTOR(254,8);
when"010000"=>d<=CONV_STD_LOGIC_VECTOR(255,8);
when"010001"=>d<=CONV_STD_LOGIC_VECTOR(254,8);
when"010010"=>d<=CONV_STD_LOGIC_VECTOR(253,8);
when"010011"=>d<=CONV_STD_LOGIC_VECTOR(250,8);
when"010100"=>d<=CONV_STD_LOGIC_VECTOR(246,8);
when"010101"=>d<=CONV_STD_LOGIC_VECTOR(240,8);
when"010110"=>d<=CONV_STD_LOGIC_VECTOR(234,8);
when"010111"=>d<=CONV_STD_LOGIC_VECTOR(227,8);
when"011000"=>d<=CONV_STD_LOGIC_VECTOR(218,8);
when"011001"=>d<=CONV_STD_LOGIC_VECTOR(209,8);
when"011010"=>d<=CONV_STD_LOGIC_VECTOR(199,8);
when"011011"=>d<=CONV_STD_LOGIC_VECTOR(188,8);
when"011100"=>d<=CONV_STD_LOGIC_VECTOR(177,8);
when"011101"=>d<=CONV_STD_LOGIC_VECTOR(165,8);
when"011110"=>d<=CONV_STD_LOGIC_VECTOR(153,8);
when"011111"=>d<=CONV_STD_LOGIC_VECTOR(141,8);
when"100000"=>d<=CONV_STD_LOGIC_VECTOR(128,8);
when"100001"=>d<=CONV_STD_LOGIC_VECTOR(115,8);
when"100010"=>d<=CONV_STD_LOGIC_VECTOR(103,8);
when"100011"=>d<=CONV_STD_LOGIC_VECTOR(91,8);
when"100100"=>d<=CONV_STD_LOGIC_VECTOR(79,8);
when"100101"=>d<=CONV_STD_LOGIC_VECTOR(68,8);
when"100110"=>d<=CONV_STD_LOGIC_VECTOR(57,8);
when"100111"=>d<=CONV_STD_LOGIC_VECTOR(47,8);
when"101000"=>d<=CONV_STD_LOGIC_VECTOR(38,8);
when"101001"=>d<=CONV_STD_LOGIC_VECTOR(29,8);
when"101010"=>d<=CONV_STD_LOGIC_VECTOR(22,8);
when"101011"=>d<=CONV_STD_LOGIC_VECTOR(16,8);
when"101100"=>d<=CONV_STD_LOGIC_VECTOR(10,8);
when"101101"=>d<=CONV_STD_LOGIC_VECTOR(6,8);
when"101110"=>d<=CONV_STD_LOGIC_VECTOR(3,8);
when"101111"=>d<=CONV_STD_LOGIC_VECTOR(1,8);
when"110000"=>d<=CONV_STD_LOGIC_VECTOR(0,8);
when"110001"=>d<=CONV_STD_LOGIC_VECTOR(1,8);
when"110010"=>d<=CONV_STD_LOGIC_VECTOR(3,8);
when"110011"=>d<=CONV_STD_LOGIC_VECTOR(6,8);
when"110100"=>d<=CONV_STD_LOGIC_VECTOR(10,8);
when"110101"=>d<=CONV_STD_LOGIC_VECTOR(16,8);
when"110110"=>d<=CONV_STD_LOGIC_VECTOR(22,8);
when"110111"=>d<=CONV_STD_LOGIC_VECTOR(29,8);
when"111000"=>d<=CONV_STD_LOGIC_VECTOR(38,8);
when"111001"=>d<=CONV_STD_LOGIC_VECTOR(47,8);
when"111010"=>d<=CONV_STD_LOGIC_VECTOR(57,8);
when"111011"=>d<=CONV_STD_LOGIC_VECTOR(68,8);
when"111100"=>d<=CONV_STD_LOGIC_VECTOR(79,8);
when"111101"=>d<=CONV_STD_LOGIC_VECTOR(91,8);
when"111110"=>d<=CONV_STD_LOGIC_VECTOR(103,8);
when"111111"=>d<=CONV_STD_LOGIC_VECTOR(115,8);
whenothers=>null;
endcase;
endprocess;
end;
模块元件图
4.4总体测试
正弦波波形
5.实验结论及总结
从仿真及实验结果可以看出,本设计较好地满足了设计要求。
同时,由于采用模块化的设计方法,系统中的各个电路均可独立实现各自的功能从而使系统具有较强的可移植性和维护性,这也为系统的功能扩展和升级提供了很大的便利。
由于DDS采用全数字结构,不可避免地引入了散杂。
其来源主要由三个:
相位累加器相位舍入误差造成的散杂;幅度量化误差造成的散杂
DDS技术的频率和幅度可控任意波形发生器系统,结果显示该信号发生器系统软硬件电路设计的正确性和可靠性,具有调频和调幅功能。
关于信号发生器相位的控制,有待进一步研究。
参考文献
[1]余锡存,曹国华.单片机原理及接口技术(第二版).西安:
西安电子科技大学出版社,2007.
[2]耿彩凤,石祥滨.C语言程序设计基础与实践.辽宁:
辽宁大学出版社,2004.
[3]基于FPGA的双路可移相任意波形发生器[J],李航、曲永志、雷霆,武汉理工大学自动化学院,2-5;
[4]基于FPGA 的DDS 调频信号的研究与实现[J],石伟,宋跃,李琳,湖南科技大学,中图分类号:
TP274;TM935,3-4;
[5]EDA/SOPC技术实验讲义[Z],杭州康芯电子有限公司,12-14;
[6]全国大学生电子设计竞赛试题精选[M],陈永真 等编著,电子工业出版社
附图
附图1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 DDS 技术 信号发生器 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)