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