版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
./数字电路与逻辑设计实验姓名***学院信息与通信工程学院专业信息工程班级***学号****班序号***实验一一、实验名称和实验任务要求实验容:QuartusII原理图输入法设计与实现。实验目的:熟悉用QuartusII原理图输入法进行电路设计和仿真。掌握QuartusII图形模块单元的生成与调用。熟悉实验板的使用。实验任务要求:用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。用实验容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。用3线—8线译码器〔74LS138和逻辑门实现函数F=</𝐶></𝐵></𝐴>+</𝐶>𝐵</𝐴>+𝐶</𝐵></𝐴>+𝐶𝐵𝐴,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。二、原理图半加器模块和逻辑门设计实现的全加器:三、仿真波形图及分析电路实现了全加器的功能。全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ain⊕bin⊕cincout=〔ain⊕bincin+ain*bin。列出真值表:输入输出ainbincincoutsum0000000101010010111010001101101101011111仿真波形对比真值表,可以看出波形图与理论值完全符合。四、故障及问题分析1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟也没继续下载。解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。实验二一、实验名称和实验任务要求实验容:用VHDL设计与实现组合逻辑电路。实验目的:熟悉用VHDL语言设计组合逻辑电路的方法。熟悉用QuartusII文本输入法进行电路设计。实验任务要求:用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出‘0’,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,7段数码管显示输出信号。二、VHDL代码奇校验器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYjijiaoyanqiISPORT<A:STD_LOGIC;B:STD_LOGIC;C:STD_LOGIC;D:STD_LOGIC;F:OUTSTD_LOGIC>;ENDjijiaoyanqi;ARCHITECTUREoneOFjijiaoyanqiISSIGNALn1,n2:STD_LOGIC;BEGINn1<=AXORB;n2<=n1XORC;F<=n2XORD;--异或,A⊕B⊕C⊕DENDone;8421码转余3码LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYbasizhuanyu3ISPORT<A:INSTD_LOGIC_VECTOR<3DOWNTO0>;B:OUTSTD_LOGIC_VECTOR<3DOWNTO0>>;ENDbasizhuanyu3;ARCHITECTUREzhuanyu3OFbasizhuanyu3ISBEGINPROCESS<A>BEGINCASEAISWHEN"0000"=>B<="0011";WHEN"0001"=>B<="0100";WHEN"0010"=>B<="0101";WHEN"0011"=>B<="0110";WHEN"0100"=>B<="0111";WHEN"0101"=>B<="1000";WHEN"0110"=>B<="1001";WHEN"0111"=>B<="1010";WHEN"1000"=>B<="1011";WHEN"1001"=>B<="1100";WHENOTHERS=>B<="ZZZZ";ENDCASE;ENDPROCESS;ENDzhuanyu3;数码管译码器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYshumaguanyimaqiISPORT<A:INSTD_LOGIC_VECTOR<3DOWNTO0>;B:OUTSTD_LOGIC_VECTOR<6DOWNTO0>;C:OUTSTD_LOGIC_VECTOR<5DOWNTO0>>;ENDshumaguanyimaqi;ARCHITECTUREshumaOFshumaguanyimaqiISBEGINPROCESS<A>BEGINC<="011111";CASEAISWHEN"0000"=>B<="1111110";--0WHEN"0001"=>B<="0110000";--1WHEN"0010"=>B<="1101101";--2WHEN"0011"=>B<="1111001";--3WHEN"0100"=>B<="0110011";--4WHEN"0101"=>B<="1011011";--5WHEN"0110"=>B<="1011111";--6WHEN"0111"=>B<="1110000";--7WHEN"1000"=>B<="1111111";--8WHEN"1001"=>B<="1111011";--9WHENOTHERS=>B<="ZZZZZZZ";ENDCASE;ENDPROCESS;ENDshuma;三、故障及问题分析1、问题:代码写好以后编译出现错误,Error<10568>:VHDLerroratjijiaoyanqi.vhd<17>:can'twritetointerfaceobject"partout"ofmodeIN,由于报错指到了第17行F<=n2XORD;导致我开始的时候没意识到这是哪里的错误。解决方法:在百度查了以后发现是F:OUTSTD_LOGIC>;这句我写成了F:INSTD_LOGIC>;以后要注意少犯这些马虎的错误。2、问题:把代码下载到板子上的过程中,再次出现了第一节课出现的下载停止的问题,再次尝试后也没有下载成功,第三次接线的时候等了好久,HardwareSetup窗口也没有显示有硬件接入。解决方法:换了一台电脑尝试然后成功了,我觉得可能是两个原因,一是我反复操作导致软件反应时间长,二是我本来用的电脑接口连接不好。实验三一、实验名称和实验任务要求实验容:用VHDL设计与实现时序逻辑电路。实验目的:熟悉用VHDL语言设计时序逻辑电路的方法。熟悉用QuartusII文本输入法进行电路设计。实验任务要求:用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器。要求在QuartusII平台上设计程序并仿真验证设计。用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。要求用按键设定输入信号,发光二极管显示输出信号。将〔1、〔2和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。二、模块端口说明及连接图整个电路输入端:时钟信号clk,复位键clr。分频器及计数器的端口连接:复位键clr作为分频器复位键clr1、8421十进制计数器复位键clr2;时钟信号clk作为分频器的时钟信号clk1,分频器输出CLK_OUT1作为8421十进制计数器的时钟信号clk2;计数器的输出Q[0,1,2,3]作为数码管译码器的输入a[0,1,2,3]。整个电路输出端:b[0,1,2,3,4,5,6],分别对应7段数码管;c[0,1,2,3,4,5],分别对应6个数码管译码器。三、VHDL代码〔18421十进制计数器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYZY8421shijinzhiIS PORT<CLK2,CLR2:INSTD_LOGIC; Q:OUTSTD_LOGIC_VECTOR<3DOWNTO0>>;ENDZY8421shijinzhi;ARCHITECTUREbehaveOFZY8421shijinzhiIS SIGNALQ_temp:STD_LOGIC_VECTOR<3DOWNTO0>; BEGIN PROCESS<CLK2,CLR2> BEGIN IFCLR2='1'THENQ_temp<="0000"; ELSIFCLK2'EVENTANDCLK2='1'THEN IFQ_temp="1001"THENQ_temp<="0000"; ELSEQ_temp<=Q_temp+1; ENDIF; ENDIF; ENDPROCESS; Q<=Q_temp;ENDbehave;<2>分频器:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdiv_50MIS PORT<CLK1,CLR1:INSTD_LOGIC; CLK_OUT1:OUTSTD_LOGIC>;ENDdiv_50M;ARCHITECTUREbehaveOFdiv_50MIS SIGNALtemp:INTEGERRANGE0TO24999999; SIGNALclkout:STD_LOGIC; BEGIN PROCESS<CLK1,CLR1> BEGIN IFCLR1='1'THENtemp<=0; ELSIFCLK1'EVENTANDCLK1='1'THEN IFtemp=24999999THENtemp<=0;clkout<=NOTclkout; ELSEtemp<=temp+1; ENDIF; ENDIF; ENDPROCESS; CLK_OUT1<=clkout;ENDbehave;<3>将分频器、8421十进制计数器和数码管译码器3个电路的连接电路LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYfunction3IS PORT<CLK,CLR:INSTD_LOGIC; b:OUTSTD_LOGIC_VECTOR<6DOWNTO0>; c:OUTSTD_LOGIC_VECTOR<5DOWNTO0>>;ENDfunction3;ARCHITECTUREa1OFfunction3ISCOMPONENTdiv_50M--调用分频器和计数器两个元件 PORT<CLK1,CLR1:INSTD_LOGIC; CLK_OUT1:OUTSTD_LOGIC>; ENDCOMPONENT; COMPONENTZY8421shijinzhi PORT<CLK2,CLR2:INSTD_LOGIC; Q:OUTSTD_LOGIC_VECTOR<3DOWNTO0>>; ENDCOMPONENT;SIGNALa:STD_LOGIC_VECTOR<3DOWNTO0>;SIGNALclkin:STD_LOGIC;BEGIN u1:div_50MPORTMAP<CLK1=>CLK,CLR1=>CLR,CLK_OUT1=>clkin>; u2:ZY8421shijinzhiPORTMAP<CLK2=>clkin,CLR2=>CLR,Q=>a>; PROCESS<a> BEGIN c<="110111";--左数第三个数码管亮 CASEaIS WHEN"0000"=>b<="1111110";--0 WHEN"0001"=>b<="0110000";--1 WHEN"0010"=>b<="1101101";--2 WHEN"0011"=>b<="1111001";--3 WHEN"0100"=>b<="0110011";--4 WHEN"0101"=>b<="1011011";--5 WHEN"0110"=>b<="1011111";--6 WHEN"0111"=>b<="1110000";--7 WHEN"1000"=>b<="1111111";--8 WHEN"1001"=>b<="1111011";--9 WHENOTHERS=>b<="1111110";--0 ENDCASE; ENDPROCESS;END;四、仿真波形图及分析分析仿真波形图可知,c为110111,左数第三个数码管亮;数码管译码器循环显示0到9这10个数字;复位信号CLK是高电平有效,从波形中看出CLR=1时输出b=1111110,数码管显示数字0。五、故障及问题分析1、问题:分频器代码编译成功后准备下载到板子上,在准备设置端口时,出现了这个跟之前不一样界面,没办法下载代码。解决方法:后来发现是最开始的时候,器件设置有问题,应该按照书上讲的在Availabledevices栏选择EPM11270T144C5这个型号。前两次实验都没有犯这个错误,我认识到我不应该忽视前面的必要步骤,某个小细节的不注意可能会导致重做整个项目。2、问题:把〔3的代码写好后编译出现错误,Error<10313>:VHDLCaseStatementerroratfunction3.vhd<30>:CaseStatementchoicesmustcoverallpossiblevaluesofexpression。解决方法:后来我检查发现是穷举法中的可能情况里忘了写WHENOTHERS=>b<="0000000";这一行,导致情况包括不完全而报错。3、问题:仿真波形中b的显示类似乱码,并不是预想的二进制码。解决方法:老师讲解后知道了应该在CountValue选项中的Radix栏选择Binary。实验四一、实验名称和实验任务要求实验容:用VHDL设计与实现相关电路。实验目的:掌握VHDL语言的语法规,掌握时序电路描述方法。掌握多个数码管动态扫描显示的原理及设计方法。实验任务要求:用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示"班号—班序号"这6个数字图形到6个数码管,仿真验证其功能,并下载到实验板测试。用VHDL语言设计并实现六个数码管滚动显示电路。循环左滚动,始终点亮6个数码管,左出右进。状态为:124-17,24-171,4-1712,-17124,17124-,7124-1,124-17。模块端口说明及连接图输入端:clk时钟信号输出端:partout[0,1,2,3,4,5,6],分别对应7段数码管;catout[0,1,2,3,4,5]:分别对应6个数码管译码器三、VHDL代码〔1同时显示"班号—班序号"这六个数字图形到6个数码管libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityZY12417isport<clk:instd_logic;partout:outstd_logic_vector<6downto0>;catout:outstd_logic_vector<5downto0>>;endZY12417;architectureaofZY12417issignalpart:std_logic_vector<6downto0>;signalcat:std_logic_vector<5downto0>;signaltempclk:std_logic;signalcount:integerrange0to1999;--为便于仿真,仿真图对应代码将分频改成了50constantM:integer:=1999;beginp1:process<clk>begin if<clk'eventandclk='1'>then ifcount=Mthencount<=0;tempclk<=nottempclk; elsecount<=count+1; endif; endif;endprocessp1;p2:process<tempclk>begin if<tempclk'eventandtempclk='1'>then casecatis when"111110"=>cat<="011111";part<="0110000";--1 when"011111"=>cat<="101111";part<="1101101";--2 when"101111"=>cat<="110111";part<="0110011";--4 when"110111"=>cat<="111011";part<="0000001";--- when"111011"=>cat<="111101";part<="0110000";--1 when"111101"=>cat<="111110";part<="1110000";--7 whenothers=>cat<="011111";part<="0110000";--1 endcase; endif;endprocessp2;catout<=cat;partout<=part;enda;〔2滚动显示电路〔选做LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYgundongxianshiISPORT<clk,clear:INSTD_LOGIC;catout:OUTSTD_LOGIC_VECTOR<6DOWNTO0>;partout:OUTSTD_LOGIC_VECTOR<5DOWNTO0>>;ENDgundongxianshi;ARCHITECTUREaOFgundongxianshiISSIGNALcat:STD_LOGIC_VECTOR<6DOWNTO0>;SIGNALpart:STD_LOGIC_VECTOR<5DOWNTO0>;SIGNALt,cnt1:INTEGERRANGE0TO11;SIGNALtmp:INTEGERRANGE0TO15999;SIGNALclk1:STD_LOGIC;BEGINp0:PROCESS<clk,clear>BEGINIFclear='0'THENtmp<=0;ELSIFclk'EVENTANDclk='1'THENIFtmp=15999THENtmp<=0;ELSEtmp<=tmp+1;ENDIF;ENDIF;ENDPROCESSp0;p1:PROCESS<tmp>BEGINIFclk'EVENTANDclk='1'THENIFtmp<1000THENclk1<='0';ELSEclk1<='1';ENDIF;ENDIF;ENDPROCESSp1;p2:PROCESS<clk>BEGINIF<clk'EVENTANDclk='1'>THENIF<cnt=11>THENt<=0;ELSEt<=cnt+1;ENDIF;ENDIF;ENDPROCESSp2;p3:PROCESS<clk1>BEGINIF<clk1'EVENTANDclk1='1'>THENIF<cnt1=11>THENt1<=0;ELSEt1<=cnt1+1;ENDIF;ENDIF;ENDPROCESSp3;p4:PROCESS<cnt,cnt1>BEGINIF<clear='0'>THENcat<="0000000";ELSECASEt+cnt1ISWHEN6=>cat<="0110000";WHEN7=>cat<="1101101";WHEN8=>cat<="0110011";WHEN9=>cat<="0000001";WHEN10=>cat<="1101101";WHEN11=>cat<="1101101";WHENOTHERS=>cat<="0000000";ENDCASE;ENDIF;ENDPROCESSp4;catout<=cat;p5:PROCESS<cnt>BEGINIF<clear='0'>THENpart<="111111";ELSECASEtISWHEN0=>part<="011111";WHEN1=>part<="101111";WHEN2=>part<="110111";WHEN3=>part<="111011";WHEN4=>part<="111101";WHEN5=>part<="111110";WHENOTHERS=>part<="111111";ENDCASE;ENDIF;ENDPROCESSp5;partout<=part;ENDa;仿真波形图及分析同时显示"班号—班序号"这六个数字图形到6个数码管分析仿真波形图可知,数码管译码器从左到右依次显示124-17:从左边数,第一个数字catout=011111对应partout=0110000,数码管显示数字1;第二个数字catout=101111对应partout=1101101,数码管显示数字2;第三个数字catout=110111对应partout=0110011,数码管显示数字4;第四个数字catout=111011对应partout=0000001,数码管显示符号"—";第五个数字catout=111101对应partout=0110000,数码管显示数字1;第六个数字catout=111110对应partout=1110000,数码管显示数字7;当频率足够大,扫描速度很快时,人眼将能看到持续稳定的124-17的图像。在实验室实际测试时,下载到电路板测试成功。五、故障及问题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 方管隔断施工方案(3篇)
- 景观汉阙设计施工方案(3篇)
- 桥上布线施工方案说明(3篇)
- 水厂拆除安全施工方案(3篇)
- 泡沫砼施工方案路基(3篇)
- 物业发事件应急预案(3篇)
- 电梯地坑基础施工方案(3篇)
- 砼院坪施工方案(3篇)
- 管道交叉施工方案编制(3篇)
- 衣服美甲店活动方案策划(3篇)
- 2025年耳鼻喉科医生岗位招聘面试参考题库及参考答案
- TCECS 1323-2023 充气膜结构技术规程
- 锤炼战斗精神 砥砺血性胆气
- 无人机飞控减震结构考试试卷和答案
- 高层封窗户安全协议书
- 加盟美宜佳合同跟协议
- smt车间管理规章制度
- 村级妇联换届选举课件
- 秋季朋克青年硬核养生节活动方案
- 呼吸功能障碍课件
- 2025年全国高考(新课标Ⅰ卷)数学真题卷含答案解析
评论
0/150
提交评论