




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国地质大学(武汉)机械与电子信息学院EDA试验报告学生姓名:张云江班号:075123学号:20121001075指导老师:王巍2014年7月实验一、3/8译码器的实现一.实验目的1.学习QuartusⅡ的基本操作;2.熟悉教学实验箱的使用3.设计一个3/8译码器和一个半加器;4.初步掌握VHDL语言和原理图的设计输入,编译,仿真和调试过程;二、实验步骤学习Quartus2软件的用法:在WINDOWS界面双击Quartus2图标进入Quartus2环境;单击file菜单下的NewProjectWizard:Introduction按照向导里面的介绍新建一个工程并把它保存到自己的路径下面。单击file菜单下的New,选择VHDLFile,后单击OK,就能创建一个后缀为.vhd(*.bdf)的文件。输入完成后检查并保存,编译。改错并重新编译;建立仿真波形文件并进行仿真。选择器件及分配引脚,重新编译;根据引脚分配在试验箱上进行连线,使用LED进行显示;程序下载,观察实验结果并记录。三、源程序1、3/8译码器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecode_3to8ISPORT(a,b,c:INSTD_LOGIC;y:outSTD_LOGIC_VECTOR(7DOWNTO0));ENDdecode_3to8;ARCHITECTURErt1OFdecode_3to8ISSIGNALindata:STD_LOGIC_VECTOR(2DOWNTO0);BEGINindata<=c&b&a;PROCESS(indata)BEGINCASEindataISWHEN"000"=>y<="10000000";WHEN"001"=>y<="01000000";WHEN"010"=>y<="00100000";WHEN"011"=>y<="00010000";WHEN"100"=>y<="00001000";WHEN"101"=>y<="00000100";WHEN"110"=>y<="00000010";WHEN"111"=>y<="00000001";WHENOTHERS=>y<="XXXXXXXX";ENDCASE;ENDPROCESS;ENDrt1;四、仿真波形1、3/8译码器五、心得体会通过这个实验我初步了解了Quartus2软件的用法,并能够用它编译程序、仿真及下载到试验箱上。在画波形图时,由于时间没有设置好,所以使波形有些时延,但大体还是可以的。在本次试验中,我感觉自己获益匪浅,在设计3/8译码器时,由于粗心打错了一些字母,导致在检查过程中出现了错误,所以在以后写程序时我会更加注意下,尽量减少这类错误的发生。实验二、BCD七段显示译码器实验一.实验目的1.了解和熟悉组合逻辑电路的设计方法和特点;2.掌握LED显示器的工作原理;3.设计一个BCD七段显示的译码器,并在实验箱上面实现你的译码器。二、源程序BCD七段显示译码器LIBRARYIEEE;--库说明USEIEEE.STD_LOGIC_1164.ALL;--使用标准库中STD_LOGIC_1164包ENTITYDECL7SIS--实体说明,实体名为decode_3to8PORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);EN:INSTD_LOGIC;LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREONEOFDECL7SIS--结构体说明BEGINPROCESS(A)BEGINIFEN='1'THENCASEAISWHEN"0000"=>LED7S<="1111110";WHEN"0001"=>LED7S<="0110000";WHEN"0010"=>LED7S<="1101101";WHEN"0011"=>LED7S<="1111001";WHEN"0100"=>LED7S<="0110011";WHEN"0101"=>LED7S<="1011011";WHEN"0110"=>LED7S<="1011111";WHEN"0111"=>LED7S<="1110000";WHEN"1000"=>LED7S<="1111111";WHEN"1001"=>LED7S<="1111011";WHEN"1010"=>LED7S<="1110111";WHEN"1011"=>LED7S<="0011111";WHEN"1100"=>LED7S<="1001110";WHEN"1101"=>LED7S<="0111101";WHEN"1110"=>LED7S<="1001111";WHEN"1111"=>LED7S<="1000111";WHENOTHERS=>NULL;ENDCASE;ELSELED7S<="0000000";ENDIF;ENDPROCESS;END;三、仿真波形:四、心得体会经过第一次实验的锻炼,第二次实验做的顺利了好多。在写程序过程中,也没有出现打错字的错误了,同时速度也比上次提高了好多。这次是做BCD七段显示译码器的实验,程序比第一次实验麻烦了一点,在下载程序时出现了问题,一直不能下载好,后来换了一条下载线才好。不过这次试验也是顺利做了出来,收获很大。实验三分频器的设计实现预习内容1.分频的原理2.分频的实现方法一、实验目的1.了解和熟悉时序逻辑电路的实现方法和特点;2.熟悉分频器的功用。二、源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYfdivISPORT(CLKIN:INSTD_LOGIC;CLKOUT1:OUTSTD_LOGIC;CLKOUT2:OUTSTD_LOGIC;CLKOUT3:OUTSTD_LOGIC);ENDfdiv;ARCHITECTURETWOoffdivISCONSTANTN:integer:=1;CONSTANTM:integer:=10;CONSTANTW:integer:=11;SIGNALcnt:STD_LOGIC_VECTOR(N-1DOWNTO0);SIGNALsnt:STD_LOGIC_VECTOR(M-1DOWNTO0);SIGNALant:STD_LOGIC_VECTOR(W-1DOWNTO0);BEGINPRO1:PROCESS(CLKIN)BEGINIF(CLKIN'EVENTANDCLKIN='1')THENcnt<=cnt+1;ENDIF;ENDPROCESS;CLKOUT1<=cnt(N-1);PRO2:PROCESS(CLKIN)BEGINIF(CLKIN'EVENTANDCLKIN='1')THENsnt<=snt+1;ENDIF;ENDPROCESS;CLKOUT2<=snt(M-1);PRO3:PROCESS(CLKIN)BEGINIF(CLKIN'EVENTANDCLKIN='1')THENant<=ant+1;ENDIF;ENDPROCESS;CLKOUT3<=ant(W-1);ENDTWO;三、仿真波形四、心得体会一开始没做出来,然后出现好多错误,老师说的把三个放在一起,所以又重新改了程序,才出来。结果老师还不验收了,很忧伤。实验四动态扫描数码显示器一、实验目的1.学习功能集成的设计方法;2.设计6位扫描数码显示器,显示“123456”。二、源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSCAN_LEDISPORT(CLK_IN:INSTD_LOGIC;SEL:OUTSTD_LOGIC_VECTOR(2DOWNTO0);DATA:OUTSTD_LOGIC_VECTOR(6DOWNTO0));END;ARCHITECTUREoneOFSCAN_LEDISSIGNALQ:STD_LOGIC_VECTOR(2DOWNTO0);BEGINPROCESS(Q)BEGINCASEQISWHEN"000"=>DATA<="0110000";---1WHEN"001"=>DATA<="1101101";--2WHEN"010"=>DATA<="1111001";---3WHEN"011"=>DATA<="0010011";---4WHEN"100"=>DATA<="1001011";---5WHEN"101"=>DATA<="1011111";---6WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;PROCESS(CLK_IN)BEGINIFCLK_IN'EVENTANDCLK_IN='1'THENQ<=Q+1;IFQ="111"THENQ<="000";ENDIF;ENDIF;SEL<=Q;ENDPROCESS;END;三、仿真波形心得体会介于前几次的试验,这次犯的错误还是不少,但明显更加熟练了,仿真下载,连引脚什么的都更加熟练了,前面的错误不再犯,以至于新的又不知道如何解决,幸好同学比较给力,怎么我也改不对的地方,同学加了一个说明就对,受益良多。实验五数字钟试验目的及要求设计一个数字钟,使之能够实现计时,报时,定时等功能二、源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityclockisport(clk:instd_logic;--12M时钟keyin:instd_logic;speak:outstd_logic;--蜂鸣器dout:outstd_logic_vector(7downto0);--段码selout:outstd_logic_vector(2downto0));--位选endclock;architectureoneofclockissignalcount:integerrange0to11999999;--1HZ秒信号signalcounf:integerrange0to11999;--1000HZSIGNALCP_5ms:STD_LOGIC;SIGNALQ1,Q2,Q3:STD_LOGIC;SIGNALkeyout :STD_LOGIC;SIGNALCJ:STD_LOGIC_VECTOR(2DOWNTO0);signalsel:std_logic_vector(2downto0);--位选signalhou1:std_logic_vector(3downto0);--计数中小时的十位signalhou2:std_logic_vector(3downto0);--小时的个位signalmin1:std_logic_vector(3downto0);--分钟的十位signalmin2:std_logic_vector(3downto0);--分钟的个位signalsec1:std_logic_vector(3downto0);--秒的十位signalsec2:std_logic_vector(3downto0);--秒的个位signalseth1:std_logic_vector(3downto0);--设时中小时的十位signalseth2:std_logic_vector(3downto0);--小时的个位signalsetm1:std_logic_vector(3downto0);--分钟的十位signalsetm2:std_logic_vector(3downto0);--分钟的个位signalh1:std_logic_vector(3downto0);---显示小时十位signalh2:std_logic_vector(3downto0);---小时的个位signalm1:std_logic_vector(3downto0);--分钟的十位signalm2:std_logic_vector(3downto0);--分钟的个位signals1:std_logic_vector(3downto0);--秒的十位signals2:std_logic_vector(3downto0);--秒的个位signalclk1,clkk,beep:std_logic;begin------------------------------------------------分频fp:process(clk)beginifrising_edge(clk)thencount<=count+1;counf<=counf+1;ifcount=1199thenclk1<='1';---1Hz count<=0; beep<='1'; elsifcount>5999thenbeep<='0'; ---2Hz elseclk1<='0'; endif;ifcounf=11999thenclkk<='1';--1000HZ counf<=0; elseclkk<='0';endif;endif;endprocessfp;----------------------------------------------位扫描choice:process(clkk)---位选扫描beginifrising_edge(clkk)thenifsel="111"thensel<="000";elsesel<=sel+1;endif;endif;endprocesschoice;--------------------------------------------秒个位s220:process(clk1,cj)beginifclk1'eventandclk1='1'thenifsec2="1001"then---其中sec2是秒的个位sec2<="0000";elsifcj="010"thensec2<=sec2;elsesec2<=sec2+1;endif;endif; ifcj="001"thensec2<="0000";---秒个位复位 endif;endprocesss220;---------------------------------------------秒十位s110:process(clk1,cj)beginifclk1'eventandclk1='1'thenif(sec1="0101"andsec2="1001")then---其中sec1是秒钟的十位sec1<="0000";elsifcj="010"thensec1<=sec1;elseifsec2="1001"thensec1<=sec1+1; endif; endif; endif; ifcj="001"thensec1<="0000";---秒十位复位 endif;endprocesss110;----------------------------------------------分钟个位m220:process(clk1,sec1,sec2,cj)beginifclk1'eventandclk1='1'thenifmin2="1001"and(sec1="0101"andsec2="1001")then----其中min2是分钟的个位min2<="0000";elsifmin2="1001"and(cj="011"andcj="100")then---min2<="0000";elseif(sec1="0101"andsec2="1001")or(cj="011"andcj="100")thenmin2<=min2+1; endif; endif; endif; ifcj="001"thenmin2<="0000"; endif;endprocessm220;-----------------------------------------------分钟十位m110:process(clk1,min2,sec1,sec2,cj)beginifclk1'eventandclk1='1'thenif(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001")thenmin1<="0000";elsifmin1="0101"andmin2="1001"and(cj="011"andcj=100)thenmin1<="0000";elsif(min2="1001"and(sec1="0101"andsec2="1001"))or(min2="1001"andcj="011"andcj="100")thenmin1<=min1+1;endif;endif;--endif; ifcj="001"thenmin1<="0000"; endif;endprocessm110;-----------------------------------------------小时个位h220:process(clk1,min1,min2,sec1,sec2,cj,hou1)beginifclk1'eventandclk1='1'thenif(hou1="0010"andhou2="0011")and(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001")thenhou2<="0000";elsifhou2="1001"and(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001")thenhou2<="0000";elsif(hou2="1001"andcj="110")or(hou1="0010"andhou2="0011"andcj="110")thenhou2<="0000";--md<='1';elsif((min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001"))or(cj="110")thenhou2<=hou2+1;--speak<=clk;endif;endif; ifcj="001"thenhou2<="0000"; endif;endprocessh220;-----------------------------------------------小时十位h110:process(clk1,hou2,min1,min2,sec1,sec2,cj)beginifclk1'eventandclk1='1'thenif(hou1="0010"andhou2="0011")and(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001")thenhou1<="0000";elsifhou1="0010"andhou2="0011"andcj="110"then--当时间为23点且处于校时状态时hou1<="0000";elsif(hou2="1001"and(min1="0101"andmin2="1001")and(sec1="0101"andsec2="1001"))or(hou2="1001"andcj="110")thenhou1<=hou1+1;endif;endif; ifcj="001"thenhou1<="0000"; endif;endprocessh110;-------------------------------------------时间设置小时部分sethour1:process(clk1,seth1,seth2,cj)beginifclk1'eventandclk1='1'thenifseth1="0010"andseth2="0011"thenseth1<="0000";elsifseth2="1001"thenseth1<=seth1+1;endif;endif; ifcj="001"thenseth1<="0000"; endif;endprocesssethour1;-------------------------------------------sethour2:process(clk1,seth1,cj)beginifclk1'eventandclk1='1'thenif(seth1="0010"andseth2="0011")orseth2="1001"then---其中seth1,seth2分别是调时的小时部位的十位与个位seth2<="0000";elsifcj="111"thenseth2<=seth2+1;endif;endif; ifcj="001"thenseth2<="0000"; endif;endprocesssethour2;-------------------------------------------时间设置分钟部分setmin1:process(clk1,setm2,cj)beginifclk1'eventandclk1='1'thenifsetm1="0101"andsetm2="1001"thensetm1<="0000";elsifsetm2="1001"thensetm1<=setm1+1;endif;endif; ifcj="001"thensetm1<="0000"; endif;endprocesssetmin1;----------------------------------------------setmin2:process(clk1,cj)beginifclk1'eventandclk1='1'thenifsetm2="1001"thensetm2<="0000";elsifcj="101"thensetm2<=setm2+1;endif;endif; ifcj="001"thensetm2<="0000"; endif;endprocesssetmin2;--------------------------------------------闹铃speaker:process(clkk,hou1,hou2,min1,min2,cj)beginifclkk'eventandclkk='1'thenifseth1=hou1andseth2=hou2andsetm1=min1andsetm2=min2thenspeak<=beep;elsespeak<='0';endif;endif; ifcj="001"thenspeak<='0'; endif;endprocessspeaker;-------------------------------------------disp:process(sel,cj,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)---显示beginifsel="000"thenselout<="010";--位选caseh1is---显示小时的十位when"0000"=>dout<="00111111";---0when"0001"=>dout<="00000110";---1when"0010"=>dout<="01011011";---2whenothers=>dout<="00000000";---不显示endcase;elsifsel="001"thenselout<="011";caseh2is---显示小时的个位when"0000"=>dout<="10111111";---0when"0001"=>dout<="10000110";---1when"0010"=>dout<="11011011";---2when"0011"=>dout<="11001111";---3when"0100"=>dout<="11100110";---4when"0101"=>dout<="11101101";---5when"0110"=>dout<="11111101";---6when"0111"=>dout<="10000111";---7when"1000"=>dout<="11111111";---8when"1001"=>dout<="11101111";---9whenothers=>dout<="10000000";---不显示endcase; elsifsel="010"thenselout<="100";casem1is---显示分钟的十位when"0000"=>dout<="00111111";when"0001"=>dout<="00000110";when"0010"=>dout<="01011011";when"0011"=>dout<="01001111";when"0100"=>dout<="01100110";when"0101"=>dout<="01101101";whenothers=>dout<="00000000";endcase;elsifsel="011"thenselout<="101";casem2is---显示分钟的个位when"0000"=>dout<="10111111";when"0001"=>dout<="10000110";when"0010"=>dout<="11011011";when"0011"=>dout<="11001111";when"0100"=>dout<="11100110";when"0101"=>dout<="11101101";when"0110"=>dout<="11111101";when"0111"=>dout<="10000111";when"1000"=>dout<="11111111";when"1001"=>dout<="11101111";whenothers=>dout<="10000000";endcase; elsifsel="100"thenselout<="110";cases1is---显示秒的十位when"0000"=>dout<="00111111";when"0001"=>dout<="00000110";when"0010"=>dout<="01011011";when"0011"=>dout<="01001111";when"0100"=>dout<="01100110";when"0101"=>dout<="01101101";whenothers=>dout<="00000000";endcase;elsifse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 哈尔滨2024高三数学试卷
- 海纳教育数学试卷
- 河东一年级数学试卷
- 2025-2030年中国邮件输送分拣系统项目投资可行性研究分析报告
- 2025年中国汽车外部清洗机行业市场发展前景及发展趋势与投资战略研究报告
- 2025年中国冷冻离心机行业发展监测及投资战略规划研究报告
- 轨枕垫行业深度研究分析报告(2024-2030版)
- 2024年中国精制镍行业市场调查报告
- 2025年中国选矿机械行业市场行情动态研究报告
- 健康用药课件图片素材
- 间隙感染患者的健康宣教
- 2025年执业兽医师基础知识考试试题(附答案)
- 煤矿开展消防安全知识培训
- 甘肃机电职业技术学院招聘事业编制工作人员笔试真题2024
- 医疗不良事件管理体系建设与持续改进
- 小学英语素材-1-5年级英语牛津词汇表(带音标) 牛津上海版
- 2022年重庆出版集团有限公司招聘笔试试题及答案解析
- DB11-T1836-2021 城市桥梁工程施工技术规程高清最新版
- 大猪料配方设计思路课件
- 川崎病课件讲稿
- 《优质提问教学法-让每个学生都参与其中》读书笔记
评论
0/150
提交评论