您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > VHDL语言与FPGA设计实验报告
VHDL语言与FPGA设计实验报告学院:班级:姓名:学号:指导老师:常州工学院实验1:2选1多路选择器设计一、实验目的:熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、仿真和硬件测试。二、实验内容:1.首先利用QuartusⅡ完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出仿真波形。最后在实验系统上进行硬件测试,验证本项设计的功能。2.引脚锁定以及硬件下载测试。建议选实验电路模式No.5,用键1(PIO0)控制s(或s接clock2);a和b分别接clock0和clock5;输出信号y接扬声器speaker。通过短路帽选择clock0接256Hz信号,clock5接1024Hz。最后进行编译、下载和硬件测试实验(通过选择键1,控制a、b,可使扬声器输出不同音调)。逻辑电路图三、程序设计:libraryieee;--useieee.std_logic_1164.all;--ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy=a;ELSEy=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;程序分析:这是一个2选1多路选择器,a和b分别为两个数字输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。四、软件编译选择PeocessingStartCompilation命令,启动全程编译。编译无错后的报告信息五、时序仿真1)打开波形编辑器选择File-new,选择vectorwaveformfile。2)设定仿真时间区域在Edit-endtime,在弹出的窗口time栏处输入50,单位选“us”。3)波形文件存盘,默认文件名为mux21a.vwf4)将此工程mux21a的端口信号名选入波形编辑器中View-utilitywindows项的NodeFinder选项。点击“list”。5)将端口信号名拖入波形编辑器中,拖完信号后可以关掉浮动窗口6)按键盘上“CTRL+W”,显示全部仿真时间区域。7)编辑输入波形(输入激励信号)8)仿真器参数设置9)启动仿真器。提示是否保存,选择“是”,仿真成功后选“确定”。10)观察仿真结果按键盘上“CTRL+W”,在全部仿真时间区域内观察波形,并分析波形图显示的逻辑功能是否正确。电路时序波形图时序分析:当s=0时,y口输出a,当s=1时,y口输出b。六、硬件测试打开mux21a命名的工程,应选择File的OpenProject命令。选择Assignments-assingnmenteditor项。Category栏中选择locations,然后双击TO栏的《new》,选择NodeFinder。在出现的对话框左边框中选择需要锁定的端口信号名,这些信号跳到右栏,单击OK按键后,这些信号名即进入信号编辑栏。接着在表框中分别键入需要锁定的端口引脚名。锁定引脚后,必须重新编译,启动Processing-StartCcomplication,编译完成后可下载配置文件。引脚锁定图使用USB编程器下载配置文件首先安装USB编程器的驱动程序。选择自己搜索驱动程序。备注:若没有正确安装驱动程序,USBBlaster编程器不可选,这时必须到硬件设备管理器中删除打问号的USB驱动程序,重新正确安装。将编译产生的SOF格式配置文件配置进FPGA中。在MODE选择JTAG。编程器选择USBBlaster下载方式。点击“start”将配置文件下载,然后进行硬件测试。程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz信号,clock5接1024Hz信号。通过键一控制s,当键1进行切换时,明显能听到扬声器发出两种不同音调的声音。实验2:十进制计数器设计一、实验目的学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。二、实验原理对于异步清零和同步加载与时钟使能的计数器:当时钟信号CLK、复位信号RST、时钟使能信号EN或加载信号LOAD中任一信号发生变化,都将启动进程。此时如果RST为‘0’,将计数器清零,该操作独立于CLK,如果RST为‘1’,则看是否有时钟信号的上升沿,如果有且EN=‘1’,接下去是判断加载控制信号LOAD的电平,如果LOAD为低电平,则允许将输入口的四位加载数据置入计数器中,以便计数器在此基础上累计计数。如果LOAD为高电平,则允许计数器计数;此时若数值小于9,计数器将进行正常计数,否则计数器清零。但如果EN=‘0’,则计数器保持原值不变。三、实验内容1.在QuartusⅡ上对实验程序进行编辑、编译、综合、适配、仿真。说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。2.引脚锁定以及硬件下载测试。建议选实验电路模式No.5,主时钟CLK接CLK0,EN接键1,RST接键2,(LOAD接键3,DATA接键5,6,7,8),COUT接发光管D1,4位输出总线CQ[3..0]连接数码管1(PIO19、PIO18、PIO17、PIO16)显示。引脚锁定后进行编译、下载和硬件测试。VCCCLKINPUTVCCRSTINPUTVCCENINPUTCQ[3..0]OUTPUTCOUTOUTPUTCLKRSTENCQ[3..0]COUTCNT10inst逻辑电路图四、程序设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS='0');--计数器异步复位ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFEN='1'THEN--检测是否允许计数(同步使能)IFCQI9THENCQI:=CQI+1;--允许计数,检测是否小于9ELSECQI:=(OTHERS='0');--大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT='1';--计数大于9,输出进位信号ELSECOUT='0';ENDIF;CQ=CQI;--将计数值向端口输出ENDPROCESS;ENDbehave五、软件编译选择PeocessingStartCompilation命令,启动全程编译。编译无错后的报告信息六、时序仿真1)打开波形编辑器选择File-new,选择vectorwaveformfile。2)设定仿真时间区域在Edit-endtime,在弹出的窗口time栏处输入50,单位选“us”。3)波形文件存盘,默认文件名为CNT10.vwf4)将此工程CNT10的端口信号名选入波形编辑器中View-utilitywindows项的NodeFinder选项。点击“list”。5)将端口信号名拖入波形编辑器中,拖完信号后可以关掉浮动窗口6)按键盘上“CTRL+W”,显示全部仿真时间区域。7)编辑输入波形(输入激励信号)8)仿真器参数设置9)启动仿真器。提示是否保存,选择“是”,仿真成功后选“确定”。10)观察仿真结果按键盘上“CTRL+W”,在全部仿真时间区域内观察波形,并分析波形图显示的逻辑功能是否正确。电路时序波形图七、硬件测试打开CNT10命名的工程,应选择File的OpenProject命令。选择Assignments-assingnmenteditor项。Category栏中选择locations,然后双击TO栏的《new》,选择NodeFinder。在出现的对话框左边框中选择需要锁定的端口信号名,这些信号跳到右栏,单击OK按键后,这些信号名即进入信号编辑栏。接着在表框中分别键入需要锁定的端口引脚名。锁定引脚后,必须重新编译,启动Processing-StartCcomplication,编译完成后可下载配置文件。引脚锁定图使用USB编程器下载配置文件首先安装USB编程器的驱动程序。选择自己搜索驱动程序。备注:若没有正确安装驱动程序,USBBlaster编程器不可选,这时必须到硬件设备管理器中删除打问号的USB驱动程序,重新正确安装。将编译产生的SOF格式配置文件配置进FPGA中。在MODE选择JTAG。编程器选择USBBlaster下载方式。点击“start”将配置文件下载,然后进行硬件测试。显示0-9,即十进制计数器,逢十进位灯闪烁一次实验3:七段数码显示译码器设计一、实验目的学习7段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。二、实验原理7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。实验参考程作为7段译码器,输出信号LED7S的7位分别接数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。注意,这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h,LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0)应改为(7DOWNTO0)。三、实验内容1.说明程序中各语句的含义,以及该例的整体功能。在QuartusII上对该例进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。提示:用输入总线的方式给出输入信号仿真数据。2.引脚锁定及硬件测试。建议选实验电路模式No.1,用数码管8(PIO31-PIO28)和数码管7(PIO27-PIO24)显示译码输出led7s,键1(PIO3-PIO0)控制输入a,硬件验证译码器的工作性能。VCCA[3..0]INPUTLED7S[6..0]OUTPUTA[3..0]LED7S[6..0]DECL7Sinst逻辑电路图四、程序设计LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECL7SISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneOFDECL7SISBEGINPROCESS(A)BEGINCASEAISWHEN0000=LED7S=0111111;WHEN0001=LED7S=0000110;WHEN0010=LED7S=1011011;WHEN0011=LED7S=1001111;WHEN0100=LED7S=1100110;WHEN0101=LED7S=1101101;WHEN0110=LED7S=1111101;WHEN0111=LED7S=0000111;WHEN1000=LED7S=1111111;WHEN1001=LED7S=1101111;WHEN1010=LED7S=1110111;WHEN1011=LED7S=1111100;WHEN1100=LED7S=0111001;WHEN1101=LED7S=1011110;WHEN1110=LED7S=1111001;WHEN1111=
本文标题:VHDL语言与FPGA设计实验报告
链接地址:https://www.777doc.com/doc-2866360 .html