北京邮电大学数字电路与逻辑设计实验报告学院:班级:姓名:学号:实验一QuartusII原理图输入法设计与实现一、实验目的:(1)熟悉QuartusII原理图输入法进行电路设计和仿真;(2)掌握QuartusII图形模块单元的生成与调用;(3)熟悉实验板的使用;二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。三、实验任务要求(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。(2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。(3)用3线-8线译码器(74LS138)和逻辑门设计实现函数,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。四、实验原理图及仿真波形图(1)半加器半加器原理图仿真波形仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了半加器的功能。但我们也可以发现输出SO出现了静态功能冒险,要消除该冒险可以加入相应的选通脉冲。(2)全加器全加器原理图仿真波形仿真波形图分析:根据仿真波形对比半加器真值表,可以确定电路实现了全加器的功能(2)741383线-8线译码器原理图仿真波形图仿真波形图分析;当且仅当ABC输入为000、010、100、111时,F=1,可知电路实现了函数。实验二用VHDL设计与实现组合逻辑电路一、实验目的:(1)熟悉用VHDL语言设计时序逻辑电路的方法;(2)熟悉用QuartusII文本输入法进行电路设计;(3)熟悉不同的编码及其之间的转换。二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。三、实验任务要求(1)用VHDL语言设计实现一个共阴极7段数码管译码器;(2)用VHDL语言设计一个8421码转余三码的代码转换器;(3)用VHDL语言设计设计一个四位2进制奇校验器。四、实验代码及仿真波形图数码管译码器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;ARCHITECTUREencoder_archOFshumaguanyimaqiISBEGINPROCESS(A)BEGINC=011111;CASEAISWHEN0000=B=1111110;--0WHEN0001=B=0110000;--1WHEN0010=B=1101101;--2WHEN0011=B=1111001;--3WHEN0100=B=0110011;--4WHEN0101=B=1011011;--5WHEN0110=B=1011111;--6WHEN0111=B=1110000;--7WHEN1000=B=1111111;--8WHEN1001=B=1111011;--9WHENOTHERS=B=ZZZZZZZ;ENDCASE;ENDPROCESS;ENDencoder_arch;仿真波形图仿真波形分析:A是输入,A0-A3是由低位到高位变化,B是数码管的各个部分,随着A输入的变化,B数码管对应译码出相应的数字显示出来。8421码转余三码LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjxhyusanmaISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);B:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDjxhyusanma;ARCHITECTUREtrans_ex3OFjxhyusanmaISBEGINPROCESS(A)BEGINCASEAISWHEN0000=B=0011;WHEN0001=B=0100;WHEN0010=B=0101;WHEN0011=B=0110;WHEN0100=B=0111;WHEN0101=B=1000;WHEN0110=B=1001;WHEN0111=B=1010;WHEN1000=B=1011;WHEN1001=B=1100;WHENOTHERS=B=ZZZZ;ENDCASE;ENDPROCESS;ENDtrans_ex3;仿真波形图仿真波形分析:8421码转换余三码,由0111转换成为了1010可以看出功能已经实现,仿真验证了代码功能正确。奇校验LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYjxhjijiaoyanISPORT(A:STD_LOGIC;B:STD_LOGIC;C:STD_LOGIC;D:STD_LOGIC;F:OUTSTD_LOGIC);ENDjxhjijiaoyan;ARCHITECTUREoneOFjxhjijiaoyanISSIGNALn1,n2:STD_LOGIC;BEGINn1=AXORB;n2=n1XORC;F=n2XORD;ENDone;仿真波形图仿真波形分析:当ABCD为1111时,输出F为0,ABCD为1110时,输出F为1,可见奇校验功能得以实现。实验三用VHDL设计与实现时序逻辑电路一、实验目的:(1)熟悉用VHDL语言设计时序逻辑电路的方法;(2)熟悉用QuartusII文本输入法进行电路设计;(3)熟悉不同的编码及其之间的转换。二、实验所用器材:(1)计算机;(2)直流稳压电源;(3)数字系统与逻辑设计实验开发板。三、实验任务要求(1)用VHDL语言设计实现一个8421十进制计数器;(2)用VHDL语言设计一个分频器;(3)将(1)、(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。四、实验代码及仿真波形图8421十进制计数器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjxhshijinzhijishuqiISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDjxhshijinzhijishuqi;ARCHITECTUREaOFjxhshijinzhijishuqiISSIGNALq_temp:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(clk,reset)BEGINIFreset='0'THENq_temp=0000;ELSIFclk'EVENTANDclk='1'THENIFq_temp=1001THENq_temp=0000;ELSEq_temp=q_temp+1;ENDIF;ENDIF;ENDPROCESS;q=q_temp;ENDa;仿真波形图仿真波形图分析:8421十进制计数器随着时钟的信号进行计数,restart是复位,当复位为零的时候计数器重新计数。根据仿真结果来看,8421十进制计数器功能得以实现。分频器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjxhfenpinqiISPORT(clk:INSTD_LOGIC;clear:INSTD_LOGIC;clk_out:OUTSTD_LOGIC);ENDjxhfenpinqi;ARCHITECTUREaOFjxhfenpinqiISSIGNALtemp:INTEGERRANGE0TO11;BEGINp1:PROCESS(clear,clk)BEGINIFclear='0'THENtemp=0;ELSIFclk'EVENTANDclk='1'THENIFtemp=11THENtemp=0;ELSEtemp=temp+1;ENDIF;ENDIF;ENDPROCESSp1;p2:PROCESS(temp)BEGINIFtemp6THENclk_out='0';ELSEclk_out='1';ENDIF;ENDPROCESSp2;ENDa;仿真波形仿真波形分析:分频器将频率分开,置零端正常工作,根据仿真波形可以看出来,分频器的功能得以正常实现。组合电路LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjxhfenpinqiISPORT(clk:INSTD_LOGIC;clk_out:OUTSTD_LOGIC);ENDjxhfenpinqi;ARCHITECTUREbehaveOFjxhfenpinqiISSIGNALtemp:INTEGERRANGE0TO24999999;SIGNALclktmp:STD_LOGIC;BEGINPROCESS(clk)BEGINIFclk'eventANDclk='1'THENIFtemp=24999999THENtemp=0;clktmp=NOTclktmp;ELSEtemp=temp+1;ENDIF;ENDIF;ENDPROCESS;clk_out=clktmp;ENDbehave;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjxhshijinzhiISPORT(CLK,CLEAR:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDjxhshijinzhi;ARCHITECTUREAOFjxhshijinzhiISSIGNALQ_TEMP:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK,clear)BEGINIFCLEAR='1'THENQ_TEMP=0000;elsIF(CLK'EVENTANDCLK='1')THENIFQ_TEMP=1001THENQ_TEMP=0000;ELSEQ_TEMP=Q_TEMP+1;ENDIF;ENDIF;ENDPROCESS;Q=Q_TEMP;ENDA;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYjxhshumaguanISPORT(a:INSTD_LOGIC_VECTOR(3DOWNTO0);b:OUTSTD_LOGIC_VECTOR(7DOWNTO0);c:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDjxhshumaguan;ARCHITECTUREseg7_archOFjxhshumaguanISBEGINPROCESS(a)BEGINc=011111;CASEaISWHEN0000=b=01111110;--0WHEN0001=b=00110000;--1WHEN0010=b=01101101;--2WHEN0011=b=01111001;--3WHEN0100=b=00110011;--4WHEN0101=b=01011011;--5WHEN0110=b=01011111;--6WHEN0111=b=01110000;--7WHEN1000=b=01111111;--8WHEN1001=b=01111011;--9WHENOTHERS=b=00000000