数字电路与逻辑设计-简易乒乓游戏机

上传人:飞*** 文档编号:47752228 上传时间:2018-07-04 格式:PDF 页数:23 大小:977.01KB
返回 下载 相关 举报
数字电路与逻辑设计-简易乒乓游戏机_第1页
第1页 / 共23页
数字电路与逻辑设计-简易乒乓游戏机_第2页
第2页 / 共23页
数字电路与逻辑设计-简易乒乓游戏机_第3页
第3页 / 共23页
数字电路与逻辑设计-简易乒乓游戏机_第4页
第4页 / 共23页
数字电路与逻辑设计-简易乒乓游戏机_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《数字电路与逻辑设计-简易乒乓游戏机》由会员分享,可在线阅读,更多相关《数字电路与逻辑设计-简易乒乓游戏机(23页珍藏版)》请在金锄头文库上搜索。

1、一实验名称:简易乒乓游戏机二任务要求:基本任务:两人乒乓游戏机是以 8 个发光二极管代表乒乓球台,中间两个发光管兼作球网,用发光管按一定的方向依次闪亮来表示球的运动。在游戏机两侧各设一个发球/ 击球开关,当甲方发球时,靠近甲方的第一个发光管亮,然后依次点亮第二个?球向乙方移动,球过网后到达设计者的规定的球位乙方即可击球,若乙方提前击球或未击到球,则甲方得分。然后重新发球进行比赛,直到某一方记分达到规定分,比赛结束。1以 8 个发光二极管代表乒乓球台,中间两个发光管兼作球网,乒乓球的位置和移动方向由灯亮及依次点亮的方向决定,击球规则可自行设定;2球移动的速度:0.1 0.5s 均可;3用数码管分

2、别显示双方的得分;4当某一方比分达到11 分时,比赛结束,此时发球/ 击球开关无效;5设置复位键,按下后比分清零,双方重新开始比赛;提高要求:17 局4 胜制,能记录和显示双方赢得的局数;2选做:发球权,双方按乒乓球比赛规则获得发球权,没有发球权的一方,发球开关无效;3自拟其它功能。三 设计思路、总体框图以 8 个发光二极管代表乒乓球台,用发光管按一定的方向依次闪亮来表示球的移动,在游戏机两侧各设发球,击球开关KA ,KB ,当 A 方发球时,靠近A 方的第一个发光管亮,然后依次点亮第二个。 。 。球向 B移动,球过网后到达第七个球的球位时,B方即可击球,若B方提前击球或未击到球,则 A方得分

3、,同时在数码管上显示,当前双方的分数。然后重新发球进行比赛,直到某一方记分达到规定分,记分清零,重开一局比赛。结构图如下:逻辑划分方块图图中 C代表球到位可以击球的标志信号;m代表记分器已记满一局的信号;CNT 为记分器时钟信号 ,Cr 为记分器清零信号; S为决定乒乓球位置及移动方向的信号;STOP为球台清除信号。流程图根据流程图到MDS图的转换规则从上图出发,并设定等待状态为WAITING ,A方发球的状态为 STARTA ,B方发球的状态为STARTB ,A发球后向B移动的状态为MOVEB,B发球后向A移动的状态为MOVEA , B方失误 A方加 1分状态为 SCOREA, A方失误 B

4、方加 1 分的状态为SCOREB,加分后判断是否一局结束的状态为JUDGE ,是否有一方的分数为2 分,游戏结束的状态为GAMEOVER MDS 图:四,分块设计1 状态机, 有 9 个状态, WAITING ,STARTA ,STARTB ,MOVEA ,MOVEB ,SCOREA,SCOREB,JUDGE ,GAMEOVER 当有 RESET 时,对系统进行复位,即当前的分数,熄灭正在运动的球,否则进入游戏。WAITING :对一些结果的初始化等操作,由TURN变量控制发球权,当A 有按键输入,进入STARTA 状态,当B有按键输入,进入STARTB 状态。STARTA :靠近 A的第一个

5、球亮,并进入MOVEB 状态。MOVEB:球向 B移动,当球移动到靠近B的第二个球,如果B有按键输入,则进入MOVEA 状态,否则,如果B提前按键,或者球移出球台了,B还没有按键的话,进入SCOREA 状态。STARTB :靠近 B的第一个球亮,并进入MOVEA 状态。MOVEA:球向 A移动,当球移动到靠近A的第二个球,如果A有按键输入,则进入MOVEB 状态,否则,如果A提前按键,或者球移出球台了,A还没有按键的话,进入SCOREB 状态。SCOREA:暂存胜出的变量INCA置 1,进入 JUDGE 状态SCOREB:暂存胜出的变量INCB置 1,进入 JUDGE 状态JUDGE :如果

6、A或者 B的当前分数为11,则相应的大比分加1,并进入 GAMEOVER状态,否则,进入游戏的开始等待状态,进入下一轮比赛。GAMEOVER:如果 A或者 B大比分有一个为2,则 A或者 B的胜利状态的变量置1,让点阵显示,哪一方胜利,并让蜂鸣器响,游戏结束。否则游戏继续进入,进入下一轮开始状态。2 分频模块:数码管显示的时钟频率CLK_DISP频率是固定的,500Hz。而状态转移的时钟频率 CLK_GAME 由拔码开关决定,当没有拔码开关输入时,频率为1HZ ,当 QUICK输入有效时,频率为 0.5HZ,当 QUICKER 输入有效时,频率为0.25HZ。3 计分模块: 如果状态机中INC

7、A或者 INCB 有效时, AGET与 BGET累加, 输出到数码管显示。4 显示模块:将当局分数和已赢局数都显示在数码管上。5 点阵显示模块:当游戏进行时,以CLK_GAME 的频率在上面显示“乒” “乓” “加” “油”和一个笑脸。当游戏结束时,在上面显“左”, “右” ,表示哪方胜利。6 总函数:将各个小模块用信号连接起来。五,仿真波形分频器的仿真说明:实际中原始频率250MHZ太大,不好仿真,上图为调整频率和分频系数后的仿真。1 在实际的系统中,CLK_DISP是数码管显示的时钟频率,应该在 300HZ以上。 它的分频系数是固定的。上图中它是2 分频。2CLK_GAME 是球移动, 计

8、分,点阵显示的频率, 它的分频系数不是固定的,由 QUICK ,QUICKER决定。 上图中, 当 QUICKER=1 时,是 4 分频, 球移动的速度最快,当 QUICK=1时,是 6 分频,球移动的速度居中,当QUICKER=0 且 QUICK=0时,是 8 分频,球移动的速度最慢。计分器的仿真说明:当 INCA,INCB(当局比赛结束)有效时,AGET ,BGET (累积分数直到11 分)开始计分,当 CLEAR 来到时, AGET ,BGET都清零。状态仿真说明:当 A发球,球向B移动,到达BALL6 时, B击球,球向A移动,到 BALL1 时, A反击,当球到达 BALL7 时,

9、B没有接住, A加 1 分。 INCA=1。说明:说明:当 A发球,球向B移动,到达BALL6 时, B击球,球向A移动,到 BALL1 时, A反击,还没有到达BALL6 ,B提前击球, A赢, A加 1 分。 INCA=1。说明: A发球, B击球, RESET 复位,球灭,然后A发球, B没有击球, A加分, INCA=1;数码管显示仿真说明:数码管从右到左依次显示B当局的分数, A当局的分数,B胜的次数, A胜的次数。所以当数码管点亮时,从右到左依次显示5,0,1,1,2,1。程序中对显示的设置如下:WHEN 0=DISP_SCOREDISP_SCOREDISP_SCOREDISP_S

10、CORE CLEARSRSR SR SRSRSRINCA IF A_GAME=2 THEN AWIN BALL BALL BALL BALL BALL BALL BALL BALL BALL ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW ROW

11、ROW ROW ROW ROW ROWLIGHTENLIGHTENLIGHTENLIGHTENLIGHTENLIGHTENCTDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREDISP_SCOREIN_QUICK,QUICKER=IN_QUICKER,CLK=IN_CLK, CLK_GAME=S_CLK_GAME,CLK_DISP=S_CLK_DISP); U2: COUNT PORT MAP(CLK_GAME=S_CLK_GAME,CLEAR=

12、S_CLEAR,INCA=S_INCA, INCB=S_INCB,AGET=S_AGET,BGET=S_BGET); U3: TT PORT MAP(CLK_GAME=S_CLK_GAME, RESET=IN_RESET,KA=IN_KA,KB=IN_KB, AGET=S_AGET,BGET=S_BGET, A_GAME=S_A_GAME,B_GAME=S_B_GAME, VICTOR=OUT_VICTOR, AWIN=S_AWIN,BWIN=S_BWIN, MYAH=HH, CLEAR=S_CLEAR,INCA=S_INCA,INCB=S_INCB,BALL=OUT_BALL); U4: D

13、ISPLAY PORT MAP(CLK_DISP=S_CLK_DISP,AGET=S_AGET,BGET=S_BGET,A_GAME=S_A_GAME, B_GAME=S_B_GAME, LIGHTEN=OUT_LIGHTEN,DISP_SCORE=OUT_DISP_SCORE); U5: SHOW PORT MAP(CLK_SCAN=S_CLK_DISP,AWIN=S_AWIN,BWIN=S_BWIN, PLEASURE=HH,COL=S_COL,ROW=S_ROW); END; 七,功能说明:基本功能:1,可以发球,击球,球可以来回移动2,A,B计分,并显示在数码管上3,复位后,分数清零,

14、比赛重新开始其它功能1, 发球权, A , B轮流发球2, 3 局 2 胜制,记录和显示双方的赢得的局数3, 点阵显示图形,和胜利者的方向4, 蜂鸣器鸣叫,表示游戏结束八,元器件清单计算机、SUB数据下载线、EDA开发板( EPM1270T144C5 )资源利用情况:拨码开关 SW0,SW6 ,SW7 ,按键 BTN0, BTN7, 六个七段数码管,八个发光二极管,点阵,蜂鸣器。下图为资源利用情况:九,故障用问题分析与上学期相比, 这次是一个比较大的综合性实验,在实验过程中遇到很多问题,有硬件方面,也编程软件方面的。首先, 不知道从哪里开始,通过看上学期的数电实验教材,通过经典例子,心中对 V

15、HDL 语言有了一个更熟悉的了解,接着又去图书馆借了一些综合实验的教程来看,结合自己的题目,开始构思与设计。其次,对于硬件, 实验板与上学期的不一样,有些细节地方不同,有时遇到不知道的情况时,想方设法去解决,比如有时,下载不了,计算机上显示下载不了的信息也不懂,后来,换了一块板子,可以下,说明是板子,本身有问题。有时换了也不管用,怎么办?只好向同学,老师请教, 哦,原来是板子上那个红色小器件上的开关要向上拔上去。有时是对下载的文件没有选中,无论怎么修改,下载后的结果还是一样。对于软件方面, 记得第一次编好程序后编绎时,出现了几十个错,很多小问题,也有一些是程序本身的原因。比如, IF 语句里的

16、变量不可以是OUT 类型,后来想用 BUFFER 类型的代替,结果不好, 因为出现很多不知道是什么的错误,最后想到用 SIGNAL 类型的代替, 并在进程外将值赋给要输出的变量,这样就成功的解决了问题。还有就是记分有时不准,这就需要在计分完后,让暂存分数的值复位,否则每来一个时钟,只要那个暂存分数的值还在,还是会继续计分。等等诸如此的问题很多,其中有自己想办法解决的,也有请教同学,老师解决的。十,总结和结论对VHDL 硬件编码语言与思想都要有很深的理解,多编多练习, 才可以较好的完成要求。通过自己动手编程,下载,遇到问题,解决问题,既学到了很多有用的实验方面知识,又学到了做事的道理。这次用四周来完成的实验,让我对学习知识,运用知识有了很深的理解,运用知识到实际系统中,不仅需要扎实的理论基础,更需要良好的心理素质,做之前要充满信心和对实验的兴趣,遇到困难,不要灰心,多想办法,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号