




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编程逻辑器件与硬件描述语言实验报告评语:成绩教师:年月日分组:第()组班级:学号:姓名:地点:时间:实验一:3-8译码器设计实验目的:1)掌握ISE开发工具的使用,掌握FPGA开发的基本步骤;2)掌握组合逻辑电路设计的一般方法;3)掌握程序下载方法,了解UCF文件的格式;4)初步了解开发板资源,掌握开发板使用方法。重点了解滑动开关和LED显示灯的使用方法。实验内容:用VHDL实现3-8译码器模块将程序下载到FPGA并进行检验实验步骤:1)启动ISE,新建工程文件,编写3-8译码器的VHDL模块;2)新建UCF文件,输入位置约束;3)完成综合、实现,生成下载文件;4)连接开发板USB下载线,开启开发板电源;5)下载到FPGA;6)拨动开关,验证结果是否正确。实验代码:--Company:--Engineer:----CreateDate:19:03:0310/01/2011--DesignName:--ModuleName:decoder38-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:----Dependencies:----Revision:--Revision0.01-FileCreated--AdditionalComments:------------------------------------------------------------------------------------libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;--Uncommentthefollowinglibrarydeclarationifusing--arithmeticfunctionswithSignedorUnsignedvalues--useIEEE.NUMERIC_STD.ALL;--Uncommentthefollowinglibrarydeclarationifinstantiating--anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitydecoder38isPort(A:inSTD_LOGIC;B:inSTD_LOGIC;C:inSTD_LOGIC;EN:inSTD_LOGIC;Y:outSTD_LOGIC_VECTOR(7downto0));enddecoder38;architectureBehavioralofdecoder38issignaldin:std_logic_vector(2downto0);begin din<=A&B&C; PROCESS(din,EN) begin if(EN='1')THEN Y<="00000000"; else casedinis when"000"=>y<="00000001"; when"001"=>y<="00000010"; when"010"=>y<="00000100"; when"011"=>y<="00001000"; when"100"=>y<="00010000"; when"101"=>y<="00100000"; when"110"=>y<="01000000"; when"111"=>y<="10000000"; whenothers=>y<="00000000"; endcase; endif; endprocess;endBehavioral;1.2、UCF文件:NET"y<7>"LOC="F9"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<6>"LOC="E9"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<5>"LOC="D11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<4>"LOC="C11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<3>"LOC="F11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<2>"LOC="E11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<1>"LOC="E12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<0>"LOC="F12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"EN"LOC="L13"|IOSTANDARD=LVTTL|PULLUP;NET"C"LOC="L14"|IOSTANDARD=LVTTL|PULLUP;NET"B"LOC="H18"|IOSTANDARD=LVTTL|PULLUP;NET"A"LOC="N17"|IOSTANDARD=LVTTL|PULLUP;实验结果:用滑动开关SW3~SW1作为输入A,B,C;滑动开关SW0控制EN;8个LED灯表示8个输出。当SW0处于ON(EN=1)位置时,所有LED灯灭;当SW0处于OFF(EN=0),反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW3-SW1处于OFF状态),LED0亮,其它灯灭,等等实验二:可逆计数器设计实验目的:1)进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;2)掌握时序逻辑电路设计的一般方法,掌握时钟分频程序设计方法;3)理解VHDL的层次结构设计;4)巩固程序下载方法;5)了解开发板时钟资源,以及时钟分频方法。实验内容:实现如下可逆计数器表3-1可逆计数器功能表clrenUp/DnclkY7~Y01XXX0000000000XX停止计数011↑计数器+1操作010↑计数器-1操作实现如下基本的可逆计数器资源使用要求及实现方法:1)用LED0~LED7作为计数器输出显示,LED7为高位,LED0为低位;2)SW0为计数方向up/dn控制;3)SW1为计数允许EN控制端;4)BTN_EAST为clr按钮;5)计数时钟频率为1Hz,通过对50Mhz系统时钟分频得到,分频电路独立编写一个模块,如图3-2所示;6)扩展:可以对按键次数进行计数(按键为BTN_SOUTH),即通过SW2选择计数源。二选一电路如图3-3所示。7)将图3-1~图3-3三个模块连接起来,构成一个完整计数器。如图3-4所示电路图1/500000050Mclock1/500000050Mclock1Hzclock图3-21/5000000分频器2选1In1Dout图3-3二选一电路In2SEn(SW1)clkY0(LED0)Y3(LED3)Y4(LED4)Y5(LED5)Y6(LED6)Y7(LED7)Up/Dn(SW0)2选1SW2clr(BTN_EAST)BTN_SOUTH1/5000000图3-4完整的可逆计数器计数器代码libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;useIEEE.STD_LOGIC_ARITH.ALL;entitycountercoreisPort(clr:inSTD_LOGIC;en:inSTD_LOGIC;dir:inSTD_LOGIC;clk:inSTD_LOGIC;Yout:outSTD_LOGIC_VECTOR(7downto0));endcountercore;architectureBehavioralofcountercoreissignalresult:std_logic_vector(7downto0):="00000000";begin process(clr) begin if(clr='1')then result<="00000000"; elsif(en='1')then if(clk'eventandclk='1')then if(dir='1')then result<=result+1; else result<=result-1; endif; endif; endif; endprocess; Yout<=result;endBehavioral;时钟分频器代码libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entityfreqdivisPort(clkin:inSTD_LOGIC;clkout:outSTD_LOGIC);endfreqdiv;architectureBehavioraloffreqdivisbegin process(clkin) variablecnt:integer:=0; begin if(clkin'eventandclkin='1')then cnt:=cnt+1; if(cnt<=25000000)then clkout<='0'; elsif(cnt=50000000)then--50000000 cnt:=0; else clkout<='1'; endif; endif; endprocess;endBehavioral;2选1选择器代码entitymux21isPort(a:inSTD_LOGIC;b:inSTD_LOGIC;s:inSTD_LOGIC;dout:outSTD_LOGIC);endmux21;architectureBehavioralofmux21isbegin process(a,b,s) begin if(s='0')then dout<=a; else dout<=b; endif; endprocess;endBehavioral;UCF代码NET"y<7>"LOC="F9"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<6>"LOC="E9"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<5>"LOC="D11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<4>"LOC="C11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<3>"LOC="F11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<2>"LOC="E11"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<1>"LOC="E12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;NET"y<0>"LOC="F12"|IOSTANDARD=LVTTL|SLEW=SLOW|DRIVE=8;#PlanAheadGeneratedphysicalconstraintsNET"btn_in"LOC="K17"|IOSTANDARD=LVTTL|PULLDOWN;NET"clk"LOC="C9"|IOSTANDARD=LVCMOS33;NET"clr"LOC="H13"|IOSTANDARD=LVTTL|PULLDOWN;NET"dir"LOC="L13"|IOSTANDARD=LVTTL|PULLUP;NET"en"LOC="L14"|IOSTANDARD=LVTTL|PULLUP;NET"sw_in"LOC="H18"|IOSTANDARD=LVTTL|PULLUP;实验结果:计数时钟频率为1Hz,通过对50Mhz系统时钟分频得到,分频电路独立编写一个模块,并对按键次数进行计数实验三:按键抖动消除及验证电路设计实验目的:1)进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;2)了解按键抖动的原因,抖动消除方法3)掌握状态机的设计方法;4)掌握消除抖动的状态机设计方法5)巩固程序下载方法;。实验内容:原理简介按键动作发生时,按键的输出会出现不稳定的逻辑’0’和逻辑’1’的跳变。该信号直接输入到计数器之类电路,会发生计数错误。如图3-5所示。图3-5信号抖动提示:状态机设计思路设置十个状态:S0,S1,S2,S3,S4,S5。电路的复位信号RST有效时,电路进入复位状态S0,在S0状态下,时钟信号CLK以一定频率采样按键输入信号Key_in,如果采样到Key_in=‘0’,则停留在S0状态,并继续采样,一旦采样到Key_in=’1’,则转入S1延时状态,进行消抖延时,当延时结束时,Delay_end=’1’,则转入S2状态,在此状态下,时钟信号CLK以一定频率采样按键输入Key_in,如果Key_in=‘0’则转入S0,否则转入S3;状态S3,S4的转换过程和条件与S2相同,在状态S4下,如果Key_in=’1’,则转入S5状态,当进入S5时,表示经过S2,S3,S4三个连续状态检测按键输入Key_in都为‘1’,则认为按键处于稳定状态,在S5输出按键确认信号Key_confirm=同时在状态S5下,时钟信号CLK检测按键输入Key_in,如果Key_in=‘1’,表示按键未释放,继续停留在S5,检测输入信号,如果检测到Key_in=‘1’,表示按键已经释放,输出Key_confirm=‘0’,返回到状态S0,等待下一次按键操作。资源使用要求:用LED0~LED7作为计数输出;BTN_EAST作为按键。实验步骤:1)画出电路的状态转换图;2)编写完整的VHDL程序;3)下载程序,进行验证实验代码:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitymystateisPort(clk:inSTD_LOGIC;rst:inSTD_LOGIC;key_in:inSTD_LOGIC;key_confirm:outSTD_LOGIC:='0');endmystate;architectureBehavioralofmystateisTYPESTATE_TYPEIS(s0,s1,s2,s3,s4,s5);SIGNALCURRENT_STATE,NEXT_STATE:STATE_TYPE;beginprocess(current_state,key_in)begincasecurrent_stateis whens0=> if(key_in='0')then next_state<=s0; else next_state<=s1; endif; whens1=> if(key_in='0')then next_state<=s0; else next_state<=s2; endif; whens2=> if(key_in='0')then next_state<=s0; else next_state<=s3; endif; whens3=> if(key_in='0')then next_state<=s0; else next_state<=s4; endif; whens4=> if(key_in='0')then next_state<=s0; else next_state<=s5; endif; whens5=> key_confirm<='1'; if(key_in='0')then next_state<=s0; else next_state<=s5; endif; endcase;endprocess;process(clk,rst)beginif(rst='1')thencurrent_state<=s0;elsif(clk'eventandclk='1')thencurrent_state<=next_state;endif;endprocess;endBehavioral;实验结果:设计一个按键计数器,对未去抖的信号和去抖后的信号分别进行计数。验证设计的正确性。实验四:两人乒乓球游戏实验目的:1)进一步熟练ISE开发工具,巩固FPGA开发的基本步骤,掌握功能仿真方法;2)巩固状态机的设计方法;3)巩固按键消抖电路设计方法;4)掌握多进程程序设计方法;5)巩固程序下载方法;6)了解开发板时钟资源,以及时钟分频方法。实验内容:原理简介两人乒乓游戏机用8个发光二极管代表乒乓球台,中间两个发光二极管作为乒乓球王,用点亮的发光二极管按照一定的方向移动来表示球的运动。在游戏机的良策各设置发球和击球开关,甲乙双方按乒乓球比赛规则来操作开关。当甲方按动发球开关时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲方向乙方一次点亮,代表乒乓球的移动,当球过网后,按照设计者规定的球位乙方就可以击球。若乙方提前击球或者未击到球,则甲方得分。然后重新发球比赛,直到一方达到21分为止,记分清0,重新开始新一局比赛。提示:状态机设计思路设置七个状态:“等待发球状态”、“第一盏灯亮状态”、“第八盏灯亮状态”、“球向乙移动状态”、“球向甲移动状态”、“允许甲击球状态”、“允许乙击球状态”。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态”,若乙发球则转移到“第八盏灯亮状态”。以甲发球为例:若发球后乙没有提前击球(规定球移动到对方第一个发光二极管时允许击球),那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”,若此时乙依然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“球向甲移动状态”。在“第一盏灯亮状态”、“球向乙移动状态”中,如果乙击球了,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球。“球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已,状态转移规则一样。资源使用要求:1)用LED0~LED7作为乒乓球台,其中LED3,LED4作为球网,总是点亮;2)BTN_EAST作为甲击球开关,SW3作为乙击球开关。击球的动作为:按下-放开。。实验步骤:1)画出游戏的状态转换图;2)建立程序工程;3)编写按键去抖进程4)编写状态机进程;5)下载程序,进行验证。实验代码------------------------------------------------------------------------------------Company:--Engineer:----CreateDate:17:03:3411/13/2011--DesignName:--ModuleName:VS-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:----Dependencies:----Revision:--Revision0.01-FileCreated--AdditionalComments:------------------------------------------------------------------------------------libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;--Uncommentthefollowinglibrarydeclarationifusing--arithmeticfunctionswithSignedorUnsignedvalues--useIEEE.NUMERIC_STD.ALL;--Uncommentthefollowinglibrarydeclarationifinstantiating--anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityVSisPort(a:inSTD_LOGIC;b:inSTD_LOGIC;sig:inSTD_LOGIC;Y:outSTD_LOGIC_VECTOR(7downto0));endVS;architectureBehavioralofVSistypestateis(s0,s1,s2,s3,s4,s5,s6);signalCurrent_state :state;signalcount:integer:=1000;signalt:STD_LOGIC_VECTOR(7downto0):="00011000";begin statefsm: process(sig,a,b) variablenum:integer:=0; variablerst:integer:=0; begin if(rising_edge(sig)) then caseCurrent_stateis whens0=> rst:=rst+1; if(rst>=100) then if(a='1')then Current_state<=s1; count<=0; rst:=0; elsif(b='1')then Current_state<=s2; count<=799; rst:=0; endif; endif; whens1=> count<=count+1; if(b='1') then Current_state<=s0; count<=1000; elsif(count=100) then Current_state<=s3; endif; whens2=> count<=count-1; if(a='1') then Current_state<=s0; count<=1000; elsif(count=699) then Current_state<=s4; endif; whens3=> count<=count+1; if(b='1') then Current_state<=s0; count<=1000; elsif(count>=500) then Current_state<=s5; endif; whens4=> count<=count-1; if(a='1') then Current_state<=s0; count<=1000; elsif(count<=399) then Current_state<=s6; endif; whens5=> count<=count+1; if(b='1') then Current_state<=s4; elsif(count>=800) then Current_state<=s0; count<=1000; endif; whens6=> count<=count-1; if(a='1') then Current_state<=s3; elsif(count<=0) then Current_state<=s0; count<=1000; endif; endcase; endif; endprocessstatefsm; Yout: process(sig,count) begin if(rising_edge(sig)) then Y<=t; if(count<0orcount>=800) then t<="00011000"; elsif(count>0andcount<100) then t <="10011000"; elsif(count<200) then t <="01011000"; elsif(count<300) then t <="00111000"; elsif(count<500) then t <="00011000"; elsif(count<600) then t <="00011100"; elsif(count<700) then t <="00011010"; elsif(count<800) then t <="00011001"; endif; endif; endprocessYout; endBehavioral;------------------------------------------------------------------------------------Company:--Engineer:----CreateDate:23:54:1011/09/2011--DesignName:--ModuleName:fenpinqi-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:----Dependencies:----Revision:--Revision0.01-FileCreated--AdditionalComments:----------------------------libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;--Uncommentthefollowinglibrarydeclarationifusing--arithmeticfunctionswithSignedorUnsignedvalues--useIEEE.NUMERIC_STD.ALL;--Uncommentthefollowinglibrarydeclarationifinstantiating--anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityfenpinqiisPort(a:inSTD_LOGIC;b:outSTD_LOGIC);endfenpinqi;architectureBehavioraloffenpinqiisbegin process(a) variablecout:integer:=1; begin ifrising_edge(a)then cout:=cout+1; if(cout<=250000)thenb<='0'; elsif(cout<500000)thenb<='1'; elsecout:=0; endif; endif; endprocess;endBehavioral;----------------------------Company:--Engineer:----CreateDate:23:10:0811/08/2011--DesignName:--ModuleName:xiaodou-Behavioral--ProjectName:--TargetDevices:--Toolversions:--Description:----Dependencies:----Revision:--Revision0.01-FileCreated--AdditionalComments:----------------------------libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;--Uncommentthefollowinglibrarydeclarationifusing--arithmeticfunctionswithSignedorUnsignedvalues--useIEEE.NUMERIC_STD.ALL;--Uncommentthefollowinglibrarydeclarationifinstantiating--anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityxiaodouisPort(clk:inSTD_LOGIC; a:inSTD_LOGIC;b:outSTD_LOGIC);endxiaodou;architectureBehavioralofxiaodouistypestateis(s0,s1,s2,s3,s4,s5);signalCurrent_state :state:=s0;begin statefsm: process(clk,a) variablecount:integer:=300000; b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高考化学备考浙江选考专用版讲义专题1化学家眼中的物质世界第二单元
- 河北省正定中学2017-2018学年高一月考(四)英语试题
- 低年级数学课堂教育戏剧实践研究
- 新疆地区丙型肝炎发病数预测模型的研究
- 自媒体时代背景下高校辅导员网络思政工作对策研究
- 元旦特色亲子活动方案
- 2025版高中化学课时作业9化学反应的速率含解析新人教版必修2
- 2025版高考数学一轮复习第三章导数及其应用第4讲导数的综合应用第1课时利用导数解决不等式问题教案文新人教A版
- 企业设备购买合同范本
- 代持股转让合同范例
- 2025年浙江宁波市奉化区农商控股集团有限公司招聘笔试参考题库附带答案详解
- 2025年中考百日誓师大会校长发言稿:激扬青春志 决胜中考时
- YY/T 1860.1-2024无源外科植入物植入物涂层第1部分:通用要求
- 封条模板A4直接打印版
- 2022年度八年级美术抽测题库
- 义务教育《地理》课程标准(2022年版)
- 锅炉改造方案(省煤器)讲解-共18页
- 单细胞蛋白论文
- 021[学士]某六层框架宿舍楼毕业设计(含计算书、图纸)
- (完整版)高层钢结构住宅施工方案(非常详细)
- 云管理系统CRM系统操作手册
评论
0/150
提交评论