DDS直接数字频率合成器.docx
- 文档编号:25311782
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:48
- 大小:844.32KB
DDS直接数字频率合成器.docx
《DDS直接数字频率合成器.docx》由会员分享,可在线阅读,更多相关《DDS直接数字频率合成器.docx(48页珍藏版)》请在冰豆网上搜索。
DDS直接数字频率合成器
南京理工大学
直接数字频率合成器
实验报告
作者:
学号:
学院(系):
专业:
指导老师:
实验日期:
2013年11月
直接数字频率合成器(DDS)
摘要
本次课程设计的主要目的是学习使用FPGA设计直接数字频率合成器(DDS)。
实验的主要容是使用DDS的方法设计一个具有清零、使能频率相位控制、输出多种波形等功能任意频率的信号发生器,在设计之余,还完成了ROM空间的节省、提高等设计,并设计了一个基于DDS的AM调制电路。
利用Quartus
完成设计、仿真等工作,并下载至smartSOPC实验平台进行硬件测试,通过示波器观察输出信号波形。
实验结果与理论值相符,证明了DDS技术是一项非常实用的技术,它可以广泛应用于数字通信系统。
关键词:
DDSROM正弦波AM调制
Abstract
ThemainpurposeofthiscurriculumdesignisencouragingustolearntodesignadirectdigitalfrequencysynthesizerbyusingFPGA.Thereportmainlytalksabouthowtodesignadirectdigitalfrequencysynthesizerwiththefunctionofresetting,frequencyandphasecontrolling,multiplewavesoutput.Inaddition,IalsocompletethedesignofROMspacesaving,andIdesignanAMmodelingcircuitbasedonDDS.ThedesignandsimulationworkiscompletedwiththehelpofQuartusII.ThefinalsystemcircuitisdownloadedtothesmartSOPCplatformtoundergohardwaretest.Andtheoutputwavecanbeseenthroughoscilloscope.Theexperimentresultisclosetothetheoreticalresult.DDSisprovedtobeaquiteusefultechnologywhichcanbewidelyappliedindigitalcommunicationsystem.
Keywords:
DirectdigitalsynthesizerROMSinewaveAMmodule
1、实验目的……………………………………………………………………1
2、实验容和设计要求………………………………………………………1
2.1实验容……………………………………………………………………1
2.2设计要求……………………………………………………………………1
3、直接频率合成器(DDS)……………………………………………………2
3.1实验原理……………………………………………………………………2
3.2脉冲发生电路………………………………………………………………3
3.3消颤电路……………………………………………………………………4
3.4频率和相位调节电路………………………………………………………5
3.5累加器………………………………………………………………………6
3.6波形存储器(ROM表)设计………………………………………………8
3.7测频电路……………………………………………………………………11
3.8显示电路……………………………………………………………………13
3.9总电路图
(1)………………………………………………………………14
4、节省ROM空间………………………………………………………………17
4.1设计思路……………………………………………………………………17
4.2正弦波的计算………………………………………………………………18
4.3三角波计算…………………………………………………………………20
4.4锯齿波计算…………………………………………………………………20
4.5方波计算……………………………………………………………………22
4.6四种计算波形合并…………………………………………………………22
4.7总电路图
(2)………………………………………………………………23
5、基于DDS的AM调制器的设计…………………………………………24
5.1AM调制原理…………………………………………………………………24
5.2调制信号与载波信号的产生………………………………………………25
5.3波形存储器(ROM表)设计………………………………………………29
5.4调制度的确立………………………………………………………………30
5.5加法器与乘法器……………………………………………………………30
5.6显示电路……………………………………………………………………30
5.7AM调制电路总图……………………………………………………………31
6、节省电路的改进……………………………………………………………32
7、实验中遇到的问题及解决办法…………………………………………33
8、实验收获和感受……………………………………………………………33
9、致…………………………………………………………………………34
10、参考文献……………………………………………………………………34
11、附录………………………………………………………………………35
1、实验目的
1.学习使用QuartusII软件做复杂逻辑电路的设计。
2.学习使用FPGA实现直接数字频率合成器(DDS)。
3.熟悉SmartSOPC实验箱硬件测试时的基本使用方法。
二、实验容和设计要求
2.1实验容
本实验的容是使用DDS的方法设计一个任意频率的正弦信号发生器,利用Quartus
完成设计、仿真等工作,并进行硬件测试,通过示波器观察输出信号波形。
在此基本的容完成之余,我设计一下几点附加功能:
1)测频电路;2)可以输出多种不同的波形;3)节省了ROM空间;4)AM调制器的设计。
2.2设计要求
1.对于正弦波的发生器,基本要可以通过调节频率控制字和相位控制字
来调节波形的频率和相角。
本实验中,考虑到具体情况,频率控制字和相
位控制字均取4位,且可以在数码显示管显示。
2.对于测频电路,实际上就是测量产生波形的频率,并与理论值,和示波器
上显示的频率做比较,求出相对误差。
3.输出多种波形和节省ROM空间可以放在一起实现,将一个ROM表分成4部分,
每一部分存放余弦、三角、方波以及锯齿波的各1/4周期的波形,通过合适
的运算就可以得到各自的整个周期的波形。
当然,其实可以只采用一个ROM
表的1/4来存放余弦波的1/4周期,然后根据其他波形和余弦波的关系,通
过适当的运算,也可以产生其他类型的波。
4.AM调制器。
根据前面设计的DDS,可以产生不同频率的波形,选取其中两个
不同频率的波形,分别作为载波和调幅波,经过加法器和乘法器,就可以
实现AM调制,实验中,由于载波的频率较大,本实验重新对载波的频率控
制字设为8位。
3、直接频率合成器(DDS)
3.1实验原理
DDS的基本结构主要由相位累加器、相位调制器、正弦波数据表(ROM)、D/A转换器构成。
相位累加器由N位加法器N位寄存器构成。
每来一个CLOCK,加法器就将频率控制字fword与累加寄存器输出的累加相位数据相加,相加的结果又反馈送至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。
这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。
由此,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据作为波形存储器的相位取样地址,这样就可把存储在波形存储器的波形抽样值进行找表查出,完成相位到幅值的转换。
由于相位累加器为N位,相当于把正弦信号在相位上的精度定为N位,所以分辨率为
。
若系统时钟频率为
,频率控制字fword为1,则输出频率为
,这个频率相当于"基频"。
若fword为K,则输出频率为:
当系统输入时钟频率
不变时,输出信号的频率由频率控制字K所决定。
由上式可得:
其中,K为频率字,注意K要取整,有时会有误差。
选取ROM的地址时,可以间隔选项,相位寄存器输出的位数D一般取10-16位,这种截取方法称为截断式用法,以减少ROM的容量。
D太大会导致ROM容量的成倍上升,而输出精度受D/A位数的限制未有很大改善。
DDS的工作流程如下图所示。
图3-1-1DDS工作流程图
(1)
图中,
为时钟频率,N为相位累加器的字长,设输出频率f。
相位累加器由加法器和D触发器级联组成。
在时钟脉冲
的控制下,对输入频率控制字K进行累加,累加满量时产生溢出。
相位累加器的输出对应于该时刻合成周期信号的相位,并且这个相位是周期性的,当地址在
之间变化时,相位在
围变化。
从而得到周期的离散的幅度编码,经过D/A转换器得到模拟的阶梯电压,最后经低通滤波器,对输出波形进行平滑处理,得到连续变化的所需频率的波形。
如下图所示:
图3-1-2DDS工作流程图
(2)
3.2脉冲发生电路
脉冲发生电路主要是将实验室提供的48MHz信号分成所需要的各种频率的信号,其设计原理与数字钟的设计原理类似,这里不再做过多的介绍。
首先设计二分频,三分频,十分频等各种分频电路,通过将设计的分频电路进行适当的级连,就可以得到所需的频率信号。
本实验所需信号为1MHz,1kHz,1Hz以及0.5Hz。
分频电路的总图为:
图3-2-1脉冲发生电路总图
其封装为:
图3-2-2脉冲发生电路封装
3.3消颤电路
消颤电路主要是去除开关抖动对电路的影响,采用D触发器来实现,原理图如下:
图3-3-1消颤电路
其封装为:
图3-3-2消颤电路封装
3.4频率和相位调节电路
K为相位增量,也叫频率控制字。
DDS的输出频率表达式为
,当K=1时,DDS输出最低频率(也即频率分辨率)为
,而DDS的最高输出频率由Nyquist采样定理决定,即
,也就是说K的最大值为
。
因此,只要N足够大,DDS可以得到很细的频率间隔。
要改变DDS的输出频率,只要改变频率控制字K即可。
P为相位控制字。
它与相位累加器的输出相加得到ROM的相位采样地址。
它可以使输出波形整体平移,平移量由P控制,故只需改变P就使波形平移。
本实验中N取12.
(1)频率控制字的产生
本实验中频率控制字为4位,其围为0000—1111,一共16个数字,故只需用一片74163模16计数器就可以完成频率字的设计。
考虑到频率字应在数码管上显示,而76163产生的是二进制数,非BCD码,故我们需要将二进制数转换成相对应的BCD码。
此时有两种办法,第一种就是设计这样一个转换电路,完成二进制到BCD码的转换;第二种是用两片74160构造一个模16计数器,使74163和两片74160计数器同时开始计数,那么,74160产生的数字就是对应74163产生二进制数的BCD码。
此时,我们采用第二种办法来实现。
实验原理图如下:
图3-4-1模16计数器及其BCD码电路
图中,三片计数器的清零端以及置数端连在一起,其目的是使三片计数器同步。
下面为仿真波形:
图3-4-2频率字输出波形
观察波形可以知道该思路可行,其中,o[4..1]用作频率字进入加法器,pxs1[4..1]和pxs2[4..1]输入到译码显示电路。
由于N=12,而产生的频率控制字只有四位,故将产生的频率控制字高位补零,扩展到12位。
(2)相位控制字的产生
相位控制字和频率控制字的产生相同,只不过在输入累加器的时候,4位相位控制字扩展成12位时,其地位补零,该4位作为高四位。
其原因是使的观察波形移动的现象更明显。
对上述电路进行封装:
图3-4-3频率及相位字产生电路
3.5累加器
相位累加器由12位加法器与12位寄存器级联构成。
每来一个时钟脉冲,加法器将频率控制字K与寄存器输出的累加相位数据相加,再把相加后的结果送至寄存器的数据输入端。
寄存器将加法器的上一个时钟作用后所产生的相位数据反馈至加法器的输入端,以使加法器在下一个时钟作用下继续与频率控制字进行相加。
这样,相位累加器在时钟作用下,进行相位累加。
当相位累加器累加满量时就会产生一次溢出,完成一个周期性的动作。
下图为累加器的工作流程:
图3-5-1相位累加器的工作流程
从图像可以看出,需分别设计一个12位的寄存器和12位的加法器
(1)寄存器
12位寄存器部分也可采用三片4位寄存器74175级联构成,电路如图所示:
图3-5-212位寄存器
其封装为:
图3-5-312位寄存器封装
k5经过一个消颤电路接入到寄存器的清零端口,可以实现寄存器的清零,即可以控制波形的输出与否。
(2)加法器
12位加法器可以由3片二进制的全加器7483组成,对于加法器分为频率累加器和相位累加器,他们均为12位累加器,下面以频率累加器为例,如图所示:
图3-5-412位加法器
图中最低位的进位信号C0=0,a[11..0]是寄存器的输出,b[3..0]是频率控制字,由图像可知,对于扩展成12位的频率字,其高8位全部为0.加法器的输出结果存入寄存器。
其封装为:
图3-5-5频率加法器封装
对于相位加法器,其设计和频率加法器相同,只不过输入的相位控制字接入高位,其低8位为0,即高四位的输入b[11..8]为产生的相位控制字,这里只给出其封装电路图。
图3-5-6相位加法器封装
3.6波形存储器(ROM表)设计
(1)设计思路
为了能让电路输出正弦波、余弦波、三角波、锯齿波和方波,我做了5块不同的ROM分别存放这五种波形一个周期的数据。
其中正弦波独自在经过一个D/A转换芯片,直接输出在示波器上;余下的4种波形,做一个4选1的数据选择器,通过两个开关闭合来选择输出哪一种波形。
(2)建立ROM表
下面以正弦波为例,介绍如何产生ROM表。
用相位控制电路输出的数据作为波形存储器ROM的取样地址,进行波形的相位与幅值的转换,即可在给定的时间确定输出波形的抽样幅值。
12位的寻址ROM相当于把
的正弦函数离散成
个数值,本次实验N=12,故一共有4096个数值。
由于模数转换部分所允许的数据宽度为10位,所以ROM中存储的数据宽度应为10位,则4096个样值的幅值以10位二进制数值固化在ROM中,按照地址的不同可以输出相应相位的正弦信号的幅值。
其中相位与幅度变换原理图如下所示:
图3-6-1相位-幅度变换原理图
实验中,采用Matlab软件生成对应的数据值(无符号数)。
对于无符号数,基于数据宽度应为10位,可知ROM表中存储的数据的围应该为0—1023.据此有如下实验程序:
clear;
clc;
k=[0:
1:
4095];
y=round((sin(2*pi*k/4096)+1)/2*1023);
z=y’;
对于此实验程序,最后z矩阵里的数据就是正弦波ROM表的数据,在QuartusII软件中,建立一个*mif文件,将z矩阵里的数据拷贝到该*mif文件中。
如图所示为正弦波的部分*mif文件容:
图3-6-2正弦波的*mif文件截图
随后,在元器库中选取LPM-ROM,设置ROM的信息,数据宽度为10bits,数据个数为4096;设置ROM为寄存器输出,不需要时钟和异步清零信号;指定ROM的初始化数据来源,选择刚刚所生成的*mif文件。
然后点击“finish”即可生成ROM单元。
图3-6-3正弦波ROM表
依据相同的方法可以建立其它四种波形的ROM表(Matlab实验程序见附录)
图3-6-4其他四种波形的ROM表
将上述4种波形的ROM表接到一数据选择器上,通过开关来控制选择输出何种波形
图3-6-5其余四块ROM表的连接
如图所示,四块ROM表的地址均为相位控制电路的输出,ROM表的输出数据经过一个四选一的数据选择器,通过开关来调节地址码,从而决定输出何种波形到D/A转换芯片。
由图像可知,当开关的状态为00,输出的是余弦波,;01,输出的是三角波;10,输出的是方波;11,锯齿波。
3.7测频电路
测频就是计算1秒钟脉冲的个数。
我们利用计数器和锁存器实现这一功能。
由于累加器以频率控制字K为间隔,从0到4095计数,当累加满量时就会产生一次溢出,完成一次周期性的动作,这个周期也就是DDS信号的一个频率周期,不难发现在这样的一个周期中,累加器的最高位改变只改变了一次,因此,我们只需要统计出1S累加器最高位改变的次数就可以得到输出信号的频率了。
故将的累加器的最高位q[12]作为测频电路计数器的脉冲。
将1Hz的时钟信号二分频,得到0.5Hz。
将0.5Hz脉冲送入锁存器的时钟端,0.5Hz反相延时后的脉冲送入计数器的清零端。
这样就使计数器在2s的脉冲周期,1s清零,1s计数。
由于锁存器的脉冲和计数器的脉冲是反相的,且有一定的延时,所以当锁存器有效脉冲来到时,计数器是清零状态,锁存器就锁存前1s计数器的计数信号。
这样就完成了1s的脉冲计数,再将锁存器的输出送入译码显示电路,就可以在数码管上显示波形频率了。
具体的原理图如下图所示:
图3-7-1测频原理图
据上图可以看出,在0.5hz脉冲中,计数器先计一秒的数据,随后锁存器将数据锁存,我们只需将锁存器锁存的数据显示在数码显示管即可。
根据以上原理,设计出了一下的测频电路,如图
图3-7-2测频电路图
对于上图所示的电路,由DDS的原理可知,产生波形的频率为
,其中本次实验中,
=1MHz,N=12,K的最大值为15,则可以计算出最大频率为3662.11,由于测量频率的误差在
的围,即最大值在
围,因此只需要采用4片74160计数器和4片74175锁存器即可以实现测频功能。
对于锁存器的输出,可以直接接到显示电路,故直接在显示管上就可以直接读出测得的频率值。
封装为:
图3-7-3测频电路的封装
3.8显示电路
显示电路主要由数据选择器74151、译码器74138、计数器、显示译码器7447和数码显示管组成。
计数器74160设计为模8的循环计数器,其输出既作为4片74151的控制端,又作为3-8译码器74138的控制端。
当计数器计数到某一个数值时,四片74151同时选取对应位的输入组成计时器某一位的BCD编码,接入显示译码器7447,与此同时根据计数器的数值,74138译码器也通过数码管的使能端选择对应位有效,从而在实验箱上显现数据。
因为实验要求只用一个显示译码器7447,所以考虑用动态扫描显示法进行数据显示,即每次只显示一位,按照一定的显示时间间隔轮流显示。
每个显示位均为四位二进制数,所以需要4片数选器,要显示的位有两位频率控制字,两位相位控制字以及四位波形频率,数选器的选择信号有三位,所以要用一个模8循环计数器作为数选器的地址选择端,供轮流选择带显示的数据,此外,还要用一个3-8译码器来选择数码管(DIG位)来显示对应的数据。
扫描的频率为1KHz,因为人眼的视觉停留,会感觉七个数码管同时显示。
此时的显示电路与数字钟的显示电路的原理相同,唯一的不同点就是此时需要显示的数有8位,故对应的计数器由模7变为模8.
如图所示,为显示电路原理图:
图3-8-1显示电路原理图
其封装为:
图3-8-2显示电路封装
显示的数值对应的为频率,相位控制字以及频率控制字。
3.9总电路图
(1)
将以上分频,测频,显示等电路按照图3-1-1的原理图连接好,得到总电路图
(1)
图3-9-1总电路图
(1)
对此电路图,去掉分频电路,和测频电路,给电路一个合适的脉冲信号,对其进行软件仿真,以检查电路的设计和ROM表是否有误,其仿真波形如下图所示:
图3-9-2正弦和余弦的仿真图像
其他波形的图像见附录。
从仿真结果可以看出,试验电路的设计与ROM表都没有问题,可以进行下载编译观察示波器是否出现正确的波形。
对该电路图进行编译,分配好管脚后,下载到实验箱中,调节相应的开关,观察示波器上显示的波形如下:
图3-9-3正弦波和三角波图3-9-4正弦波和方波
图3-9-5正弦波和锯齿波图3-8-6正弦波和余弦波
验证测频电路的正确性:
实验中选取以下几个频率字,分别用理论频率计算公式:
得到理论值,直接示波器的频率和显示译码管测得频率。
计入到下表,单位:
Hz
频率控制字
理论输出频率
示波器显示频率
测频显示频率
3
732.422
732.441
733
4
976.563
976.592
977
8
1953.125
1953.125
1954
11
2685.547
2685.63
2686
13
3173.828
3173.94
3174
表一三种频率比较
观察上表,在选取的5个频率字上,三种不同方式得到的频率略有不同,但整体间的误差不大,在
的区间围,误差可以接受,故可以认为测频电路的设计合理。
4、节省ROM空间
4.1设计思路
考虑到正余弦、三角波、锯齿波和方波在一个周期的波形都具有很强的对
称性,我们可以在ROM中只存储1/4周期的波形,剩下3/4周期的波形可以利用
对称性,通过前1/4周期的波形计算得到。
这里各取正弦、三角波、锯齿波和方
波的前1/4周期数据,整合到一个深度为4096、位数为10的ROM中。
这样输出
不同波形时所查找的ROM相同,大大节省了ROM得空间。
因为查找1/4周期波形
的数据只需要低10位地址即可,高2位地址可以通过置数来选择要查找的波形。
00—正弦,01—三角波,10—锯齿波,11—方波。
混合ROM表的建立
同样是采用Matlab程序,生成ROM表中的数据
Matlab实验程序:
clear;
clc;
K=[0:
1:
1023];
A=round((sin(2*pi*k/4096)+1)/2*1023);
B=round(k/2)+512;
C=round(k/2);
D=1023+k-k;
X=[ABCD];
Y=X’;
对于该程序段,得到的矩阵Y中是该四个波形的存储数据,对应的为正弦,
三角锯齿和三角,并以此建立*mif文件,从而建立ROM表。
对应的ROM表的封装为:
图4-1-1混合ROM表
4.2正弦波的计算
首先将ROM的高2位地址置数00,表示查找正弦波形数据。
我们只要用低
十位地址即可读取正弦波第一个1/4周期的波形数据。
第一个1/4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DDS 直接 数字 频率 合成器