信号发生器实验报告_第1页
信号发生器实验报告_第2页
信号发生器实验报告_第3页
信号发生器实验报告_第4页
信号发生器实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

信号发生器设计一.设计任务设计并制作一台多功能信号发生器,电路组成框图如下图。波形参数显示多功能信号发生器波形参数显示多功能信号发生器波形参数设置矩形波输出1信号发生器框图根本要求制作完成一路方波信号输出,频率范围100Hz~100kHz;输出信号波形用示波器观看无明显失真;数码管显示方波的频率;可使用按键调高调低输出频率,步进100Hz。发挥局部制作完成一路正弦波信号输出,频率范围100Hz~100kHz,输出信号波形用示波器观看无明显失真,数码管显示正弦波的频率。制作完成一路三角波信号输出,频率范围100Hz~100kHz,输出信号波形用示波器观看无明显失真,数码管显示三角波的频率。二.设计思考争论题目后,我们将其分为几块:大致为:信号输入模块,信号分频模块,信号输出模块三个模块VHDLQuartusIIFPGASmartSOPC图一.设计流程图FPGA中的波形发生器掌握电路,它通过外来掌握信号和高速时钟信ROM发出地址信号,输出波形的频率由发出的地址信号的速度打算;当以固定频率扫描输出地址时,模拟输出波形是固定频率,而当以周期性时变方式扫描输出地址时,则模拟输出波形为扫频信号。波形数据ROM中存有发生器的波形数据,如正弦波或三角波数据。当承受来自FPGA的地址信号后,将从数据线输出相应的波形数据,地址变化得越快,则输出数据的速度越快,从而使D/AFPGAROMFPGA中实现〔11-FPGAEAB模块担当,如LPM_ROM实现。相比之下,第1种方式的容量最大,但速度最慢23种方式则兼顾了两方面的因素;输出。输出波形的频率上限与D/A器件的转换速度有重要关系,本例承受DAC0832器件。DAC0832是8位D/A1µsFPGA5V工作电压相接〔有用电路应接周密基准电压。DAC0832的引脚功能简述如下:IL〔PIN19:数据锁存允许信号,高电平有效,系统板上已直接连在+5V上。WR、WR〔PIN2、181、2,低电平有效。XFER(PIN17):数据传送掌握信号,低电平有效。VRE〔PIN8:基准电压,可正可负,-10~+10V。RF〔PIN9:反响电阻端。IOUT1/IOUT〔PIN1、1212。D/A转换量是以电NO.5C所示的连接方式将电流信号变为电压信号。AGND/DGN〔PIN3、10:模拟地与数字地。在高速状况下,此二地的连接线必需尽可能短,且系统的单点接地点须接在此连线的某一点上。)。三.试验过程首先依据设计原理,完成根底局部,完成波形发生器和扫频信号源的设计,仿真测试及试验系统上的硬件测试。、在QuartusII中建立一个工程工程文件.qpf,并在该工程下建VHDL源程序文件输入源程序代码并保存。VHDL程序文件。各模块源程序见附录。、编译正确后,我们建立一个总的工程ep1c12_27_signal_generator,再在其中参加程序,对其编译,再选择File--create--createsymbolfileforfile48000000INPUTOUTPUT引脚。模块如下所示:图二.信号输入模块图三.分频模块图四.信号输出模块选择目标器件并对相应的引脚进展锁定,在这里在这里所选择的目标器件为Altera公司Cyclone系列的EP1C12Q240C8芯片,引脚锁定,将未使用的管脚设置为三态输入。引脚锁定如以下图所示:图五.工程中引脚锁定图DAC0832+/-12V电压。然后将试验系统左下角选择插针处用短路帽短路“D/A10”处通过短路EDAclock050MHzCLK1clock51024Hz1;KK8,当为高电寻常,正弦波点频输出,11DATA321312,数值越大,输出频率越高FD0”时为最高频率;键8clock508328DDLPM_ROMROM式自动生成,然后重复以上的测试和硬件试验。LPM_ROM。其程序如下见附录。、对该工程文件进展全程编译处理,假设在编译过程中觉察错误,则找出并更正错误,直至编译成功为止。设计整体模块图如下:图六.设计整体图四.试验器材五.试验故障形。1.D/ASmartSOPC试验箱核心模块件电阻没有连接2.地线连接不够好解决:加强了地线的连接六.试验心得附录:信号输入模块源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_Arith.ALL;USEIEEE.STD_LOGIC_Unsigned.ALL;ENTITYsine_testISPORT(clock: IN STD_LOGIC; --系统时钟key: IN STD_LOGIC_VECTOR(3DOWNTO0);select01:OUTSTD_LOGIC; --发送数据使能.data: OUTSTD_LOGIC_VECTOR(11DOWNTO0);--要发送的数据seg: OUTSTD_LOGIC_VECTOR(7 DOWNTO0);--数码管段码输出。dig: OUTSTD_LOGIC_VECTOR(7 DOWNTO0)--数码管位码输出。);END;ARCHITECTUREoneOFsine_testISSIGNALdata_r: STD_LOGIC_VECTOR(11DOWNTO0);SIGNALselect01_r:STD_LOGIC;SIGNALseg_r,dig_r:STD_LOGIC_VECTOR(7 DOWNTO0);SIGNALcount: STD_LOGIC_VECTOR(16DOWNTO0); --时钟分频计数器.SIGNALdout1,dout2,dout3:STD_LOGIC_VECTOR(3DOWNTO0);--消抖存放器SIGNALbuff: STD_LOGIC_VECTOR(3DOWNTO0); --边沿检测存放器SIGNALcnt: STD_LOGIC_VECTOR(1DOWNTO0); --数码管扫描计数器.SIGNALdisp_dat: STD_LOGIC_VECTOR(3DOWNTO0); --数码管扫描显存SIGNALdiv_clk: STD_LOGIC; --分频时钟SIGNALkey_edge: STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clock)--时钟分频局部.BEGINIF RISING_EDGE(clock) THENIFcount<120000THENcount<=count+1;div_clk<=”0”;ELSEcount<=B“0_0000_0000_0000_0000“;div_clk<=”1”;ENDIF;ENDIF;ENDPROCESS;----------------------------------<<按键消抖局部PROCESS(clock)BEGINIFRISING_EDGE(clock)THENIF div_clk=”1” THENdout1<=key;dout2<=dout1;dout3<=dout2;ENDIF;ENDIF;ENDPROCESS;PROCESS(clock)--按键边沿检测局部BEGINIFRISING_EDGE(clock)THENbuff<=dout1ORdout2ORdout3;ENDIF;ENDPROCESS;key_edge<=NOT(dout1ORdout2ORdout3)ANDbuff;PROCESS(clock)--1BEGINIFRISING_EDGE(clock)THENIFkey_edge(0)=”1”THEN--下降沿检测data_r(11DOWNTO8)<=data_r(11DOWNTO8)+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(clock)--2BEGINIFRISING_EDGE(clock)THENIFkey_edge(1)=”1”THEN--下降沿检测data_r(7DOWNTO4)<=data_r(7DOWNTO4)+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(clock)--3BEGINIFRISING_EDGE(clock)THENIFkey_edge(2)=”1”THEN--下降沿检测data_r(3DOWNTO0)<=data_r(3DOWNTO0)+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(clock)--4BEGINIFRISING_EDGE(clock)THENIFkey_edge(3)=”1”THEN--下降沿检测select01_r<=NOTselect01_r;ENDIF;ENDIF;ENDPROCESS;PROCESS(clock)--数码管扫描显示局部BEGINIFRISING_EDGE(clock)THENIFdiv_clk=”1”THENcnt<=cnt+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(clock)BEGINIFRISING_EDGE(clock)THENIFdiv_clk=”1”THENCASEcntIS --选项择扫描显示数据.WHEN“00“=>disp_dat<=data_r(11DOWNTO8)第一个数码管.WHEN“01“=>disp_dat<=data_r(7DOWNTO4); --其次个数码管.WHEN“10“=>disp_dat<=data_r(3DOWNTO0); --第三个数码管WHEN“11“=>disp_dat<=“000“&select01_r; --第八个数码管ENDCASE;CASEcntIS --选择数码管显示示位.WHEN“00“=>dig_r<= “01111111“; --选择第一个数码管显示WHEN“01“=>dig_r<= “10111111“; --选择其次个数码管显示WHEN“10“=>dig_r<= “11011111“; --选择第三个数码管显示WHEN“11“=>dig_r<= “11111110“; --选择第八个数码管显示ENDCASE;ENDIF;ENDIF;ENDPROCESS;PROCESS(disp_dat) --七段译码BEGINCASEdisp_datISWHENX“0“=>seg_r<=X“c0“;--0WHENX“1“=>seg_r<=X“f9“;--1WHENX“2“=>seg_r<=X“a4“;--2WHENX“3“=>seg_r<=X“b0“;--3WHENX“4“=>seg_r<=X“99“;--4WHENX“5“=>seg_r<=X“92“;--5WHENX“6“=>seg_r<=X“82“;--6WHENX“7“=>seg_r<=X“f8“;--7WHENX“8“=>seg_r<=X“80“;--8WHENX“9“=>seg_r<=X“90“;--9WHENX“a“=>seg_r<=X“88“;--aWHENX“b“=>seg_r<=X“83“;--bWHENX“c“=>seg_r<=X“c6“;--cWHENX“d“=>seg_r<=X“a1“;--dWHENX“e“=>seg_r<=X“86“;--eWHENX“f“=>seg_r<=X“8e“;--fWHEN OTHERS=>seg_r<=X“FF“;ENDCASE;ENDPROCESS;seg<=seg_r;dig<=dig_r;select01<=select01_r;data<=data_r;END;分频模块源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--3VHDL程序设计USEIEEE.STD_LOGIC_Arith.ALL;USEIEEE.STD_LOGIC_Unsigned.ALL;ENTITYint_divISGENERIC(N:Integer:=3);--N=33分频电路;Port(Clockin:INSTD_LOGIC;ClockOut:OUTSTD_LOGIC);END;ARCHITECTUREDeviderOFint_divISSIGNALCounter:IntegerRANGE0TON-1;SIGNALTemp1,Temp2:STD_LOGIC; --信号的声明在构造体内,进程外部BEGINPROCESS(Clockin)BEGINIFRISING_EDGE(Clockin)THENIFCounter=N-1THENcounter<=0;Temp1<=NotTemp1;ELSECounter<=Counter+1;ENDIF;ENDIF;IFfalling_edge(clockin) THENIFCounter=N/2THENTemp2<=NOTTemp2;ENDIF;ENDIF;ENDPROCESS;ClockOut<=Temp1XORTemp2;END;信号输出模块源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_Arith.ALL;USEIEEE.STD_LOGIC_Unsigned.ALL;ENTITYsineISPORT(clock: IN STD_LOGIC; --系统时钟swept_clk: IN STD_LOGIC; --扫描时钟select01:IN STD_LOGIC; --攻能选择,波形产生&扫频.data: IN STD_LOGIC_VECTOR(11DOWNTO0);--频率掌握.dout: OUTSTD_LOGIC_VECTOR(9 DOWNTO0);--数据输出.da_clk: OUTSTD_LOGIC; --DA时钟输出da_mode: OUTSTD_LOGIC --D/A数据模式选择.);END;ARCHITECTUREoneOFsineISCOMPONENTsin_rom --元器件调用声明.PORT(address :INSTD_LOGIC_VECTOR(7DOWNTO0);clock :INSTD_LOGIC;q :OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDCOMPONENT;SIGNALload_count: STD_LOGIC_VECTOR(11DOWNTO0);--数控分频器重装值SIGNALscan_data:STD_LOGIC_VECTOR(11DOWNTO0);--扫频掌握值SIGNALcount: STD_LOGIC_VECTOR(11DOWNTO0);--数控分频计数器SIGNALrom_clk: STD_LOGIC; --ROM波表时钟SIGNALaddr: STD_LOGIC_VECTOR(7 DOWNTO0);--ROM地址.BEGINPROCESS(clock)BEGINIFRISING_EDGE(clock) THEN --选择数控分频器初值.IFselect01=”1”THENload_count<=data; --由外部输入.ELSE

load_count<=scan_data;--由内部扫频产生.ENDIF;ENDIF;ENDPROCESS;PROCESS(clock) --数控分频器.BEGINIFRISING_EDGE(clock) THENIF count=X“FFF“THENcount<=load_count;rom_clk<=”1”;ELSEcount<=count+1;rom_clk<=”0”;ENDIF;ENDIF;ENDPROCESS;PROCESS(clock)BEGINIFRISING_EDGE(clock) THEN--ROM地址.IFrom_clk=”1”THENaddr<=addr+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(swept_clk)BEGINIFRISING_EDGE(swept_clk) THENscan_data<=scan_data+1;ENDIF;ENDPROCESS;U1:sin_romPORTMAP(address=>addr,clock=>rom_clk,q=>dout);da_clk<=rom_clk; --D/A时钟输出.da_mode<=”0”; --D/A数据模式选择以二进制输入.END;LPM_ROM模块源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDACISPORT(CLK,CLK1,KK:INSTD_LOGIC;DATA :INSTD_LOGIC_VECTOR(11DOWNTO0);DD:OUTINTEGERRANGE255DOWNTO0 );END;ARCHITECTUREDACCOFDACISSIGNALQ :INTEGERRANGE63DOWNTO0;SIGNALD :INTEGERRANGE255DOWNTO0;SIGNALFSS :STD_LOGIC ;SIGNALCOUNT12,DATA2,DATA1:STD_LOGIC_VECTOR(11DOWNTO0);BEGINPROCESS(FSS)BEGINIF(FSS”EVENTANDFSS=”1”)THEN Q<=Q+1;ENDIF;ENDPROCESS;PROCESS(Q)BEGINCASEQISWHEN00=>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=>

温馨提示

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

评论

0/150

提交评论