1、电子线路课程设计实验报告 摘要本次课程设计的主要目的是学习使用FPGA设计直接数字频率合成器(DDS)。实验的主要内容是使用DDS的方法设计一个具有清零、使能频率控制、相位控制、输出多种波形等功能任意频率的信号发生器,在设计之余,还完成了ROM空间的节省、正弦波精度的提高等设计,并设计了一个将电位信号0、1通过频率、幅度、相位表示的电路。利用Quartus II完成设计、仿真等工作,并下载至smartSOPC实验平台进行硬件测试,通过示波器观察输出信号波形。实验结果与理论值相符,证明了DDS技术是一项非常实用的技术,它可以广泛应用于数字通信系统。关键词:DDS ROM 正弦波 QuartusI
2、I smartSOPCAbstractThe main purpose of this curriculum design is encouraging us to learn to design a direct digital frequency synthesizer by using FPGA. The report mainly talks about how to design a direct digital frequency synthesizer with the function of reseting, frequency and phase controlling ,
3、 multiple waves output . In addition, I also complete the design of ROM space saving and improving the accuracy of sine wave. Whats more, I design an modeling circuit of 2FSK, 2PSK and 2ASK based on DDS . The design and simulation work is completed with the help of QuartusII. The final system circui
4、t is downloaded to the smartSOPC platform to undergo hardware test. And the output wave can be seen through oscilloscope. The experiment result is close to the theoretical result. DDS is proved to be a quite useful technology which can be widely applied in digital communication system. Keywords: Dir
5、ect digital synthesizer ROM Sine wave 2FSK 2PSK 2ASK QuartusII smartSOPC 目 录实验设计要求41.设计的基本要求42.设计的提高要求4一、直接型数字频率合成器51、方案论证51.1整体电路的工作原理51.2DDS电路工作的基本框图62、各子模块设计原理62.1脉冲发生电路62.1.1 48分频电路62.1.2 1000分频电路72.1.3 2分频电路82.1.4各部分电路封装 92.1.5 电路总电路图及其封装92.2频率与相位调节电路92.2.1 电路设计原理92.2.2 模256计数器102.2.3 二进制码转换为BC
6、D码102.3累加器11 2.3.1 电路设计原理112.3.2 12位加法器 122.3.3 12位寄存器 122.3.4 部分电路图封装122.5波形存储器132.6测频电路182.6.1 设计原理182.6.2 测频电路电路图及封装图192.7动态显示202.7.1 模8计数器202.7.2 动态译码显示202.7.3 电路的封装203、电路的仿真213.1仿真用的电路图213.2 仿真波形224、总的电路图235、下载246、实际波形图及频率316.1 实际波形图326.2 实际频率32二、对以上方案的改进261、ROM空间的节省26 1.1 设计原理261.2 ROM数据文件的生成2
7、61.3 正弦波的计算261.3.1 地址部分261.3.1.1 12位地址变换器271.3.1.2 地址部分总的电路图271.3.2 结果部分271.3.2.1减法电路281.3.2.2结果部分电路图281.3.3该部分封装图281.4三角波的计算291.5锯齿波的计算291.6方波的计算291.7电路的波形30三、二进制信息调制311、设计原理312、各子模块设计312.1序列信号发生器322.2 2FSK模块322.3 2PSK模块.332.3 2ASK模块332.4各部分封装图333、电路总图.34实验总结及感想341、实验中遇到的问题及解决方法342、实验感想35参考文献36实验设计
8、要求1.设计基本要求1.1利用QuartusII软件和SmartSOPC实验箱实现DDS的设计;1.2 DDS中的波形存储器模块用Altera公司的Cyclone III系列FPGA 芯片中的ROM实现,ROM结构配置成21210类型;1.3 具体参数要求:频率控制字K取4位;基准频率fc=1MHz,由 实验板上的系统时钟分频得到;1.4 系统具有使能功能;1.5 利用实验箱上的D/A转换器件将ROM输出的数字信号转换为 模拟信号,能够通过示波器观察到正、余弦两路波形;1.6 通过开关(实验箱上的Ki)输入DDS的频率和相位控制字, 并能用示波器观察加以验证; 2设计提高要求 2.1 通过按键
9、(实验箱上的Si)输入DDS的频率和相位控制字,以扩大 频率控制和相位控制的范围;(注意:按键后有消颤电路) 2.2在数码管上显示生成的波形频率,频率字和相位字; 2.3 充分考虑ROM结构及正弦函数的特点,进行合理的配置, 提高计算精度; 2.5设计能输出多种波形(三角波、锯齿波、方波等)的多功能波形发生器; 2.6为了节省ROM的空间,充分考虑到各波形的特点,将四种波形的数据放在同一个ROM里,每种波形只存1/4周期的波形数据; 2.7 自己添加其他功能 一、直接数字频率合成器1、方案论证 1.1整体电路的工作原理DDS的基本结构主要由相位累加器、相位调制器、正弦波数据表(ROM)、D/A
10、转换器构成。相位累加器由N位加法器N位寄存器构成。每来一个CLOCK,加法器就将频率控制字K与累加寄存器输出的累加相位数据相加,相加的结果又反馈送至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此,相位累加器在每一个时钟脉冲输入时,把频率控制字累加一次,相位累加器输出的数据作为波形存储器的相位取样地址,这样就可把存储在波形存储器内的波形抽样值进行找表查出,完成相位到幅值的转换。由于相位累加器为N位,相当于把正弦信号在相位上的精度定为N位,所以分辨率为1/2N。若系统时钟频率为fc,频率控制字K为
11、1,则输出频率为fO=fC/2N,这个频率相当于基频。输出频率为:fout=K* fC/2N当系统输入时钟频率fC不变时,输出信号的频率由频率控制字K所决定。由上式可得:K=2N*fout/fC其中,K为频率字,注意K要取整,有时会有误差。选取ROM的地址时,可以间隔选项,相位寄存器输出的位数D一般取10-16位,这种截取方法称为截断式用法,以减少ROM的容量。D太大会导致ROM容量的成倍上升,而输出精度受D/A位数的限制未有很大改善。DDS的工作流程如图1-1所示。 图1-1 1.2 DDS电路工作的基本框图 整个电路的基本设计结构图如图1-2所示。4位频率控制字K相位累加器12位相位寄存器
12、data11.0clkdata1data2q11.0result11.0data1data2result11.0q9.0q9.04位相位控制字P余弦ROM正弦ROMaddr11.0addr11.0q9.0q9.0余弦波数值输出至D/A(1)正弦波数值输出至D/A(2)clkclk基准时钟fc频率和相位均可控制的具有正弦和余弦输出的DDS核心单元电路示意图加法器 图1-22、各子模块的设计原理 2.1脉冲发生电路 通过分频电路将实验箱的48MHZ的信号经过48分频得到1MHZ、将信号经过1000分频得到1KHZ的信号,同样将1KHZ的信号经过500分频后再经过2分频得到占空比为1:1的1HZ信号
13、,最后经过2分频得到0.5HZ信号(用于测频电路)。2.1.1 48分频电路 48分频电路主要由十进制计数器74160构成模48的计数器,当计数器分别到达0101、0111时产生同步置数信号。再将信号从数据的次高位提取出来即可得到。具体的电路图如图2-1。仿真的波形图如图2-2所示。 图2-1 图 2-2 2.1.2 1000分频电路 1000分频电路是由三个74160构成的模10计数器级联而成,最后从第三个计数器的次高位提取所需信号,电路图和波形图如图2-3所示。 图2-3 2.1.3 2分频电路 2分频电路采用的是一个D触发器。电路图和波形图如图2-4和2-5所示。 图2-4 图2-52.
14、1.4 电路总的电路图及其封装 将以上各个子模块进行连接可得到如图2-6,封装图为2-7。 图2-6 图2-72.2频率与相位调节电路 2.2.1设计原理 K为相位增量,也叫频率控制字。DDS的输出频率表达式为fo=K* fC/2N,当K=1时,DDS输出最低频率(也即频率分辨率)为fc/2N,而DDS的最高输出频率由Nyquist采样定理决定,即fc/2,也就是说K的最大值为2N-1。因此,只要N足够大,DDS可以得到很细的频率间隔。要改变DDS的输出频率,只要改变频率控制字K即可。P为相位控制字。它与相位累加器的输出相加得到ROM的相位采样地址。它可以使输出波形整体平移,平移量由P控制。设
15、计频率调节模块时,用74163设计模256模块,1HZ信号输入让其变化。这里把实验要求的模16改成模256,是为了使输出频率的调节范围更大一些。该模块有清零和保持端,由开关控制,以便计数到需要值时保持或清零。输出为8位二进制码,输入到相位累加器进行累加;为了使频率字通过数码管显示出来需要在计数器后接一个码转换电路,将8位BCD码转换为10位BCD码,。同样的可以设计出相位调节模块。需要注意的是,这里的加法器是12位的,因此要将频率控制字作为12位地址的低8位输出,高4位置0,这样可以使频率调节的精度更高。而相位控制字要作为12位地址的高8位输出,低4位置0,这样可以使相位调节幅度变大,需要注意
16、的是,在数码管上显示的频率字需要乘以16之后才是最终的相位字。最好还要让K和P通过寄存器,时钟为1mhz的系统时钟,使得电路同步工作。2.2.2模256计数器 模256计数器直接采用的是两片74163级联构成,其电路图和波形图如图2-9和2-10。 图2-9 图2-102.2.3二进制码转换为BCD代码 二进制代码转换为BCD码有现成的芯片74185,而且厂商也提供了电路的连接方式,所以该部分的电路图如图2-11。 图2-11 2.3累加器 2.3.1设计原理 相位累加器由12位加法器与12位寄存器级联构成。每来一个时钟脉冲,加法器将频率控制字K与寄存器输出的累加相位数据相加,再把相加后的结果
17、送至寄存器的数据输入端。寄存器将加法器的上一个时钟作用后所产生的相位数据反馈至加法器的输入端,以使加法器在下一个时钟作用下继续与频率控制字进行相加。这样,相位累加器在时钟作用下,进行相位累加。当相位累加器累加满量时就会产生一次溢出,完成一个周期性的动作。累加器的工作原理图如图2-12。 图2-12 2.3.2 12位加法器 12位加法器采用的是用3片二进制的全加器7483组成,具体的电路图如图2-13。 图2-13 2.2.4 寄存器 12位寄存器部分也可采用三片4位寄存器74173级联构成,电路图如下图。 2.3.3 部分电路图的封装 由于寄存器部分在2.2.4已经介绍过了,所以在此就不再重
18、复,而且在设计电路时并没有将这部分封装在一起,而是将它们分开了,所以只能给出加法器的封装图,如图2-14。 图2-14 2.5波形存储器 2.5.1设计原理 为了能让电路输出正弦波、余弦波、三角波、锯齿波和方波,我做了5块不同的ROM分别存放这五种波形一个周期内的数据。考虑模数转换模块包含两块相同的DAC板,正弦波的输出值直接在DAC0板,其余四种波的输出值经过一个4选一数据选择器,由两个开关控制选择波形输出到DAC1板。2.5.2 ROM数据文件的生成 由于模数转换部分所允许的数据宽度为10位,所以ROM中存储的数据宽度应为10位,而累加器的输出为12位,所以ROM中存储的数据个数为4096
19、,本次实验采用的是通过C+软件生成对应的数据值,具体的程序如下:正弦波: FL=INT(SIN(2*3.1415926*AL/4096)+1)*1023)/2) 26 余弦波:FL=INT(COS(2*3.1415926*AL/4096)+1)*1023)/2)三角波:锯齿波: 方波:FL=1023 0=L=1023,2046=L=3072 FL=0 1023=L=2046,3072=L=4096 图2-252.5.3 ROM的设置在元器库中选取LPM-ROM,设置ROM的信息,数据宽度为10bits,数据个数为4096;设置ROM为寄存器输出,不需要时钟和异步清零信号;指定ROM的初始化数据
20、来源,选择刚刚所生成的mif文件。然后点击“finish”即可生成ROM单元 2.5.4 该模块电路总图 2.5.4.1正弦波的ROM 由于正弦波单独占用一块模数转换模块,所以需将其单独放置,其电路也很简单,如图2-15。 图2-15 2.5.4.2其余四种波形 另外四种波形的输出需通过另外一块模数转换器,所以需要将波形数据通过数据选择器选择输出,数据选这器采用的是,数据数设为十位,通过开关选择输出的波形数据,总共有4路数据,需要两个开关。具体的电路图及其封装如下图所示。 2.6测频电路 2.6.1设计原理测频就是计算1秒钟内脉冲的个数。我们利用计数器和锁存器实现这一功能。通过观察可知,每当输
21、出一个周期的波形时,波形数据输出的最高位也变化一周期,因此可以用它q9来表征输出波形的频率。我们用计数器来统计输出波形的频率,共有8位数码管,所以对应用8片十进制计数器74160,由于通过计算可知本次设计的电路的最高频率为125KHZ,实际用不到这么多数码管,但是留着方便以后扩展,1HZ信号经过2分频后作为测频脉冲。将0.5Hz脉冲送入锁存器的时钟端,0.5Hz反相延时后的脉冲送入计数器的清零端。这样就使计数器在2s的脉冲周期内,1s内清零,1s内计数。由于锁存器的脉冲和计数器的脉冲是反相的,且有一定的延时,所以当锁存器有效脉冲来到时,计数器是计数的末状态,锁存器就锁存前1s内计数器的计数信号
22、。紧接着计数器进入清零状态,等待下一秒的计数。这样就完成了1s内的脉冲计数,再将锁存器的输出送入显示电路,就可以在数码管上显示波形频率了。测量原理图和工作的波形图如图2-16和2-17。 图2-16 图2-17 2.6.2测频电路电路图及封装图 测频电路总的电路图如图2-18,由于电路较大,所以给出其中一个单元的电路,最终的电路时候这样的单元电路级联而成,单元电路有计数器和寄存器组成,封装图和单元电路图如图2-18。 图2-18 2.7动态显示 显示电路由数据选择器74151、译码器74138、显示译码器7447、计数器和数码显示管组成。因为每一位数需要四位二进制码来表示,所以需要选用四片74
23、151数据选择器。为了实现动态显示则必需有一个模7计数器,为了方便后面的扩展。不妨用模8计数器亦不会影响计时电路的显示。故选择74161作为计数器,低三位作为数据选择器和74138译码器的输入。而74138译码器输出接到数码管的使能端。74160以1KHZ的频率工作。由于人眼的滞留效应,会觉得8个数码管一直是亮的。以此来实现动态显示。 2.7.1 模8计数器 模8计数器原理不再重复,电路图如图2-19,输出主要是用来选择现实的数据。 图2-192.7.2 动态译码显示 原理在前面已经叙述过,所以此处直接给出电路图,如图2.7.3 电路的封装 电路的封装如图2-30,左图为模8计数器,右图为动态
24、显示译码电路。 图2-303、电路的仿真 仿真的步骤:将要仿真的原理图文件进行置顶编译,然后新建一个“Vector Waveform file”文件,生成波形文件。左键双击节点区空白处,在弹出的菜单中选Node Finder,在弹出的对话框中选择要观测的节点。选FileGrid Size和FileEnd Time,设置相应选项,并给输入引脚加上适当的信号。然后,选FileSave保存。接着选择主菜单中的processing项,在弹出的对话框中选择simulator tool选项。若要进行功能仿真,首先要点击Generate Functional Simulation Netlist选项。各模块
25、的仿真波形在上面已经给出,以下是连接后总电路的仿真结果。 3.1仿真用的电路图 电路仿真时频率直接由外部输入,频率字和相位字也直接由外部输入,仿真用的电路图如图3-1,而且开关也不需要经过消颤直接接入即可。 图3-13.2仿真波形(1)正弦波与余弦波 如图3-2,开关K4、K5为00。 图3-2(2)正弦波与三角波 如图3-3,开关K4、K5为01。 图3-3(4) 正弦波与锯齿波如图3-5,开关K4、K5为11。 图3-4 (3)正弦波与方波 如图3-4,开关K4、K5为10。 图3-5从以上仿真波形可知电路的设计是正确的4、最终总的电路图电路最终总的电路图如图4-1所示。 图4-15、下载
26、 (1) 在主菜单Assignments中选择Device项,在弹出的对话框中选择相应的器件EP1C12Q240C8。再选中Device and Pin Options选项,在弹出的对话框中选择Configuration选项,在下拉框中选择EPCS4;选择Unused Pins选项,在下拉框中选择As input tri-stated选项。 (2) 在主菜单Assignments 选“Pins”,打开平面布置图编辑器窗口,将设计的电路图中的各输入输出锁定在相应的管脚上。(3) 在主菜单选FileSave保存文件,再次编译项目,生成.sof文件,以用于下载。(4) 在主菜单Tools 选Prog
27、rammer,在弹出的对话框中单击start,即可完成下载。6、实际波形图及频率 6.1实际波形 (1)正弦波与余弦波 (2)正向与三角波 如图6-1。 如图6-2。 图6-1 图6-2 (3)正弦波与方波 (4)正弦波与锯齿波 如图6-3 如图6-4 图6-3 图6-46.2实际频率 理论频率计算公式:fout=K* fC/2N,可得到下表: 频率控制字理论输出频率示波器显示频率测频显示频率7170819531942 实际测得频率存在一定误差。 二、对以上方案的改进1、ROM空间的节省 1.1设计原理 考虑到正余弦、三角波、锯齿波和方波在一个周期内的波形都具有很强的对称性,我们可以在ROM中只存储1/4周期的波形,剩下3/4周期的波形可以利用对称性,通过前1/4周期的波形计算得到。这里各取正弦、三角波、锯齿波和方波的前1/4周期数据,整合到一个深度为4096、位数为10的ROM中。这样输出不同波形时所查找的ROM相同,大大节省了ROM得空间。因为查找1/4周期波形的数据只需要低10位地址即可,高2位地址可以通过置数来选择要查找的波形。00正弦,01三角波,10锯齿波,11方波。 1.2 RO
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922