数字逻辑课程设计拔河游戏机

版权声明:本文为博主原创文章,未经博主允许不得转载 QQ255615。 https://blog.csdn.net/Admin_Chin/article/details/72082375

 

《数字逻辑》

课 程 设 计 报 告

 

 

 

题目:             拔河游戏机                   

 

 

 

 

 

专业:        计算机科学与技术         

班级:        14计科2班                     

组长:  张钦颖(1414080901218) 

成员:                    无                              

成员:                         无                            

 

惠州学院计算机科学系

二○一五 年 一 月 八 日


1 设计任务书

设计题目:拔河游戏机

拔河游戏机用7个发光二极管排列成一行,开机后只有中间一个发亮,以此作为拔河的中心线,游戏双方各持一个按键,迅速地、不断地按动产生脉冲,谁按得快,亮点向谁方向移动,每按一次,亮点移动一次。任一方终端二极管发亮时这一方获胜,此时双方按键被锁住,只有经复位后才使亮点恢复到中心线。

2 总体方案设计

2.1 功能和逻辑需求分析

(1)本课程设计的拔河游戏机由7个电平指示灯排列成一行,开机之后只有中间一个电平指示灯亮,以此作为拔河的中心线,游戏双方各持一个按键,迅速地、不断地按动产生脉冲,谁按得快,亮点向谁移动,每按一次,亮点移动一次。移到任一方终端指示灯点亮,这一方就获胜,此时双方按键均无效,输出保持,只有经裁判置位后才使亮点恢复到中心线。

(2)当一局比赛结束后,由点亮该终点灯的信号使电路封锁加减脉冲信号的作用。即实现电路自锁,使加减脉冲无效。同时,使电路自动加分。

(3)控制电路部分应能控制计数器的计数,可以使计数器停止计数。(其进入方向则由参赛双方的按键信号决定)

2.2 总体方案设计


2.2.1  模五计数器:

分设两个计数器比较选手快慢,对选手输入的手动脉冲进行计数,用预置法设初始值为0101,即5,使十进制计数器改成五进制计数器,先输入五个脉冲信号的将传一个进位信号到可逆计数器。

2.2.2  可逆计数器:

若甲选手对应可逆计数器的加法,乙选手对应可逆计数器的减法,若甲的速度比乙快(即甲所用计数器先输出进位信号),则控制可逆计数器进行加法,反之,则进行减法.

2.2.3  译码器:

译码器有三个输入和7个输出。每个输入都有和它唯一对应的输出。例如输入为001时对应l1这个灯亮,输入为111时对应l7这个灯亮。

2.2.4  异或门:

由于TDS-4实验箱只有两个手动脉冲,考虑到两个人比赛,那么这两个手动脉冲必然是要接入到计数器中,而比分显示器和可逆计数器都是需要脉冲触发的,而我们用异或门提供一个脉冲给可逆计数器,使得它们可正常计数。

3单元模块设计

3.1  十进制计数器(2个)

         

整形电路由两个模为5带进位信号的计数器组成。按键AB为别作为两个计数器的时钟脉冲,这样来实现AB按键哪个按得快,它所对应的计数器就会先产生一个进位信号,在把这个进位信号作为7模计数器的加减信号。这样可以减小AB按键直接作为计数器的加减信号对计数器正常计数的影响。

3.2  可逆计数器


简要原理说明:使用GAL16V8实现,接受来自两个模五计数器的进位信号,以及一个人工脉冲,输出4位二进制码,此外,设有一个复位开关及使能开关。

实现代码:

MODULECOUTER
TITLE'COUTER'
 
DECLARATIONS
CLK,EN,CO1,CO2,MPIN 1,11,2,3,4;
Q0..Q3PIN 12..15 ISTYPE 'REG';
Q=[Q3..Q0];
EQUATIONS
Q.CLK=CLK;
Q.OE=!EN;
WHEN(M==1)
THENQ:=3;
ELSEWHEN(M==0)&(CO1==1)
THENQ:=Q-1;
ELSEWHEN(M==0)&(CO2==1)
THENQ:=Q+1;
ELSEQ:=Q;
 
END

3.3  译码器


简单原理说明:使用GAL16V8制作,接受可逆计数器的输出的4位二进制码作为输入,以下面真值表进行译码,输出直接连接7个二极管。另有一个输出控制两个模五计数器的使能端,当满足某一方胜利条件时输出0,使两个模五计数器不能工作。


 

实现代码:

MODULE YIMA
 
TITLE 'YIMA'
DECLARATIONS
A0..A3 PIN 2..5;
RES PIN 6;
L6,L5,L4,L3,L2,L1,L0 PIN 13..19;
E PIN 12;
A=[A3..A0];
L=[L6..L0];
EQUATIONS
WHEN(RES==1)
THEN{L=8;E=1;}
ELSE WHEN(RES==0)
THEN{
WHEN(A==0)
THEN{L=64;E=0;}
ELSE WHEN(A==1)
THEN{L=32;E=1;}
ELSE WHEN(A==2)
THEN{L=16;E=1;}
ELSE WHEN(A==3)
THEN{L=8;E=1;}
ELSE WHEN(A==4)
THEN{L=4;E=1;}
ELSE WHEN(A==5)
THEN{L=2;E=1;}
ELSE WHEN(A==6)
THEN{L=1;E=0;}
}
 
END

3.4  异或门

简单原理说明:用来产生脉冲信号给可逆计数器以及比分显示器,另外产生模五计数器的预置信号。

3.5 总体电路设计


4电路调试与测试

4.1模五计数器单元模块

将74LS162计数器的输出接二极管,脉冲接手动脉冲,并用预置法将计数器改为模五计数器,按动脉冲测试是否可以实现模五计数器并输出进位信号。

测试结果如下:

脉冲次数

DCBA现态

DCBA次态

进位输出

1

0101

0110

0

2

0110

0111

0

3

0111

1000

0

4

1000

1001

0

5

1001

0101

1

DCBA为计数器输出的4位2进制数

由真值表可知,与理想要求一样。

4.2  可逆计数器单元模块

将RES、X、Y、EN接开关,并接一个手动脉冲,Q3、Q2、Q1、Q0接输出,分别按动RES、X、Y和脉冲,测试当复位开关无效时,X=1,是否可以实现加法,X=0,是否可以实现减法,再测试当复位开关有效时,是否可以实现输出为0011。

当X=1时,可逆计数器实现加法

脉冲

RES

X

Y

使能端EN

Q3Q2Q1Q0

 1

1

×

×

0

0011

2

0

1

0

0

0100

3

0

1

0

0

0101

4

0

1

0

0

0110

当Y=1时,可逆计数器实现减法

脉冲

RES

X

Y

使能端EN

Q3Q2Q1Q0

1

1

×

×

0

0011

2

0

0

1

0

0010

3

0

0

1

0

0001

4

0

0

1

0

0000

RES:复位开关

X:模五计数器输出的进位信号

Y:模五计数器输出的进位信号

Q3Q2Q1Q0:输出的4位2进制数

由真值表可知,与理想要求一样。

4.3  译码器单元模块

把烧制的芯片接入实验箱。

步骤1:把输入端a2、a1、a0接入001到111之间所有的可能,发现输出端y7为1时,输入为111;y6=1时,输入为110;y5=1时,输入为101;y4=1时,输入为100;y3=1 时,输入为011;y2=1时,输入为010;y1=1时,输入为001。而且y7到y1只有一个灯亮,不存在两个或者两个灯同时亮的情况。

步骤2:重复步骤1,进行多次测试,发现该芯片符合实验要求。

 

开关

输入

Q

L6

L5

L4

L3

L2

L1

L0

1

×

1

0

0

0

1

0

0

0

0

0000

0

1

0

0

0

0

0

0

0

0001

1

0

1

0

0

0

0

0

0

0010

1

0

0

1

0

0

0

0

0

0011

1

0

0

0

1

0

0

0

0

0100

1

0

0

0

0

1

0

0

0

0101

1

0

0

0

0

0

1

0

0

0110

0

0

0

0

0

0

0

1

4.4  异或门

X:甲使用的计数器的进位信号

Y:乙使用的计数器的进位信号

RES:复位开关

Q0:传给计数器预置端的值,当复位开关有效时,将两个计数器均进行预置,当复位开关无效时,若两个计数器中有一个输出了进位信号,表示灯将往其方向跳一格,这 时,将两个计数器进行预置,以示公平。

Q1:传给可逆计数器的值,为可逆计数器提供脉冲,当没有进位信号且开关无效时,输出0,当有进位信号或者开关有效时,输出1,输出值由0变为1相当于为可逆计数器提 供了一个脉冲,使可逆计数器可以正常使用。

输入

输出

X

Y

RES

Q

0

0

1

1

0

1

1

1

1

0

1

1

0

0

0

0

0

1

0

1

1

0

0

1

5总结

   经历这次实验,虽然只用到计数器和译码器这两个基本的功能,但是在实际的实验中,通过自己写代码烧制出来的芯片有时不会实现我们预想的功能。对于怎么解决AB按键的信号会影响7模计数器的计数,为此我们耗费了很多时间,最后才找到合理的、可行的、贴合实际的解决方法。对于这样一个简单的实验,对于第一次做的我们来说却是困难重重,由于经验的不足,对于很多简单的问题都想不出解决方法,需要花大量的时间。由于实验过程所需的线路比较多,所以需要很大的耐心,也需要我们每个组员细心接线,既不能接重复又不能接漏哪怕一根线。不过经过耐心的接线和检验之后,我们的实验倒是挺成功的,预期的实验结果都达到了,不过可惜的是在反复的调试过程中烧坏了一个芯片,起初我们还不知道怎么回事好端端的输出结果就错了,后来把线全拆了,又测试每个芯片才知道用GAL编写的可逆计数器坏了才导致整个电路出错。因此我们明白了一个道理,即使是最简单的事情,如果没有经验也是很难完成。另一方面,即使是理论上可以得出的结果,在实践过程中却出现错误,所以必须经过实践的考验才能证明我们所做的实验是成功的。

附录

芯片:GAL16V8D*2、74LS86、74ls162*2

《数字 逻 辑》课 程 实 验 芯 片 汇 集

GAL16V8D 的外引线排列图、设计方法

同步十进制计数器74LS162的外外引线排列图、逻辑电路图、功能表

数字逻辑(第六版.立体化教材)北京科学出版社  2013年3月

《数字逻辑》实验指导书2013

惠州学院计算机科学系硬件教研室数字系统设计实验室 2015年1月


脉冲

RES

X

Y

使能端EN

Q3Q2Q1Q0

1

1

×

×

0

0011

2

0

1

0

0

0100

3

0

1

0

0

0101

4

0

1

0

0

0110

猜你喜欢

转载自blog.csdn.net/Admin_Chin/article/details/72082375
今日推荐