北邮数字电路及逻辑设计实验报告.docx
- 文档编号:12278685
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:28
- 大小:768.49KB
北邮数字电路及逻辑设计实验报告.docx
《北邮数字电路及逻辑设计实验报告.docx》由会员分享,可在线阅读,更多相关《北邮数字电路及逻辑设计实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
北邮数字电路及逻辑设计实验报告
北京邮电大学数字电路与逻辑
设计实验报告
学院:
班级:
姓名:
学号:
实验一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、实验目的:
(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
IFclk'eventANDclk='1'THEN
IFtemp=24999999THEN
temp<=0;clktmp<=NOTclktmp;
ELSE
temp<=temp+1;
ENDIF;
ENDIF;
ENDPROCESS;
clk_out<=clktmp;
ENDbehave;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjxhshijinzhiIS
PORT(
CLK,CLEAR:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDjxhshijinzhi;
ARCHITECTUREAOFjxhshijinzhiIS
SIGNALQ_TEMP:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(CLK,clear)
BEGIN
IFCLEAR='1'THEN
Q_TEMP<="0000";
elsIF(CLK'EVENTANDCLK='1')THEN
IFQ_TEMP="1001"THEN
Q_TEMP<="0000";
ELSE
Q_TEMP<=Q_TEMP+1;
ENDIF;
ENDIF;
ENDPROCESS;
Q<=Q_TEMP;
ENDA;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYjxhshumaguanIS
PORT(a:
INSTD_LOGIC_VECTOR(3DOWNTO0);
b:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
c:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
ENDjxhshumaguan;
ARCHITECTUREseg7_archOFjxhshumaguanIS
BEGIN
PROCESS(a)
BEGIN
c<="011111";
CASEaIS
WHEN"0000"=>b<="01111110";--0
WHEN"0001"=>b<="00110000";--1
WHEN"0010"=>b<="01101101";--2
WHEN"0011"=>b<="01111001";--3
WHEN"0100"=>b<="00110011";--4
WHEN"0101"=>b<="01011011";--5
WHEN"0110"=>b<="01011111";--6
WHEN"0111"=>b<="01110000";--7
WHEN"1000"=>b<="01111111";--8
WHEN"1001"=>b<="01111011";--9
WHENOTHERS=>b<="00000000";
ENDCASE;
ENDPROCESS;
ENDseg7_arch;
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYjxhzuhedianluIS
PORT(
ain:
INSTD_LOGIC;
bin:
INSTD_LOGIC;
cout:
OUTSTD_LOGIC_VECTOR(7downto0);
cat:
OUTSTD_LOGIC_VECTOR(5downto0)
);
endjxhzuhedianlu;
ARCHITECTUREbehaveOFjxhzuhedianluIS
COMPONENTjxhfenpinqi
PORT(
clk:
INSTD_LOGIC;
clk_out:
OUTSTD_LOGIC
);
ENDCOMPONENT;
COMPONENTjxhshijinzhi
PORT(
clk,clear:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(3downto0)
);
ENDCOMPONENT;
COMPONENTjxhshumaguan
PORT(
a:
INSTD_LOGIC_VECTOR(3downto0);
b:
OUTSTD_LOGIC_VECTOR(7downto0);
c:
OUTSTD_LOGIC_VECTOR(5downto0)
);
endCOMPONENT;
SIGNALd:
STD_LOGIC;
SIGNALf:
STD_LOGIC_VECTOR(3downto0);
BEGIN
u1:
jxhfenpinqiPORTMAP(clk=>ain,clk_out=>d);
u2:
jxhshijinzhiPORTMAP(clk=>d,clear=>bin,q=>f);
u3:
jxhshumaguanPORTMAP(a=>f,b=>cout,c=>cat);
ENDbehave;
端口的绑定:
端口分析:
Ain是时钟信号的输入绑定了18串口,bin是置零信号绑定了20串口,cat5-0是每个数码管各自的绑定,根据板子上的串口数字绑定,cout7-0是数码管的每一个亮的部分,根据板子上的提示串口进行绑定,根据编程可以实现让数码管显示不同的数字。
电路图:
代码中是使用PORTMAP进行连接的
u1:
jxhfenpinqiPORTMAP(clk=>ain,clk_out=>d);
u2:
jxhshijinzhiPORTMAP(clk=>d,clear=>bin,q=>f);
u3:
jxhshumaguanPORTMAP(a=>f,b=>cout,c=>cat);
在此图中可以看出ain接分频器的clk,分频器的clk_out接十进制译码器的CLK,bin接十进制译码器的CLEAR,十进制译码器的Q接数码管的a,数码管的b,c分别接count和cat。
实验四数码管扫描显示控制器设计与实现
1、实验目的:
1.掌握VHDL语言的语法规范,掌握时序电路描述方法。
2.掌握多个数码管动态扫描现实的原理及设计方法。
2、实验所用器材:
1.计算机:
装有Quartus软件,为VHDL语言提供操作场所。
2.直流稳压电源:
通过USB接口实现,为实验开发板提供稳定电源。
3.数字系统与逻辑设计实验开发板:
使试验结果下载到开发板上,实现整个实验的最终结果。
三、实验任务要求
1.用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上。
2.用VHDL语言设计并实现六个数码管滚动显示电路。
(1)循环左滚动,始终点亮6个数码管,左出右进。
状态为:
012345→123450→234501→345012→450123→501234→012345
(2)向左滚动,用全灭的数码管填充右边,直至全部变灭,然后再一次从右边一个一个的点亮。
状态为012345→12345X→2345XX→345XXX→45XXXX→5XXXXX→XXXXXX→XXXXX0→XXXX01→XXX012→XX0123→X01234→012345,其中“X”表示数码管不显示。
4、实验原理
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率大于50HZ,将看不到闪烁现象。
如下图10-1,是多个数码管动态扫描显示的电路连接图。
当闪烁显示的发光二极管闪烁频率较高时我们将观察到持续点亮的现象。
同理,当多个数码管依次显示,当切换速度够快时,我们将观察到所有数码管都是同事在显示。
一个数码管要稳定显示要求显示频率>50hz,那么6个数码管则需要50*6=300hz以上才能看到持续稳定点亮的现象。
cat1~cat6是数码管选通控制信号,分别对应于6个共阴极数码管的公共端,当catn=’0’时,其对应的数码管被点亮。
因此,通过控制cat1~cat6,就可以控制6个数码管循环依次点亮。
5、代码及仿真波形图
1.实现六个数码管串行扫描电路的思路及代码:
串行数码管
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityjxhchuanxingis
port(
clear,clk_in:
instd_logic;
num:
outstd_logic_vector(6downto0);
cat:
outstd_logic_vector(5downto0));
endjxhchuanxing;
architectureoneofjxhchuanxingis
signalstatus:
integerrange0to6;
begin
process(clk_in)
begin
ifclear='0'thenstatus<=0;
elsif(clk_in'eventandclk_in='1')then
ifstatus=6thenstatus<=1;
elsestatus<=status+1;
endif;
endif;
endprocess;
process(status)
begin
casestatusis
when1=>num<="1111110";cat<="011111";
when2=>num<="0110000";cat<="101111";
when3=>num<="1101101";cat<="110111";
when4=>num<="1111001";cat<="111011";
when5=>num<="0110011";cat<="111101";
when6=>num<="1011011";cat<="111110";
whenothers=>num<="0000000";cat<="000000";
endcase;
endprocess;
endone;
仿真波形:
仿真波形分析:
由仿真波形可以看出数码管的串行显示得以实现,置零正常。
随着时钟输入的变化,数码管进行串行显示。
电路图:
端口连接:
Clk_in接18口,是时钟输入,cat5-0是每个数码管各自的绑定,根据板子上的串口数字绑定,num7-0是数码管的每一个亮的部分,根据板子上的提示串口进行绑定,根据编程可以实现让数码管显示不同的数字。
2.六个数码管滚动电路的思路及代码:
数码管滚动显示
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityjxhgundongis
port(
clk:
inSTD_LOGIC;
en:
outSTD_LOGIC_VECTOR(5downto0);
z:
outSTD_LOGIC_VECTOR(6downto0)
);
endjxhgundong;
architecturequanmiegundongofjxhgundongis
signala:
INTEGERRANGE0to6;
signalb:
INTEGERRANGE0to20;
signalc:
INTEGERRANGE0to3000;
signald:
INTEGERRANGE0to3000;
begin
p1:
process(a)
begin
caseais
when0=>en<=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字电路 逻辑设计 实验 报告