EDA技术课程设计乒乓球比赛游戏机

上传人:pu****.1 文档编号:427162013 上传时间:2023-09-17 格式:DOC 页数:14 大小:132.50KB
返回 下载 相关 举报
EDA技术课程设计乒乓球比赛游戏机_第1页
第1页 / 共14页
EDA技术课程设计乒乓球比赛游戏机_第2页
第2页 / 共14页
EDA技术课程设计乒乓球比赛游戏机_第3页
第3页 / 共14页
EDA技术课程设计乒乓球比赛游戏机_第4页
第4页 / 共14页
EDA技术课程设计乒乓球比赛游戏机_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《EDA技术课程设计乒乓球比赛游戏机》由会员分享,可在线阅读,更多相关《EDA技术课程设计乒乓球比赛游戏机(14页珍藏版)》请在金锄头文库上搜索。

1、东 北 石 油 大 学课 程 设 计课 程 EDA技术课程设计 题 目 乒乓球比赛游戏机 院 系 电子科学学院 专业班级 电子信息工程 学生姓名 学生学号 070901140438 指导教师 2011年 3 月11日东北石油大学课程设计任务书课程 EDA技术课程设计题目 乒乓球比赛游戏机专业 电子信息工程 姓名 学号 070901140438主要内容、基本要求、主要参考资料等主要内容:设计一个乒乓球游戏机,比赛由甲乙双方和裁判3人构成,能模拟比赛的基本过程和规则并能自动裁判和记分。基本要求:1、设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。2、用8个(或更多个)LED排成一条直线,以中点

2、为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。3、当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。若击中,则球向相反方向移动;若未击中,则对方得1分。一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。4、设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。5、甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。主要参考资料:1 潘松著.EDA技术实用教程

3、(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限 2011.3.11 指导教师 专业负责人 2011年 3月7日一、总体设计思想1.基本原理根据乒乓球比赛的过程和规则,首先游戏开始,如果一方非正确击球则另一方加分,当分数大于21时获胜,游戏结束,我们把设计流程规定如图1.1所示。状态机设置了7个状态,分别是“等待发球状态”,“第一盏灯亮状态”,“第八盏灯亮状态”,“球向乙移动状态”,“ 球向甲移动状态”,“允许甲击球状态”,“允许乙击球状态”。这是该程序中起决定

4、作用的七个状态。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态”,若乙发球则转移到“第八盏灯亮状态”,具体说明以甲球为例。若发球后乙没有提前击球-规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”。若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“ 球向甲移动状态”。在“第一盏灯亮状态”, “球向乙移动状态”中,如果乙击球了 ,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球,“ 球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。

5、状态转移规则都是一样的。图1.2给出了乒乓球游戏机的原理图。2.设计框图游戏开始正确接发球?大于21? 甲 乙 否 否大于21?乙方胜利甲方胜利甲方加分乙方加分 N N Y Y游戏结束图1.1设计流程图等待发球 甲得分 乙得分 甲发球 乙发球第一盏灯亮第八盏灯亮允许甲发球球向甲移动 乙击球 甲击球球向乙移动 乙击球 甲击球允许乙发球 乙没击球 甲没击球图1.2 乒乓球游戏机原理图二、设计步骤和调试过程1、总体设计电路该乒乓球游戏机的设计主要包括的模块与内容有:乒乓球游戏机实体的设计,游戏机编程的实现,记分译码器的设计以及构造体的设计。直接对状态机进行描述,所有的状态均可表达为CASE_WHEN

6、结构中的一条CASE语句,而状态的转移则通过IF_THEN_ELSE语句实现。以下我们就详细解析各个板快的设计与实现。2、模块设计和相应模块程序(1)乒乓球游戏机实体的设计设计该乒乓球游戏机的输入与输出端口。首先考虑输入端口,一般应该设置一个异步置位端口reset,用于在系统不正常时回到初始状态:两个发球输入端serve1和serve2,逻辑1分别表示甲方和乙方的发球;两个击球输入端hit1和hit2,逻辑1分别表示甲击球和乙击球;一个开始游戏按钮startbutton,处于逻辑1表示可以游戏;还得有一个时钟输入端口clk。其次考虑输出端口,芯片应该有8个输出端口来控制8个发光二极管,输出逻辑

7、1即输出一个高电平,可以使发光二极管点亮;另外,要直观地表示双方的得分,就得用到4个七段译码器,每方用到2个,可以表示0到21的数字,每个七段译码器需要芯片的7个输出端口来控制,总共28个输出端口。实体的设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; /引用必要的库函数和包集合entity pingponggame is -实体名为pingponggame port(reset:int std_logic;clk:int std

8、_logic;startbutton:int std_logic; -开始游戏输入端口serve:in std_logic_vector(1 to 2); -发球输入端口hit1,hit2:int std_logic; -甲和乙的击球输入端口-控制8个发光二极管的输出端口light:out std_logic_vector(1 to 8); score11,score12,score21,score22:out std_logic_vector(1 to 7)); -4个用于控制4个7段译码器的输出端口end pingponggame;(2)状态机编程实现 状态机设置了7个状态,分别是wait

9、serve, light1on, ballmoveto2, Allow2hit,light8on,ballmoveto1,和allow1hit它们代表的具体数值依次是0到6。在波形模拟图中是用数值来表示状态的。 在整个程序中,状态机起的是中央控制器的作用,由它控制的信号来影响整个程序中的其他相关部分,如记分部分,发光二极管部分。乒乓球游戏机中有两个计数器count1和count2,分别记忆甲和乙的得分,用发光二极管的轮流发光表示球的移动轨迹。状态机的进程如下:process(clk) -clk作为敏感信号触发进程begin -进程开始if reset=1 then -异步置位i=0;count

10、100000;count2=00000;elsif clkevent and clk=1 then -当处于时钟inclock上升沿时 if count1=10101or count2=10101theni=0;count100000;count2=00000;elsif startbutton+0 theni=0;count100000;count2 -进程处于等待发球状态case serve iswhen 10= i=1;state i=8;statei i -进程处于第一盏灯亮状态i=2if hit2=1 theni=0;count1=count1+1;state=waitserve;

11、elsestate -进程处于第八盏灯亮状态i=7;if hit=1 theni=0;count2=count2+1;state=waitserve;elsestate -进程处于球向乙移动状态if hit1=1 theni=0;count2=count2+1;state=waitserve;elsif i=2 then i=1;state=allow1hit;else i -进程处于球向乙移动状态if hit2=1theni=0;ount1=count1+1;state=waitserve;elsif i=7 then i=8;state=allow2hit;else i -进程处于允许甲击球状态if hit1=1 then i=2;state=ballowto2;else count2=count2+1;i=0;state -进程处于允许乙击球状态if hit2=1then i=7;state=b

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

当前位置:首页 > 大杂烩/其它

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