北邮大二下数电实验报告Word文件下载.docx

上传人:b****1 文档编号:425640 上传时间:2023-04-28 格式:DOCX 页数:21 大小:228.44KB
下载 相关 举报
北邮大二下数电实验报告Word文件下载.docx_第1页
第1页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第2页
第2页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第3页
第3页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第4页
第4页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第5页
第5页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第6页
第6页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第7页
第7页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第8页
第8页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第9页
第9页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第10页
第10页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第11页
第11页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第12页
第12页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第13页
第13页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第14页
第14页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第15页
第15页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第16页
第16页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第17页
第17页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第18页
第18页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第19页
第19页 / 共21页
北邮大二下数电实验报告Word文件下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

北邮大二下数电实验报告Word文件下载.docx

《北邮大二下数电实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《北邮大二下数电实验报告Word文件下载.docx(21页珍藏版)》请在冰点文库上搜索。

北邮大二下数电实验报告Word文件下载.docx

全加器与半加器的区别在于全加器有一个低进位CI,从外部特性来看,它是一个三输入两输出的器件。

◎设计过程

(1)全加器的真值表如下

AIBICISOCO

00000

00110

01010

01101

10010

10101

11001

11111

*其中AI为被加数,BI为加数,CI为相邻低位来的进位数。

输出本位和为SO,向相邻高位进位数为CO。

(2)根据真值表写出逻辑表达式:

SO,AI,BI,CI,CO,(AI,BI),CI,AI,BI

根据逻辑表达式,可以知道只要在半加器的基础上再加入一个异或门、一个两输入与门和两输入或门即可实现全加器。

根据仿真波形对比全加器真值表,可以确定电路实现了全加器的功能。

(三)3线—8线译码器

8线译码器(74LS138)和逻辑门设计实现函数用3线—

F,CBA,CBA,CBA,CBA,仿真验证其功能,并下载到实验板测试。

要求用拨

码开关设定输入信号,发光二极管显示输出信号。

74LS138是一个3线—8线的译码器,其输出为低电平有效,使能端G1为高电平有效,G2、G3为低电平有效,当其中一个为高电平,输出端全部为1。

在中规模集成电路中译码器的几种型号里,74LS138使用最广泛。

要实现的函数用最小项表示如下:

F(C,B,A)=?

m(0,2,4,7)只要将相应输出用一个四输入与非门实现即可。

◎注意

(1)74LS138的输出是低电平有效,故实现逻辑功能时,输出端不可接或门及或非门(因为每次仅一个为低电平,其余皆为高电平);

(2)74LS138与前面不同的是,其有使能端,故使能端必须加以处理,否则无法实现需要的逻辑功能。

当且仅当ABC输入为000、010、100、111时,F=1;

可知电路实现了函数。

F,CBA,CBA,CBA,CBA

实验二

VHDL组合逻辑电路设计

(一)奇校验器

用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出为‘0’,仿真实现验证其功能,并下载到实验板测试。

要求用拨码开关设定输入信号,发光二极管显示输出信号。

输入元素:

a3,a2,a1,a0

输出元素:

b

a3a2a1a0b

00011

00101

01001

01100

01111

10001

10100

10111

11000

11011

11101

11110

四、VHDL程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYhy_checkIS

PORT(

a:

INSTD_LOGIC_VECTOR(3downto0);

b:

OUTSTD_LOGIC

);

endhy_check;

ARCHITECTUREhy_archOFhy_checkIS

BEGIN

PROCESS(a)

CASEaIS

WHEN"

0000"

=>

b<

='

0'

;

0001"

1'

0010"

0011"

0100"

0101"

0110"

0111"

1000"

1001"

1010"

1011"

1100"

1101"

1110"

1111"

ENDCASE;

ENDPROCESS;

END;

五、仿真波形图及分析

根据仿真波形对比奇校验码的真值表,可以确定电路实现了奇校验器的功能。

(二)数码管译码器二、实验任务要求

用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,

并下载到实验板测试。

要求用拨码开关设定输入信号,7段数码管显示输出信号。

A3—A0

B6—B0,C5—C0

A3A2A1A0B6B5B4B3B2B1B000001111110000101100000010110110100111111001010001100110101101101101101011111011111100001000111111110011111011*真值表由数码管显示的原理确定。

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYhy_encoder1IS

PORT(A:

INSTD_LOGIC_VECTOR(3DOWNTO0);

B:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

C:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

ENDhy_encoder1;

ARCHITECTUREencoder_archOFhy_encoder1IS

PROCESS(A)

C<

="

101111"

CASEAIS

=>

B<

1111110"

--0WHEN"

0110000"

--1WHEN"

1101101"

--2WHEN"

1111001"

--3WHEN"

0110011"

--4WHEN"

1011011"

--5WHEN"

1011111"

--6WHEN"

1110000"

--7

1111111"

--8WHEN"

1111011"

--9WHENOTHERS=>

ZZZZZZZ"

ENDCASE;

ENDencoder_arch;

根据仿真波形对比数码管译码器的真值表,可以确定实现了数码管译码器的

功能。

(三)8421码到余三码二、实验任务要求

用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证

其功能,并下载到实验板测试。

要求用拨码开关设定输入信号,发光二极管显示

输出信号。

.

输入数据:

输出数据:

B3—B0

A3A2A1A0B3B2B1B0

00000011

00010100

0010010100110110010001110101100001101001011110101000101110011100*余三码就是在8421码的基础上+3。

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYhy_trans1ISPORT(A:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDhy_trans1;

ARCHITECTUREtrans_ex3OFhy_trans1IS

CASEAIS

WHEN"

WHEN"

WHENOTHERS=>

ZZZZ"

ENDtrans_ex3;

根据仿真波形对比真值表,可以确定电路实现了8421码到余三码的转换。

实验三

VHDL时序逻辑电路设计

(一)分频器二、实验任务要求

用VHDL语言设计实现一个分频输出信号占空比为50%的分频器。

要求在

QuartusII平台上设计程序并仿真验证设计。

N,1N,1n确定分频系数N后,以为计数标准,一旦计数满,输出。

Q22

选取N=20,以0-4计数,到4取反。

clk,clear

clk_out

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYhy_divIS

clk,clear:

INSTD_LOGIC;

clk_out:

OUTSTD_LOGIC);

ENDhy_div;

ARCHITECTUREaOFhy_divISSIGNALtmp:

INTEGERRANGE0TO9;

SIGNALclktmp:

STD_LOGIC;

PROCESS(clear,clk)

IFclear='

THEN

tmp<

=0;

ELSIFclk'

eventANDclk='

IFtmp=9THEN

clktmp<

=NOTclktmp;

ELSEtmp<

=tmp+1;

ENDIF;

clk_out<

=clktmp;

ENDa;

分析仿真波形,可以确定电路实现了20倍分频的功能。

(二)十进制计数器二、实验任务要求

用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证

其功能。

满10异步复位。

q3,q2,q1,q0

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYhy_countIS

q:

ENDhy_count;

ARCHITECTUREaOFhy_countISSIGNALcn:

BEGIN

PROCESS(clk)

cn<

elsIF(clk'

)THENIFcn=9THEN

ELSEcn<

=cn+1;

q<

=CONV_STD_LOGIC_VECTOR(cn,4);

ENDa;

分析仿真波形,可以确定电路实现了十进制计数器的功能。

(三)十进制计数器的数码管显示二、实验任务要求

将2中的8421码十进制计数器下载到实验板测试。

要求用按键设定输入信号,发光二极管显示输入信号。

此系统中应包括分频器、十进制计数器、数码管译码器。

ain,bin,cin

cout(0-6),cat(0-5)

ENTITYhy_unionIS

ain:

bin:

cin:

cout:

OUTSTD_LOGIC_VECTOR(6downto0);

cat:

OUTSTD_LOGIC_VECTOR(5downto0)

endhy_union;

ARCHITECTUREzonghe_archOFhy_unionISCOMPONENTdiv50m——分频器

clk_in:

instd_logic;

clk_out:

outstd_logic

ENDCOMPONENT;

COMPONENThy_count——计数器

OUTSTD_LOGIC_VECTOR(3downto0));

COMPONENTyima——数码管译码器

INSTD_LOGIC_VECTOR(3downto0);

b:

c:

OUTSTD_LOGIC_VECTOR(5downto0));

endCOMPONENT;

SIGNALd,e:

SIGNALf:

STD_LOGIC_VECTOR(3downto0);

u1:

div50mPORTMAP(clk_in=>

ain,clk_out=>

d);

u2:

hy_countPORTMAP(clk=>

d,clear=>

cin,q=>

f);

u3:

yimaPORTMAP(a=>

f,b=>

cout,c=>

cat);

ENDzonghe_arch;

实验四

数码管扫描显示控制器设计与实现

用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这六个不同的数字图形到六个数码管上,仿真验证其功能,并下载到实验板测试。

多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环依次点亮多个数码管,利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。

当闪烁显示的发光二极管闪烁频率较高时,我们将观察到持续点亮的现象。

同理,当多个数码管依次显示,当切换速度足够快时,我们将观察到所有数码管都是同时在显示。

一个数码管要稳定显示要求显示频率大于50Hz,那么六个数码管则需要50*6=300Hz以上才能看到持续稳定点亮的现象。

B(0-6),C(0-5)

ENTITYHYIS

PORT(clk,clear:

ENDHY;

ARCHITECTUREbehaveOFHYIS

SIGNALtmp:

INTEGERRANGE0TO5;

SIGNALcount:

STD_LOGIC_VECTOR(5DOWNTO0);

——count决定哪个数码管有示数

SIGNALf_temp:

STD_LOGIC_VECTOR(6DOWNTO0);

p1:

PROCESS(clk)——排次序

IFclk'

EVENTANDclk='

IFtmp=5THEN

ELSE

ENDPROCESSp1;

p2:

PROCESS(tmp)——数码管显示数

IF(clear='

)THENcount<

111111"

CASEtmpIS——依次逐个输出0-5

WHEN0=>

count<

011111"

f_temp<

--0

WHEN1=>

--1

WHEN2=>

110111"

--2WHEN3=>

111011"

--3WHEN4=>

111101"

--4

WHEN5=>

111110"

--5ENDCASE;

elsecount<

ENDPROCESSp2;

=count;

=f_temp;

ENDbehave;

五、仿真波形图

分析波形易知,C确实实现了六个数码管的交替显示,B则控制着各对应管输出0-5相应的数字。

数电实验总结

【故障和问题分析】

故障一:

仿真时设置clk脉冲宽度为1us,报错

解决办法:

经检查发现,未更改endtime设置,把endtime重置为50us。

故障二:

下载后,按键没有反应。

检验相应管脚是否设置正确,检查管脚是否失效,下载操作是否正确。

故障三:

数码管显示乱码。

一开始我直接检查代码,检查了好久都没发现错误,后来换了个实验板,重新下载后就好了。

另:

实验过程中,唯一的问题是对于多输入电路,静态功能冒险还是会存在的,在这种情况下应该加入选通脉冲来消除静态功能冒险。

【总结与结论】

本学期的四次实验均较为简单,只要认真听讲、细心操作,基本没有太大的问题。

难点主要是对VHDL语言的学习和对QuartusII软件的熟悉。

起初接触QuartusII,感觉毫无头绪。

在预习过课本之后,再结合数字电路理论课上所学的知识,终于有了一些思路。

顺着这思路,对所求元件进行了相应的功能设计,然后开始了相应代码的编写。

在编写过程中,遇到了很多关于VHDL语言的困扰,经过不断的调整和适应,终于掌握了相关的语法规则。

通过这次实验,我收获最多的还是熟悉了数字电路的设计过程,之前所学习的还是理论上的知识。

理论固然重要,但一味纸上谈兵,是不可能掌握实际技能的。

希望今后能够多一些类似的实验、实践活动的机会,让我们提高动手能力、培养实用技能。

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2