1、多功能信号发生器的设计目 录0引言21设计意义32设计说明42.1设计任务42.1.1设计要求42.1.2 设计目的:43设计过程53.1系统顶层框图53.1.1信号发生器结构图53.1.2信号发生器的内部构成53.1.3系统流程图63.2设计步骤63.3系统设计74代码及仿真结果84.1各个模块的实现84.2顶层模块165小结及体会196参考文献200 引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。它能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射
2、频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。本设计采用FPGA来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。 1 设计意义本次课设要求设计一个函数信号发生器。它能产生四种波形:正弦波、方波、三角波、锯齿波。同时能在不同的频率下显示。这次设计主要是练习了分频电路的设计,ROM的设计,计数器的设计、选择电路的设计和数码显示的设计。加强了对when语句,if语句等语句的理解。拓展了对VHDL
3、语言的应用。平时练习与考试都是设计一个简单的电路,本次课设综合了好几个电路的设计。同时我也增强了对分模块设计电路的应用。对我以后的电路设计生涯都是有所帮助的!函数信号发生器是应用了VHDL语言,通过数模转换来显示波形,实现了数模转换的应用。在工作中,我们常常会用到信号发生器,它是使用频度很高的电子仪器。信号发生器是指产生所需参数的电测试信号的仪器。按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的
4、电路被称为函数信号发生器。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。凡是产生测试信号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。可见信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。它能够产生多种波形,如三角波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视
5、频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。 本设计采用EDA来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。2设计说明2.1设计任务2.1.1设计要求:基于VHDL语言,通过给定的仪器(EDA6000试验箱)设计一个多功能信号发生器, (1)能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形;(2)输出信号的频率范围为100Hz200KHz,且输出频率可以调节;(3)具有显示输出波形、频率的功能。2.
6、1.2 设计目的:1) 掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。2) 熟悉在Quartus II环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。3) 通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计。3 设计过程3.1系统顶层框图 3.1.1信号发生器结构图由于FPGA/CPLD只能直接输出数字信号,而多功能信号发生器输出的各种波形均为模拟信号,因此设计信号发生器时,需将
7、FPGA/CPLD输出的信号通过D/A转换电路将数字信号转换成模拟信号。多功能信号发生器可由信号产生电路,波形选择电路和D/A转换电路构成,如下图所示: 时钟信号信号产生电路波形选择电路D/A转换波形输出选择信号3.1.2信号发生器的内部构成数控分频器三角波波形数据正弦波波形数据方波波形数据任意波形数据数据选择器波形选择关时钟预置分频数(0-255)复位信号8位数据图1 原理框图在原理框图中,正(余)弦查找表由ROM构成,内部存有一个完整周期正(余)弦波的数字幅度信息,每个查找表的地址对应正(余)弦波幅度信号,同时输出到数模转换器(DAC)输入端,DAC输出的模拟信号经过低通滤波器(LPF),
8、可以得到一个频谱纯净的正(余)弦波。3.1.3系统流程图 当输入端有时钟信号输入时,各个信号发生器模块独立运行,独立存在,发出各种信号,这些信号作为数据选择器的输入信号,在数据选择器的作用下,波形切换到相应的模块输出,再通过数模转换器(D/A),将通过示波器显示出相应的波形图,其程序流程图如下图所示:输入信号各个信号发生器模块开始输出信号数模转换器(D/A)四选一数据选择器复位3.2设计步骤 用VHDL语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。将频率控制、分频、三角波、正弦波、方波发生邓各个模块分别用VHDL语言编程为一个子程序,并把每一个模块转换成图形文件,
9、然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框图所示。通过按键1到按键8控制频率调节f7.0,用按键6、按键7、按键8控制dlt、sin、sqr波形选通,最后把八位输出接DAC0832通过D/A转换,从示波器上就能看到波形输出。按下不同的按键输出不同的波形及频率。3.3系统设计 (1)数控分频器模块在时钟的作用下,通过预置分频数DIN,来改变输出频率。假如分频系数为N,波形存储模块存储一个周期的波形,实验里按照一个周期波形采样64个点存储在波形存储模块里。则输出频率(2)数据存储模块 (存储波形数据)数据存储模块主要存的是正弦波、三角波、锯齿波等一个周期的采样点。三角波模块可设计
10、一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为0时,当检测到时钟的上升沿进行加同一个数操作;为1时,进行减同一个数操作。DA转换采用的DA0832,输入有8个数据端,范围是0到255;而且设置64个时钟周期为一个三角波周期,所有每次加、减为1。锯齿波的存储数据与三角波类似。方波可以通过交替输出全0和全1,并给以32个周期的延时来实现。正弦波可以通过波形变换实现把 变换成的形式进行采样,然后变换成8位二进制码,存储在波形存储器里。(3)数据选择器模块在波形开关的控制下,选择相应的波形输出。可以用3个按键来控制波形选择4 代码及仿真结果4.1各个模块的实现4.1.1数控分频器的实
11、现其VHDL代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin is port(d_mode:in std_logic_vector(3 downto 0); clk:in std_logic; d_out:out std_logic);end fenpin;architecture behav of fenpin is signal full:std_logic; begin p_reg: process(clk) variable cnt8:std_logic
12、_vector(3 downto 0); begin if clkevent and clk=1 then if cnt8=1111 then cnt8:=d_mode; full=1; else cnt8:=cnt8+1; full=0; end if; end if; end process p_reg;p_div:process(full) variable cnt2:std_logic; begin if fullevent and full=1 then cnt2:=not cnt2; if cnt2=1 then d_out=1 ; else d_out=0; end if; en
13、d if;end process p_div;end behav; 频率为1MHz的分频波形图: 其生成元器件如图2所示:图2 数控分频器器件生成图4.1.2方波的实现产生方波,是通过交替送出全0和全1实现,每32个时钟翻转一次。其VHDL代码如下:library ieee;use ieee.std_logic_1164.all;entity square is port(clk,clr:in std_logic; q:out integer range 0 to 255); end square;architecture one of square issignal a:bit:=0; be
14、gin process(clk,clr) variable cnt:integer range 0 to 31; begin if clr=0 then a=0; elsif clkevent and clk=1 then if cnt31 then cnt:=cnt+1; else cnt:=0; a=not a; end if; end if; end process; process(clk,a) begin if clkevent and clk=1 then if a=1 then q=255; else q=0; end if; end if; end process;end on
15、e;其仿真波形如图3所示:图3 方波仿真图其生成元器件如图4所示:图4 方波元器件生成图4.1.3三角波的实现该模块产生的三角波以64个时钟为一个周期,输出q每次加减8。其VHDL代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity delta is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0); end delta;architecture delta_arc of delta isbegin p
16、rocess(clk,reset) variable tmp:std_logic_vector(7 downto 0); variable a:std_logic; begin if reset=0 then tmp:=00000000; elsif clkevent and clk=1 then if a=0 then if tmp=11111110 then tmp:=11111111; a:=1; else tmp:=tmp+1; end if; else if tmp=00000001 then tmp:=00000000; a:=0; else tmp:=tmp-1; end if;
17、 end if; end if; q=tmp; end process;end delta_arc;其仿真波形如图5所示:图5 三角波仿真图其生成元器件如图6所示:图6 三角波元器件生成图4.1.4正弦波的实现该模块产生以64个时钟为一个周期的正弦波。其VHDL代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sin is port(clk,clr:in std_logic; d:out integer range 0 to 255);end sin;architecture
18、 sin_arc of sin isbegin process(clk,clr) variable tmp:integer range 0 to 63; begin if clr=0 then dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddnull; end case; end if; end process;end sin_arc;其仿真波形如图7所示:图7 正弦波仿真图其生成元器件如图8所示:图8 正弦波元器件生成图4.1.5锯齿波的实现改变该模块递增的常数,可以改变锯齿的个数。其VHDL代码如下:libr
19、ary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ladder is port(clk,reset:in std_logic; q:out std_logic_vector(7 downto 0);end ladder;architecture ladder_arc of ladder isbegin process(clk,reset) variable tmp:std_logic_vector(7 downto 0); begin if reset=0 then tmp:=00000000
20、;elsif clkevent and clk=1 then if tmp=11111111 then tmp:=00000000; else tmp:=tmp+16; -锯齿常数为16,可修改 end if; end if; qqqqqd_mode,clk=clk, d_out=square,d_out= delta, d_out= sin, d_out= ladder);wen2: square port map(clr=resel,clk= square, q= d0);wen3: delta port map(resel =resel,clk= delta, q= d1);wen4:
21、sin port map(clr=resel,clk= sin, q= d2);wen5: ladder port map(resel =resel,clk= ladder, q= d3);wen6: select4_1 port map(sel = sel, d0= d0, d1= d1, d2= d2,d3=d3,q=q);end behav;4.2.2生成整体RTL:新建一工程,加载上述模块,利用顶层模块法生成整体多波形信号发生器。整体RTL图如图13所示:图13 整体多波形信号发生器RTL图4.2.3整体仿真图整体多波形信号发生器仿真如图14所示:图14 整体多波形信号发生器仿真图其中
22、,d_mode【3.0】为数控分频输入端,接四个开关用来产生预制分频数,分频后得到不同频率的脉冲,sel【1.0】为数据选择器的选择输入端,接两个开关,输入不同数据,选择四种波形中的一种输出,clk是原始脉冲输入端,reset为复位端,接一按键,按下时产生复位,回到初始状态;q【7.0】是数据选择器的输出端,输出被选中的波形送至DA转换器。5 小结及体会通过这次课程设计,我全面熟悉、掌握VHDL语言的基本知识,掌握利用VHDL语言对信号发生器的编程和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高动手能力,培养使用设计综合电路的能力,养成
23、提供文档资料的习惯和规范编程的思想。同时通过此次实验,使我对Quartus II软件的使用有了更深刻的了解。在设计的过程中,也遇到了很多问题,在同学和指导老师的帮助下,都一一得到了解决。从选题到定稿,从了解到熟悉,用了大概一个星期的时间,在这段时间内,苦恼、思考、喜悦、收获,感受颇多。当然此次设计也体现出我平时学习中有许多不足和欠缺之处,此后需通过学习来查漏补缺。6 参考文献1李翠华. 信号发生器的设计J. 科技广场, 20092申彦春, 王欢, 梁延贵. 基于FPGA的信号发生器的设计J. 唐山学院学报, 20083刘皖, 何道军, 谭明. FPGA设计与应用M. 北京清华大学出版社, 20
24、064赵雅兴. FPGA原理设计与应用M. 天津大学出版社, 19995余勇, 郑小林.基于FPGA的DDS正弦信号发生器的设计与实现J.电子器件, 20056田耘,徐文波. Xilinx FPGA开发实用教程M. 北京: 清华大学出版社, 2008 1. 基于C8051F单片机直流电动机反馈控制系统的设计与研究2. 基于单片机的嵌入式Web服务器的研究 3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究 4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制 5. 基于MCS-51系列单片机的通用控制模块的研究 6. 基于单片机实现的
25、供暖系统最佳启停自校正(STR)调节器7. 单片机控制的二级倒立摆系统的研究8. 基于增强型51系列单片机的TCP/IP协议栈的实现 9. 基于单片机的蓄电池自动监测系统 10. 基于32位嵌入式单片机系统的图像采集与处理技术的研究11. 基于单片机的作物营养诊断专家系统的研究 12. 基于单片机的交流伺服电机运动控制系统研究与开发 13. 基于单片机的泵管内壁硬度测试仪的研制 14. 基于单片机的自动找平控制系统研究 15. 基于C8051F040单片机的嵌入式系统开发 16. 基于单片机的液压动力系统状态监测仪开发 17. 模糊Smith智能控制方法的研究及其单片机实现 18. 一种基于单
26、片机的轴快流CO,2激光器的手持控制面板的研制 19. 基于双单片机冲床数控系统的研究 20. 基于CYGNAL单片机的在线间歇式浊度仪的研制 21. 基于单片机的喷油泵试验台控制器的研制 22. 基于单片机的软起动器的研究和设计 23. 基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究 24. 基于单片机的机电产品控制系统开发 25. 基于PIC单片机的智能手机充电器 26. 基于单片机的实时内核设计及其应用研究 27. 基于单片机的远程抄表系统的设计与研究 28. 基于单片机的烟气二氧化硫浓度检测仪的研制 29. 基于微型光谱仪的单片机系统 30. 单片机系统软件构件开发的技术
27、研究 31. 基于单片机的液体点滴速度自动检测仪的研制32. 基于单片机系统的多功能温度测量仪的研制 33. 基于PIC单片机的电能采集终端的设计和应用 34. 基于单片机的光纤光栅解调仪的研制 35. 气压式线性摩擦焊机单片机控制系统的研制 36. 基于单片机的数字磁通门传感器 37. 基于单片机的旋转变压器-数字转换器的研究 38. 基于单片机的光纤Bragg光栅解调系统的研究 39. 单片机控制的便携式多功能乳腺治疗仪的研制 40. 基于C8051F020单片机的多生理信号检测仪 41. 基于单片机的电机运动控制系统设计 42. Pico专用单片机核的可测性设计研究 43. 基于MCS-
28、51单片机的热量计 44. 基于双单片机的智能遥测微型气象站 45. MCS-51单片机构建机器人的实践研究 46. 基于单片机的轮轨力检测 47. 基于单片机的GPS定位仪的研究与实现 48. 基于单片机的电液伺服控制系统 49. 用于单片机系统的MMC卡文件系统研制 50. 基于单片机的时控和计数系统性能优化的研究 51. 基于单片机和CPLD的粗光栅位移测量系统研究 52. 单片机控制的后备式方波UPS 53. 提升高职学生单片机应用能力的探究 54. 基于单片机控制的自动低频减载装置研究 55. 基于单片机控制的水下焊接电源的研究 56. 基于单片机的多通道数据采集系统 57. 基于u
29、PSD3234单片机的氚表面污染测量仪的研制 58. 基于单片机的红外测油仪的研究 59. 96系列单片机仿真器研究与设计 60. 基于单片机的单晶金刚石刀具刃磨设备的数控改造 61. 基于单片机的温度智能控制系统的设计与实现 62. 基于MSP430单片机的电梯门机控制器的研制 63. 基于单片机的气体测漏仪的研究 64. 基于三菱M16C/6N系列单片机的CAN/USB协议转换器 65. 基于单片机和DSP的变压器油色谱在线监测技术研究 66. 基于单片机的膛壁温度报警系统设计 67. 基于AVR单片机的低压无功补偿控制器的设计 68. 基于单片机船舶电力推进电机监测系统 69. 基于单片
30、机网络的振动信号的采集系统 70. 基于单片机的大容量数据存储技术的应用研究 71. 基于单片机的叠图机研究与教学方法实践 72. 基于单片机嵌入式Web服务器技术的研究及实现 73. 基于AT89S52单片机的通用数据采集系统 74. 基于单片机的多道脉冲幅度分析仪研究 75. 机器人旋转电弧传感角焊缝跟踪单片机控制系统 76. 基于单片机的控制系统在PLC虚拟教学实验中的应用研究77. 基于单片机系统的网络通信研究与应用 78. 基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究79. 基于单片机的模糊控制器在工业电阻炉上的应用研究 80. 基于双单片机冲床数控系统的研究与开发
31、81. 基于Cygnal单片机的C/OS-的研究82. 基于单片机的一体化智能差示扫描量热仪系统研究 83. 基于TCP/IP协议的单片机与Internet互联的研究与实现 84. 变频调速液压电梯单片机控制器的研究 85. 基于单片机-免疫计数器自动换样功能的研究与实现 86. 基于单片机的倒立摆控制系统设计与实现 87. 单片机嵌入式以太网防盗报警系统 88. 基于51单片机的嵌入式Internet系统的设计与实现 89. 单片机监测系统在挤压机上的应用 90. MSP430单片机在智能水表系统上的研究与应用 91. 基于单片机的嵌入式系统中TCP/IP协议栈的实现与应用92. 单片机在高
32、楼恒压供水系统中的应用 93. 基于ATmega16单片机的流量控制器的开发 94. 基于MSP430单片机的远程抄表系统及智能网络水表的设计95. 基于MSP430单片机具有数据存储与回放功能的嵌入式电子血压计的设计 96. 基于单片机的氨分解率检测系统的研究与开发 97. 锅炉的单片机控制系统 98. 基于单片机控制的电磁振动式播种控制系统的设计 99. 基于单片机技术的WDR-01型聚氨酯导热系数测试仪的研制 100. 一种RISC结构8位单片机的设计与实现 101. 基于单片机的公寓用电智能管理系统设计 102. 基于单片机的温度测控系统在温室大棚中的设计与实现103. 基于MSP430单片机的数字化超声电源的研制 104. 基于ADC841单片机的防爆软起动综合控制器的研究105. 基于单片机控制的井下低爆综合保护系统的设计 106. 基于单片机的空调器故障诊断系统的设计研究 107. 单片机实现的寻呼机编码器 108. 单片机实现的鲁棒MRACS及其在液压系统中的应用研究 109. 自适应控制的单片机实现方法及基上隅角瓦斯积聚处理中的应用研究110. 基于单片机的锅炉智能控制器的设计与研究 111. 超精密机床床身隔振