EDA设计报告乒乓球游戏机.docx
《EDA设计报告乒乓球游戏机.docx》由会员分享,可在线阅读,更多相关《EDA设计报告乒乓球游戏机.docx(11页珍藏版)》请在冰豆网上搜索。
![EDA设计报告乒乓球游戏机.docx](https://file1.bdocx.com/fileroot1/2023-1/26/9ebdf511-6602-4fbc-9ffe-2f4ffa961775/9ebdf511-6602-4fbc-9ffe-2f4ffa9617751.gif)
EDA设计报告乒乓球游戏机
燕山大学
EDA课程设计报告书
题目:
乒乓球游戏机
姓名:
学号:
成绩:
(注:
此文件应以同学学号为文件名)
一、设计题目及要求
I.题目名称:
乒乓球游戏机
要求:
1.用8个发光二极管表示球;用两个按钮分别表示甲乙两个球员的球拍;
2.一方发球后,球以固定速度向另一方运动(发光二极管依次点亮),当球达到最后一个发光二极管时,
对方击球(按下按钮)球将向相反方向运动。
过早或过晚击球视为犯规,系统自动给对手加1分;
3.甲、乙各有两个数码管计分(11分制),每两球换一次发球权。
4.裁判有一个按钮,系统初始化和每次得分后按下一次,发球方的第一个LED会被点亮。
2、设计过程及内容
I.总体设计
乒乓球比赛是由甲乙双方参赛,加上裁判的三人游戏,乒乓球比赛模拟机是用发光二极管(LED)模拟乒乓球运动轨迹的电子游戏机。
图1乒乓球模拟机框图
根据设计任务,对照图乒乓球比赛模拟图,可以分为五个模块进行设计:
1.乒乓球电路(ball模块):
模拟球的移动轨迹;球迹移动电路可采用双向移位寄存器方法实现,由发光二极管作光点模拟乒乓球移动的轨迹。
2.驱动控制电路(control模块、judge模块):
实现电路的控制;由双D触发器及逻辑门电路构成,通过此电路来控制并且实现球台灯的左右移位即实现乒乓球的运动。
同时,我们利用十六进制计数器设计了裁判控制电路judge模块来控制发球权的交替,实现每两球换一次发球权。
3.计分电路(counter模块):
实现计分功能;使用两片十进制的计数器、逻辑门组成计分电路,实现11进制计数功能并且输出bcd码以供后续电路显示。
使用JK触发器实现计数对本模块的封锁和开启功能,便于两计分电路的信息交流实现联合计数功能。
4.时钟控制电路:
实现时钟的统一规划;由于每个模块都需要时钟进行控制,并且各时钟频率有所不同。
我们使用三片十进制计数器和d触发器以及逻辑门组成了分频器fenpinqi模块,将时钟输入统一为1个。
5.扫频显示(saomiao模块):
将计数器模块输出的bcd码用以交替显示的方式用一片7448译码器输出到数码管上显示。
II.分模块设计
1.球台电路的设计
用两个74LS194四位双向移位寄存器来模拟乒乓球台,其中第一个74LS194的DL输出端QD接第二个的右移串行输入端SR,这样当乒乓球往右准备移出第一个寄存器的时候就会在时钟脉冲的作用下被移入第二个寄存器。
同样道理,第二个74LS194的AR输出端接第一个的左移串行输入端。
(1)将两片4位74LS194双向移位寄存器接成8位双向移位寄存器。
根据数字电路所学知识,可以用两片4位74LS194接成8位双向移位寄存器,上一片的SLSI接下一片的QA实现左移功能,下一篇的SRSI节上一片的QD实现右移功能,S0.S1同名端相接,CLK连接时钟实现共同工作,P1模拟左边的人发球,P8模拟右边的人发球,LED1~8为八个小灯显示信号的转移过程,此时P1接收有效信号模拟左边的人发球,则小灯从左向右移动,显示为LED1到LED8依次点亮实现右移功能;P8同理,从LED8到LED1依次点亮实现左移功能。
图2ball模块电路图设计
(2)仿真图如下:
S0.S1接收高电平等待,S0接收高电平,S1接收低电平,实现右移指令,给LED1高电平使其点亮,实现右移功能,LED1~LED8依次点亮;同理,S0给低电平,S1给高电平,实现左移指令,然后点亮LED8,使其实现左移功能
图3ball模块电路仿真
2.驱动控制电路的设计
用双D触发器74LS74及逻辑门电路构成驱动控制电路
(1)LED1和K1相与,LED2和K2相与,然后输入或门中,输出连接双D触发器7474的两个时钟,即只要LED1与K1同时亮或者LED2和K2同时亮,则输入时钟,输出S0.S1两个输出信号,控制球台电路;PRIN连接judge输入,相当于裁判控制电路,此输入低电平有效;双D触发器74LS74的两个CLRN端接高电平。
图4control模块电路设计
当judge=0时,两片D触发器输出端均为1即S1=S0=1,通过接入74194,此时实现的是并行输入功能。
当judge=1时,LED1=K1=1,K2=LED2=0,通过各门电路可知则D触发器输出端分别为0,1即S1=0,S0=1,控制乒乓球右移。
相反情况时,当J1=1时,LED1=K1=0,K2=LED2=1,D触发器输出端分别为1,0即S1=1,S0=0,控制乒乓球左移。
通过此电路来控制并且实现球台灯的左右移位即实现乒乓球的运动。
(2)仿真结果如下:
先给judge低电平,S0=1,S1=1,等待置数;judge=1时,在灯LED1亮的过程中K1给高电平击球,S0=1,S1=0,乒乓球右移;当LED2亮的过程中K2给高电平击球,S0=0,S1=1,乒乓球左移,达到预期效果。
图5control模块电路仿真
3.计分电路的设计
用十进制计数器74LS160D、逻辑门电路和集成的4管脚的数码管组成计分电路。
(1)用两个74160实现十一进制的计数器,第一个74160有五个输出,ABCD接地,LDN接高电平,时钟相连接一个输入;第一个的使能端为JK触发器和与门相连,加一个非门还有一个输入做与的输出,输入为显示灯L,非门连接输入按钮K,judge和KL按键实现计分模块的启动与停止,即按下KL开始计分,按下judge记分停止。
第一个74160的输出OB和第二个74160的输出OA做与非输出连接两个74160的CLRN端表示十一进制二进制数1010累计到11对计数器清零,输入ABCD都接地,RCO接第二个74160使能端EPT.EPN,可以表示进位时,第二片计数,两个74160分别接输出,输出低四位和高四位。
图6counter模块电路设计
(2)仿真电路如下:
Judge低电平有效,给judge一个低电平,等待,然后按下KL开关(高电平有效),K与L都不按,开始计数,合并分组ABCD为1,EFGH为10,再按下Judge,计数暂停。
ICLR输入有效信号低电平,计数器清零重新计数。
图7counter模块电路仿真
4.判断电路设计
(1)判断电路要实现发两次球交换一次发球权,我们使用74160,一个74161,再加一个7474、74160和74161的ABCD输入口接地,其使能端接上74160和74161的CLK时钟然后接非门接一个输入,74160的OB输出分两路,一路接非门然后连接自己的CLRN,另一路接非门连接74161的使能端;74161的OB输出口接7474的1D口,它的1PRN和1CLRN连接高电平,输出1Q,1QN分别接LED1和LED8,再接一个时钟输入7474。
74160和74161实现输出三进制,输出给JK触发器实现轮流。
图8judge模块电路设计
(2)仿真电路如下:
judge给低电平有效信号,等待发球,当judge再给指令,发球方不变;当judge再给指令,发球方改变,每两次发球权改变一次
图9judge模块电路仿真
5.扫描电路
扫描电路是将两个计数器的输出通过一个7448译码器输出到4个七段数码管的显示电路,它由四个八选一数据选择器和一个十进制计数器组成,将输出连接到7448译码器上,以计数器输出的地址码控制显示,当时钟频率较高时,四个数码管便同时亮了起来。
6.分频器设计
试验箱能够直接输出365Hz的时钟信号,但这对于乒乓球的运动来说过快,人无法反应击球时机,所以我们利用三片十进制计数器设计了一个将365Hz时钟信号分为2Hz时钟信号的分频器,用于驱动球台电路,控制球速。
另外,为了演示方便,可以将输入时钟设为365Hz,为了乒乓球机的趣味性,可以提高输入时钟频率来改变球速。
7.各模块封装后,总图连接设计
各模块连接仿真结果正确后,分别封装连接总图,链接如下
(1)ball模块放在中间,两个counter模块放在两边分别表示比赛双方的计数情况,左下为control模块模拟控制电路,右下为judge模块实现发球权的交换,左边有两个时钟接入,下方为P1和P2输入端,表示游戏过程中击球的输入,最下方是judge裁判按钮。
(2)judge输入按钮接两个counter模块的judge接口,judge按钮按下,等待发球,当judge再次按下,某一方发球,假设左边的人发球,则LED1亮,则control模块的LED1也点亮,使其S0变为高电平,S1变为低电平,此时显示右移,再传给ball模块的S0和S1口,使其实现右移功能,则LED1亮起并向右移动,即LED2~LED8依次点亮,当LED8点亮时,若右边的人击球,则传给control模块,实现与功能,使S0变为低电平,S1变为高电平,使其左移,并给counter模块信号,使左边的人不加分;若LED8点亮,但右边的人不击球,则等待judge发送指令,每两次发球,交换一次发球权。
(3)由于我们的输入端P1、P2和judge都使用了按键输入,所以有必要加上防抖电路以确保输入的正常进行。
防抖电路由D触发器构成,经过试验,时钟不宜过慢,所以我们选择了分频器前的时钟端作为其输入即可达到防抖效果。
图10电脑仿真电路总图
(2)仿真结果如下:
judge低电平有效,先给其低电平等待响应,右边的P2发球,使球左移,对方不击球,则不计分,然后judge给低电平,发球权不变,还是左移;judge在发指令,发球权改变,实现右移功能,对方击球则不加分,对方不击球则加分。
图11总图仿真结果
8.总图连接、硬件模拟
为了方便仿真开始我们并没有添加扫描电路和分频器,下图是我们下载到硬件中的完全电路。
通过连接硬件仿真得到了我们想要的最终结果。
图12硬件总图连接
三、设计结论(包括设计过程中出现的问题;对EDA课程设计感想、意见和建议)
1.问题
当我们拿到题目时,我们通过查询资料对其进行了大致的了解,也获得了大体的设计思路,但当我们着手设计具体电路的过程中,逐渐发现了很多我们之前没有想到过的细节性问题,对我们的设计造成了巨大的阻碍,多次地进行重新设计和添加模块,才取得了最后基本完成了结果。
但是我们还有一些没有解决的问题,设计也有很多不足之处需要完善。
(1)我们对乒乓球模拟机进行第一轮设计时,拟设计了三个模块:
球台电路、控制电路、计分电路,三个模块相互独立通过接口交换信息来完成工作。
但在进行设计之后,我们发现控制电路太过笼统,无法完全从各个模块中完全剥离,所以我们从控制电路中我们分离出来了发球权控制电路,在计分器中也有一定的控制设计来配合完成一些功能。
(2)计分器设计过程中,我们发现两个击球信号并非只需要控制己方电路,也需要输入到对方计数器中,己方发球则己方计分器开始等待计分,对方击球不中则给己方计分器一个上升沿以实现加分,此时我们将对方计数器的击球端接到己方计数器,从而实现对方击球不中己方计分的效果。
当某计分器达到11时,则本局比赛结束,不论对方计分器如何都需从0开始,所以两个计分器都有清零信号输入端(ICLR)和清零信号输出端(OCLR)并且相互连接,从而为下一局的开始做好准备。
(3)在最初的设计中我们并没有考虑到发球权的切换,最终我们设计了judge模块实现了两次裁判按键后自动切换发球权的功能。
模块使用了十六进制计数器,通过它的低第二位两次计数翻转的特点设计了换发球权电路,并通过D触发器置1和置0控制相反的Q和Q’端输入到最左和最右的LED灯上来切换发球。
(4)开始judge电路的输入端是直接的由按键输入信号的,但这样的设计要求在每次得分后judge键只能按下一次,但实际情况往往按键不灵敏或者为了确认按下了多次,这时换发球电路就不能够正常工作了。
所以我们通过将连个计分器的输出O用或门连接到了judge模块的输入,以计分作为换发球标准,解决了这个问题。
(5)防抖电路的时钟开始时我们使用了和球台电路同样的时钟,但实际效果并不理想,时钟频率过小导致按键灵敏度不够高,需要按下一段时间才能够响应,所以我们换到了分频器前的输入时钟端。
(6)每局比赛结束后发球权电路无法将球权信息清零重新从系统初始化的位置重新开赛。
(7)当某一方计分达到11分时,对方计分器清零,但是己方计分器会停留在11分显示,需要己方再胜一球方可重新开局。