数字逻辑实验报告.docx

上传人:b****8 文档编号:10036104 上传时间:2023-02-08 格式:DOCX 页数:13 大小:1.03MB
下载 相关 举报
数字逻辑实验报告.docx_第1页
第1页 / 共13页
数字逻辑实验报告.docx_第2页
第2页 / 共13页
数字逻辑实验报告.docx_第3页
第3页 / 共13页
数字逻辑实验报告.docx_第4页
第4页 / 共13页
数字逻辑实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数字逻辑实验报告.docx

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

数字逻辑实验报告.docx

数字逻辑实验报告

附件2数字逻辑实验报告序号:

 

 数字逻辑实验报告(12-13学年)  

学生姓名:

依力夏提江·艾买尔

学号:

12101020129 

系别:

计算机科学与技术

班级:

计12-1班 

指导教师:

吴磊

 

2013年12月20日

 

题目1设计实现8线─3线普通二进制编码器

(1)实验(设计)原理

八-三优先编码器输入信号为din0,din1,din2,din3,din4,din5,din6和din7

,输出信号为out2、out1、out0。

输入信号中din7的优先级别最低,依次类推,

din0的优先级别最高。

也就是说若din0输入为1(即为高电平)则无论后续的输入信号怎么样,对应的这种状态一样,如若din0输入为0(即为低电平)则看优先级仅次于din0的din1状态决定,依次类推。

因为din0到din7共8中状态,可以用3位二进制编码来表示。

8-3优先编码器真值表如下表所示

(2)根据实验原理列出真值表

(3)说明程序中各部分的功能,对VHDL源程序说明和详细注释。

例如:

用VHDL语言设计8-3编码器。

ØlibraryIEEE;--IEEE库

ØuseIEEE.std_logic_1164.all;--调用IEEE库中的程序包

ØUSEIEEE.STD_LOGIC_ARITH.ALL;

ØUSEIEEE.STD_LOGIC_UNSIGNED.ALL;

Ø

Øentitybianmais--定义实体名bianma

Øport(

Ødin:

instd_logic_vector(0to7);--定义输入信号din0,din1,din2,din3,din4,din5,din6,din7

ØEANABLE:

instd_logic;--定义使能端

Øoutput:

outstd_logic_vector(0to2);--定义输出信号out0,out1,out2

ØQ:

outstd_logic_vector(2downto0);--定义计数器输出信号Q2,Q1,Q0

Ø);

Øendbianma;

Ø

Ø

Ø

Øarchitecturebehavofbianmais--定义结构体名behav

Øsignalsint:

std_logic_vector(4downto2);

Øsignalcnt:

std_logic_vector(2downto0);

Ø

Øbegin

Øprocess(din)

Øbegin--计数器

ØifEANABLE='1'then

Øcnt<=cnt+'1';

Øendif;

Øendprocess;

Ø

Ø

Øprocess(din)

Øbegin--逻辑功能描述字形

Øif(EANABLE='0')then

Øif(din(0)='1')thenoutput<="000";

Øelsif(din

(2)='1')thenoutput<="100";

Øelsif(din(3)='1')thenoutput<="010";

Øelsif(din(4)='1')thenoutput<="110";

Øelsif(din(5)='1')thenoutput<="001";

Øelsif(din(6)='1')thenoutput<="101";

Øelsif(din(0)='1')thenoutput<="011";

Øelseoutput<="111";

Øendif;

Øelseoutput<="ZZZ";

Øendif;

Øendprocess;

ØQ<=cnt;

Øendbehav;

实验已验机!

Ø

Ø1行是库说明部分,打开库

Ø2~4行是打开库中的程序包

Ø5~11行是实体说明部分,描述电路的端口信号

Ø12~最后,是结构体部分,描述电路的逻辑功能

ØVHDL语言不区分大小写,关键字用大写,用户自定义部分用小写。

(4)实验过程中出现的问题及解决办法。

例如:

故障及问题分析

故障1:

波形太密,endtime设置太短,看不出完整的周期

问题分析:

调整endtime设置

解决办法:

在调整了endtime设置之后,得到了比较清晰的波形

(5)对功能测试的截图,给予解释和说明。

对其仿真图进行仿真分析:

din为输入信号组,它由din7-din0八个输入信号组成。

output为输出信号组, 它由output2-output0三个二进制代码输出信号组成。

enable为使能端,当enable为0时编码器工作,当使能端为1时输出高阻状态。

当din0为1时,即输入为:

1*******时,输出111,当din0为0时,输出由优先级仅次于din0的din1决定,即输入为:

01******时,输出110,紧接着依次类推,分别得出输入为:

001*****时,输出101,输入为:

0001****时,输出100,输入为00001***时,输出为011。

到此为止由于使能段变为高电平,输出信号为高阻状态,但可以推断出当输入为000001**时,输出010,输入为0000001*时,输出001,输入为00000001时,输出为000

(6)端口管脚分配表。

例如;

表1端口管脚分配表

端口名

使用模块信号

对应FBGA管脚

说明

din0

拨动开关K1

AC22

 

8位输去

din1

拨动开关K2

AD23

din2

拨动开关K3

AB8

din3

拨动开关K4

AA9

din4

拨动开关K5

AB12

din5

拨动开关K6

AA11

din6

拨动开关K7

AA10

din7

拨动开关K8

AB10

enable

按下按键S1

AC14

使能端0是工作1是输出高阻状态

out0

LED灯LED1

AA17

输出

out1

LED灯LED2

AA16

out2

LED灯LED3

AA15

Q2

LED灯LED4

AB15

计数器输出

Q1

LED灯LED3

AA14

Q0

LED灯LED5

AA13

(6)记录硬件验证结果。

程序已经验机过了,可忘了拍照,在这儿参考同学拍的照片:

 

题目2在7段数码管上同时显示自己学号的最后3位。

(1)实验原理

七段数码管发光原理。

七段数码管一般由八个发光二极管组成,其中七个发光二极管排列成“8”字形,另一个位于小数点位置。

根据连接形式的不同,数码管分为共阴极和共阳极两类。

对于共阴极数码管,八个发光二极管的阴极连接在一起作为公共端,阳极作为段驱动端分别命名为a,b,c,d,e,f,g和dp。

当公共端为低电平时,段驱动端为高电平时,相应段的二极管点亮发光。

共阳极数码管正好相反,其原理如图所示。

2、数码管动态扫描原理。

显示控制器的引脚图如下图所示。

图中:

CLK为时钟输入端,RST为复位信号输入端,LEDOUT[6..0]为段驱动输出;SEL [7..0]为位选信号输出;在实验仪器中,8位7段数码选用了共阴极类型,且驱动电路已经做好。

 

设计要求8位数码管是轮流点亮,可以通过控制SEL输出电平来实现。

当SEL为10000000时,点亮第一位数码管,当SEL为01000000时,点亮第二位数码管,直到8位显示器全都显示完毕,等待进入下一个轮次的显示。

 

同时,还有一个问题不可忽视,不是位扫描信号的频率至少需要多少以上,才能使显示器不闪烁?

简单的说,只要单个扫描频率超过人的眼睛视觉暂留频率24HZ以上就可以达到点亮单个显示,却能享有8个同时显示的视觉效果,而且显示也不闪烁。

(2)数字列表

(4)程序说明

libraryIEEE;--IEEE库

useIEEE.STD_LOGIC_1164.ALL;--调用IEEE库中的程序包

useIEEE.STD_LOGIC_ARITH.ALL;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

entitydisplayis--定义实体名display

port(RST:

instd_logic;--定义输入信号

HEX:

instd_logic_vector(3downto0);

a,b,c,d,e,f,g:

outstd_logic);--定义输出信号out0,out1,out2

enddisplay;

architectureBehavioralofdisplayis--定义结构体名behavioral

signalLEDOUT:

std_logic_vector(6downto0);

begin

process(HEX,RST)--逻辑功能描述

begin

ifRST='0'then

LEDOUT<=(others=>'0');

elsecaseHEXiswhen"0000"=>LEDOUT<=B"1111110";--0000字形0

when"0001"=>LEDOUT<=B"0110000";--0001字形1

when"0010"=>LEDOUT<=B"1101101";--0010字形2

when"0011"=>LEDOUT<=B"1111001";--0011字形3

when"0100"=>LEDOUT<=B"0110011";--0100字形4

when"0101"=>LEDOUT<=B"1011011";--0101字形5

when"0110"=>LEDOUT<=B"1011111";--0110字形6

when"0111"=>LEDOUT<=B"1110000";--0111字形7

when"1000"=>LEDOUT<=B"1111111";--1000字形8

when"1001"=>LEDOUT<=B"1111011";--1001字形9

whenothers=>LEDOUT<=(others=>'1');

endcase;

endif;

endprocess;

a<=LEDOUT(0);

b<=LEDOUT

(1);

c<=LEDOUT

(2);

d<=LEDOUT(3);

e<=LEDOUT(4);

f<=LEDOUT(5);

g<=LEDOUT(6);

endBehavioral;

上述实验可以输出任意数字,实验已验机!

(5) 说明实验中遇到的问题及解决方法,写出实验总结。

   

  实验过程中,前期工作很顺利,很快就将三个源程序正确完成,开始进行原理图的创建,但当我进行count(2:

0)和a,b,c连线时,总提示出错,原来需要先画一个总线,再用三个bustap引出,最后将三条引线分别命名为count(0)、count

(1)、count

(2),再分别与a,b,c相连才可以。

还有,刚开始我将七段显示的源程序命名为display1,但我的预习程序中输入的实体名是display,刚开始进行检查都能顺利通过,但后来生成原理图后提示出错,后来我将源程序名和实体名改为一致,顺利通过了检查。

通过这次实验,我更加理解了七段数码管的实现原理,更加巩固了用ISE软件进行FPGA开发的方法和实验箱的使用方法,掌握了原理图的输入方法,感觉收获颇丰

(6)记录实验现象,分析实验结果。

 

(7)实验过程中可看到8个数码管分别显示八个不同的数字。

这是由于扫描频率超过人的眼睛视觉暂留频率24HZ以上就可以达到循环点亮单个数码管,却感觉8个数码管在同时显示的视觉效果,而且显示也不闪烁

(8)硬件测试结果

第二部分:

设计个人体会

此时硬件课程设计上机实验,总体来说是对课本上知识的延伸和应用。

第一个实验8-3编码器设计实验,起初本人以为3-8译码器做完以后才发现自己做错了,后来又做了8-3二进制编码器。

实验过程因为对vhdl语言应用不熟练,设计实验遇到了麻烦,后来上网找了很多类似的都学别人的程序回过头来做发现自己不知不觉间会设计程序了,设计玩程序以后,程序的仿真虽然老师讲过可好、一会就忘了后来通过提问老师,和查资料终于学会了仿真,最后要管脚绑定,起初还感觉很恩,可都学完后发现,这太简单了。

我上级之前把所有的程序都准备好了,自己的电脑也安装了quartusii程序。

学会了所有的内容以后感觉很有成就感!

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

当前位置:首页 > 初中教育 > 数学

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

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