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

2019-04-14 15:25发布

  《数字逻辑》 课 程 设 计 报 告       题目:             拔河游戏机                              专业:        计算机科学与技术          班级:        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