北邮数字电路与逻辑设计实验报告.docx

上传人:b****5 文档编号:11936836 上传时间:2023-04-16 格式:DOCX 页数:21 大小:74.95KB
下载 相关 举报
北邮数字电路与逻辑设计实验报告.docx_第1页
第1页 / 共21页
北邮数字电路与逻辑设计实验报告.docx_第2页
第2页 / 共21页
北邮数字电路与逻辑设计实验报告.docx_第3页
第3页 / 共21页
北邮数字电路与逻辑设计实验报告.docx_第4页
第4页 / 共21页
北邮数字电路与逻辑设计实验报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

北邮数字电路与逻辑设计实验报告.docx

《北邮数字电路与逻辑设计实验报告.docx》由会员分享,可在线阅读,更多相关《北邮数字电路与逻辑设计实验报告.docx(21页珍藏版)》请在冰豆网上搜索。

北邮数字电路与逻辑设计实验报告.docx

北邮数字电路与逻辑设计实验报告

北京邮电大学数字电路与逻辑

设计实验报告

学院:

班级:

姓名:

学号:

实验一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

SIGNALclktmp:

STD_LOGIC;

BEGIN

PROCESS(clk)

BEGIN

IFclk'eventANDclk='1'THEN

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<="011111";b<=cmod12;

when1=>en<="101111";b<=(1+c)mod12;

when2=>en<="110111";b<=(2+c)mod12;

when3=>en<="111011"

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1