多功能信号发生器的设计-毕业设计_第1页
多功能信号发生器的设计-毕业设计_第2页
多功能信号发生器的设计-毕业设计_第3页
多功能信号发生器的设计-毕业设计_第4页
多功能信号发生器的设计-毕业设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE20多功能信号发生器的设计目录TOC\o"1-3"\u0引言 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引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。它能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。本设计采用FPGA来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。1设计意义本次课设要求设计一个函数信号发生器。它能产生四种波形:正弦波、方波、三角波、锯齿波。同时能在不同的频率下显示。这次设计主要是练习了分频电路的设计,ROM的设计,计数器的设计、选择电路的设计和数码显示的设计。加强了对when语句,if语句等语句的理解。拓展了对VHDL语言的应用。平时练习与考试都是设计一个简单的电路,本次课设综合了好几个电路的设计。同时我也增强了对分模块设计电路的应用。对我以后的电路设计生涯都是有所帮助的!函数信号发生器是应用了VHDL语言,通过数模转换来显示波形,实现了数模转换的应用。在工作中,我们常常会用到信号发生器,它是使用频度很高的电子仪器。信号发生器是指产生所需参数的电测试信号的仪器。按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。凡是产生测试信号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。可见信号源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。它能够产生多种波形,如三角波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。本设计采用EDA来设计制作多功能信号发生器。该信号发生器可以产生正弦波、方波、三角波、锯齿波等波形。2设计说明2.1设计任务2.1.1设计要求:基于《VHDL语言》,通过给定的仪器(EDA6000试验箱)设计一个多功能信号发生器,(1)能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形;(2)输出信号的频率范围为100Hz~200KHz,且输出频率可以调节;(3)具有显示输出波形、频率的功能。2.1.21)掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。2)熟悉在QuartusII环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。3)通过这一部分的学习,对VHDL语言的设计方法进行进一步的学习,对其相关语言设计规范进行更深层次的掌握,能够更加熟练的做一些编程设计。3设计过程3.1系统顶层框图3.1.1信号发生器结构图由于FPGA/CPLD只能直接输出数字信号,而多功能信号发生器输出的各种波形均为模拟信号,因此设计信号发生器时,需将FPGA/CPLD输出的信号通过D/A转换电路将数字信号转换成模拟信号。多功能信号发生器可由信号产生电路,波形选择电路和D/A转换电路构成,如下图所示:时钟信号时钟信号信号产生电路波形选择电路D/A转换波形输出选择信号3.1.2信号发生器的内部构成数控分频器三角波波形数据数控分频器三角波波形数据正弦波波形数据方波波形数据任意波形数据数据选择器波形选择关时钟预置分频数(0-255)复位信号8位数据图1原理框图在原理框图中,正(余)弦查找表由ROM构成,内部存有一个完整周期正(余)弦波的数字幅度信息,每个查找表的地址对应正(余)弦波幅度信号,同时输出到数模转换器(DAC)输入端,DAC输出的模拟信号经过低通滤波器(LPF),可以得到一个频谱纯净的正(余)弦波。3.1.3系统流程图当输入端有时钟信号输入时,各个信号发生器模块独立运行,独立存在,发出各种信号,这些信号作为数据选择器的输入信号,在数据选择器的作用下,波形切换到相应的模块输出,再通过数模转换器(D/A),将通过示波器显示出相应的波形图,其程序流程图如下图所示:输入信号输入信号各个信号发生器模块开始输出信号数模转换器(D/A)四选一数据选择器复位3.2设计步骤用VHDL语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。将频率控制、分频、三角波、正弦波、方波发生邓各个模块分别用VHDL语言编程为一个子程序,并把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框图所示。通过按键1到按键8控制频率调节f〔7...0〕,用按键6、按键7、按键8控制dlt、sin、sqr波形选通,最后把八位输出接DAC0832通过D/A转换,从示波器上就能看到波形输出。按下不同的按键输出不同的波形及频率。3.3系统设计

(1)数控分频器模块在时钟的作用下,通过预置分频数DIN,来改变输出频率。假如分频系数为N,波形存储模块存储一个周期的波形,实验里按照一个周期波形采样64个点存储在波形存储模块里。则输出频率(2)数据存储模块(存储波形数据)数据存储模块主要存的是正弦波、三角波、锯齿波等一个周期的采样点。三角波模块可设计一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为0时,当检测到时钟的上升沿进行加同一个数操作;为1时,进行减同一个数操作。DA转换采用的DA0832,输入有8个数据端,范围是0到255;而且设置64个时钟周期为一个三角波周期,所有每次加、减为1。锯齿波的存储数据与三角波类似。方波可以通过交替输出全0和全1,并给以32个周期的延时来实现。正弦波可以通过波形变换实现把变换成的形式进行采样,然后变换成8位二进制码,存储在波形存储器里。(3)数据选择器模块在波形开关的控制下,选择相应的波形输出。可以用3个按键来控制波形选择4代码及仿真结果4.1各个模块的实现4.1.1数控分频器的实现其VHDL代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenpinisport(d_mode:instd_logic_vector(3downto0);clk:instd_logic;d_out:outstd_logic);endfenpin;architecturebehavoffenpinissignalfull:std_logic;beginp_reg:process(clk)variablecnt8:std_logic_vector(3downto0);beginifclk'eventandclk='1'thenifcnt8="1111"thencnt8:=d_mode;full<='1';elsecnt8:=cnt8+1;full<='0';endif;endif;endprocessp_reg;p_div:process(full)variablecnt2:std_logic;beginiffull'eventandfull='1'thencnt2:=notcnt2;ifcnt2='1'thend_out<='1';elsed_out<='0';endif;endif;endprocessp_div;endbehav;频率为1MHz的分频波形图:其生成元器件如图2所示:图2数控分频器器件生成图4.1.2方波的实现产生方波,是通过交替送出全0和全1实现,每32个时钟翻转一次。其VHDL代码如下:libraryieee;useieee.std_logic_1164.all;entitysquareisport(clk,clr:instd_logic;q:outintegerrange0to255);endsquare;architectureoneofsquareissignala:bit:='0';beginprocess(clk,clr)variablecnt:integerrange0to31;beginifclr='0'thena<='0';elsifclk'eventandclk='1'thenifcnt<31thencnt:=cnt+1;elsecnt:=0;a<=nota;endif;endif;endprocess;process(clk,a)beginifclk'eventandclk='1'thenifa='1'thenq<=255;elseq<=0;endif;endif;endprocess;endone;其仿真波形如图3所示:图3方波仿真图其生成元器件如图4所示:图4方波元器件生成图4.1.3三角波的实现该模块产生的三角波以64个时钟为一个周期,输出q每次加减8。其VHDL代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydeltaisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));enddelta;architecturedelta_arcofdeltaisbeginprocess(clk,reset)variabletmp:std_logic_vector(7downto0);variablea:std_logic;beginifreset='0'thentmp:="00000000";elsifclk'eventandclk='1'thenifa='0'theniftmp="11111110"thentmp:="11111111";a:='1';elsetmp:=tmp+'1';endif;elseiftmp="00000001"thentmp:="00000000";a:='0';elsetmp:=tmp-'1';endif;endif;endif;q<=tmp;endprocess;enddelta_arc;其仿真波形如图5所示:图5三角波仿真图其生成元器件如图6所示:图6三角波元器件生成图4.1.4该模块产生以64个时钟为一个周期的正弦波。其VHDL代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitysinisport(clk,clr:instd_logic;d:outintegerrange0to255);endsin;architecturesin_arcofsinisbeginprocess(clk,clr)variabletmp:integerrange0to63;beginifclr='0'thend<=0;elsifclk'eventandclk='1'theniftmp=63thentmp:=0;elsetmp:=tmp+1;endif;casetmpiswhen00=>d<=255;when01=>d<=254;when02=>d<=252;when03=>d<=249;when04=>d<=245;when05=>d<=239;when06=>d<=233;when07=>d<=225;when08=>d<=217;when09=>d<=207;when10=>d<=197;when11=>d<=186; when12=>d<=174;when13=>d<=162;when14=>d<=150; when15=>d<=137;when16=>d<=124;when17=>d<=112; when18=>d<=99;when19=>d<=87;when20=>d<=75; when21=>d<=64;when22=>d<=53;when23=>d<=43; when24=>d<=34;when25=>d<=26;when26=>d<=19; when27=>d<=13;when28=>d<=8;when29=>d<=4; when30=>d<=1;when31=>d<=0;when32=>d<=0; when33=>d<=1;when34=>d<=4;when35=>d<=8; when36=>d<=13;when37=>d<=19;when38=>d<=26; when39=>d<=34;when40=>d<=43;when41=>d<=53; when42=>d<=64;when43=>d<=75;when44=>d<=87; when45=>d<=99;when46=>d<=112;when47=>d<=124; when48=>d<=137;when49=>d<=150;when50=>d<=162; when51=>d<=174;when52=>d<=186;when53=>d<=197; when54=>d<=207;when55=>d<=217;when56=>d<=225; when57=>d<=233;when58=>d<=239;when59=>d<=245; when60=>d<=249;when61=>d<=252;when62=>d<=254; when63=>d<=255; whenothers=>null; endcase; endif;endprocess;endsin_arc;其仿真波形如图7所示:图7正弦波仿真图其生成元器件如图8所示:图8正弦波元器件生成图4.1.5锯齿波的实现改变该模块递增的常数,可以改变锯齿的个数。其VHDL代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityladderisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endladder;architectureladder_arcofladderisbeginprocess(clk,reset)variabletmp:std_logic_vector(7downto0);beginifreset='0'thentmp:="00000000"; elsifclk'eventandclk='1'theniftmp="11111111"thentmp:="00000000"; elsetmp:=tmp+16;--锯齿常数为16,可修改 endif;endif;q<=tmp;endprocess;endladder_arc;其仿真波形如图9所示:图9锯齿波仿真图其生成元器件如图10所示:图10锯齿波元器件生成图4.1.6根据外部的开关状态可以选择输出的波形。其VHDL代码如下:libraryieee;useieee.std_logic_1164.all;entityselect4_1isport(sel:instd_logic_vector(1downto0);d0,d1,d2,d3:instd_logic_vector(7downto0);q:outstd_logic_vector(7downto0));endselect4_1;architectureoneofselect4_1isbeginprocess(sel)begincaseseliswhen"00"=>q<=d0; when"01"=>q<=d1; when"10"=>q<=d2; when"11"=>q<=d3;endcase;endprocess;endone;其波形仿真如图11所示:图11四选一信号选择仿真图其生成元器件如图12所示:图124选1信号选择元器件生成图4.2顶层模块4.2.1代码实现VHDL代码如下,利用元件例化实现:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityliisport(d_mode:instd_logic_vector(3downto0);q:outstd_logic_vector(7downto0);clk:instd_logic;resel:outstd_logic);endli;architecturebehavofliiscomponentfenpinisport(d_mode:instd_logic_vector(3downto0);clk:instd_logic;d_out:outstd_logic);endcomponentfenpin;componentsquareisport(clk,clr:instd_logic;q:outintegerrange0to255);endcomponentsquare;componentdeltaisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endcomponentdelta;componentsinisport(clk,clr:instd_logic;d:outintegerrange0to255);endcomponentsin;componentladderisport(clk,reset:instd_logic;q:outstd_logic_vector(7downto0));endcomponentladder;componentselect4_1isport(sel:instd_logic_vector(1downto0);d0,d1,d2,d3:instd_logic_vector(7downto0);q:outstd_logic_vector(7downto0));endcomponentselect4_1;signalsquare:std_logic;signaldelta:std_logic;signalsin:std_logic;signalladder:std_logic;signald0:std_logic_vector(7downto0);signald1:std_logic_vector(7downto0);signald2:std_logic_vector(7downto0);signald3:std_logic_vector(7downto0);beginwen1:fenpinportmap(d_mode=>d_mode,clk=>clk,d_out=>square,d_out=>delta,d_out=>sin,d_out=>ladder);wen2:squareportmap(clr=>resel,clk=>square,q=>d0);wen3:deltaportmap(resel=>resel,clk=>delta,q=>d1);wen4:sinportmap(clr=>resel,clk=>sin,q=>d2);wen5:ladderportmap(resel=>resel,clk=>ladder,q=>d3);wen6:select4_1portmap(sel=>sel,d0=>d0,d1=>d1,d2=>d2,d3=>d3,q=>q);endbehav;4.2.2生成整体RTL:新建一工程,加载上述模块,利用顶层模块法生成整体多波形信号发生器。整体RTL图如图13所示:图13整体多波形信号发生器RTL图4.2.3整体仿真图整体多波形信号发生器仿真如图14所示:图14整体多波形信号发生器仿真图其中,d_mode【3..0】为数控分频输入端,接四个开关用来产生预制分频数,分频后得到不同频率的脉冲,sel【1..0】为数据选择器的选择输入端,接两个开关,输入不同数据,选择四种波形中的一种输出,clk是原始脉冲输入端,reset为复位端,接一按键,按下时产生复位,回到初始状态;q【7..0】是数据选择器的输出端,输出被选中的波形送至DA转换器。5小结及体会通过这次课程设计,我全面熟悉、掌握VHDL语言的基本知识,掌握利用VHDL语言对信号发生器的编程和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。同时通过此次实验,使我对QuartusII软件的使用有了更深刻的了解。在设计的过程中,也遇到了很多问题,在同学和指导老师的帮助下,都一一得到了解决。从选题到定稿,从了解到熟悉,用了大概一个星期的时间,在这段时间内,苦恼、思考、喜悦、收获,感受颇多。当然此次设计也体现出我平时学习中有许多不足和欠缺之处,此后需通过学习来查漏补缺。6参考文献[1]李翠华.信号发生器的设计[J].科技广场,2009[2]申彦春,王欢,梁延贵.基于FPGA的信号发生器的设计[J].唐山学院学报,2008[3]刘皖,何道军,谭明.FPGA设计与应用[M].北京清华大学出版社,2006[4]赵雅兴.FPGA原理设计与应用[M].天津大学出版社,1999[5]余勇,郑小林.基于FPGA的DDS正弦信号发生器的设计与实现[J].电子器件,2005[6]田耘,徐文波.XilinxFPGA开发实用教程[M].北京:清华大学出版社,2008基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器的设计基于单片机船舶电力推进电机监测系统基于单片机网络的振动信号的采集系统基于单片机的大容量数据存储技术的应用研究基于单片机的叠图机研究与教学方法实践基于单片机嵌入式Web服务器技术的研究及实现基于AT89S52单片机的通用数据采集系统基于单片机的多道脉冲幅度分析仪研究机器人旋转电弧传感角焊缝跟踪单片机控制系统基于单片机的控制系统在PLC虚拟教学实验中的应用研究基于单片机系统的网络通信研究与应用基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究基于单片机的模糊控制器在工业电阻炉上的应用研究基于双单片机冲床数控系统的研究与开发基于Cygnal单片机的μC/OS-Ⅱ的研究基于单片机的一体化智能差示扫描量热仪系统研究基于TCP/IP协议的单片机与Internet互联的研究与实现变频调速液压电梯单片机控制器的研究基于单片机γ-免疫计数器自动换样功能的研究与实现基于单片机的倒立摆控制系统设计与实现单片机嵌入式以太网防盗报警系统基于51单片机的嵌入式Internet系统的设计与实现单片机监测系统在挤压机上的应用HY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论