北邮数字电路与逻辑设计实验报告.doc
《北邮数字电路与逻辑设计实验报告.doc》由会员分享,可在线阅读,更多相关《北邮数字电路与逻辑设计实验报告.doc(20页珍藏版)》请在冰豆网上搜索。
北京邮电大学数字电路与逻辑
设计实验报告
学院:
班级:
姓名:
学号:
实验一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;
ENTITYshumaguanyimaqiIS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
B:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
C:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
ENDshumaguanyimaqi;
ARCHITECTUREencoder_archOFshumaguanyimaqiIS
BEGIN
PROCESS(A)
BEGIN
C<="011111";
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<="ZZZZZZZ";
ENDCASE;
ENDPROCESS;
ENDencoder_arch;
仿真波形图
仿真波形分析:
A是输入,A0-A3是由低位到高位变化,B是数码管的各个部分,随着A输入的变化,B数码管对应译码出相应的数字显示出来。
8421码转余三码
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjxhyusanmaIS
PORT(A:
INSTD_LOGIC_VECTOR(3DOWNTO0);
B:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjxhyusanma;
ARCHITECTUREtrans_ex3OFjxhyusanmaIS
BEGIN
PROCESS(A)
BEGIN
CASEAIS
WHEN"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;
ENDtrans_ex3;
仿真波形图
仿真波形分析:
8421码转换余三码,由0111转换成为了1010可以看出功能已经实现,仿真验证了代码功能正确。
奇校验
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYjxhjijiaoyanIS
PORT(A:
STD_LOGIC;
B:
STD_LOGIC;
C:
STD_LOGIC;
D:
STD_LOGIC;
F:
OUTSTD_LOGIC);
ENDjxhjijiaoyan;
ARCHITECTUREoneOFjxhjijiaoyanIS
SIGNALn1,n2:
STD_LOGIC;
BEGIN
n1<=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;
ENTITYjxhshijinzhijishuqiIS
PORT(
clk,reset:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjxhshijinzhijishuqi;
ARCHITECTUREaOFjxhshijinzhijishuqiIS
SIGNALq_temp:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk,reset)
BEGIN
IFreset='0'THEN
q_temp<="0000";
ELSIFclk'EVENTANDclk='1'THEN
IFq_temp="1001"THEN
q_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;
ENTITYjxhfenpinqiIS
PORT(
clk:
INSTD_LOGIC;
clear:
INSTD_LOGIC;
clk_out:
OUTSTD_LOGIC);
ENDjxhfenpinqi;
ARCHITECTUREaOFjxhfenpinqiIS
SIGNALtemp:
INTEGERRANGE0TO11;
BEGIN
p1:
PROCESS(clear,clk)
BEGIN
IFclear='0'THEN
temp<=0;
ELSIFclk'EVENTANDclk='1'THEN
IFtemp=11THEN
temp<=0;
ELSEtemp<=temp+1;
ENDIF;
ENDIF;
ENDPROCESSp1;
p2:
PROCESS(temp)
BEGIN
IFtemp<6THEN
clk_out<='0';
ELSEclk_out<='1';
ENDIF;
ENDPROCESSp2;
ENDa;
仿真波形
仿真波形分析:
分频器将频率分开,置零端正常工作,根据仿真波形可以看出来,分频器的功能得以正常实现。
组合电路
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjxhfenpinqiIS
PORT(
clk:
INSTD_LOGIC;
clk_out:
OUTSTD_LOGIC
);
ENDjxhfenpinqi;
ARCHITECTUREbehaveOFjxhfenpinqiIS
SIGNALtemp:
INTEGERRANGE0TO24999999;
SIGNALclktmp:
STD_LOGIC;
BEGIN
PROCESS(clk)
BEGIN
IF