![EDA技术课程设计乒乓球比赛游戏机_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/f24bfcea-1f3c-42ec-ab39-9245cb49454c/f24bfcea-1f3c-42ec-ab39-9245cb49454c1.gif)
![EDA技术课程设计乒乓球比赛游戏机_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/f24bfcea-1f3c-42ec-ab39-9245cb49454c/f24bfcea-1f3c-42ec-ab39-9245cb49454c2.gif)
![EDA技术课程设计乒乓球比赛游戏机_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/f24bfcea-1f3c-42ec-ab39-9245cb49454c/f24bfcea-1f3c-42ec-ab39-9245cb49454c3.gif)
![EDA技术课程设计乒乓球比赛游戏机_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/f24bfcea-1f3c-42ec-ab39-9245cb49454c/f24bfcea-1f3c-42ec-ab39-9245cb49454c4.gif)
![EDA技术课程设计乒乓球比赛游戏机_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-6/21/f24bfcea-1f3c-42ec-ab39-9245cb49454c/f24bfcea-1f3c-42ec-ab39-9245cb49454c5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 -进程处于允许甲击
12、球状态if hit1=1 then i=2;state=ballowto2;else count2=count2+1;i=0;state -进程处于允许乙击球状态if hit2=1then i=7;state=ballmoveto1;else count1=count1+1;i=0;state=waitserve;end if;end case;end if;end if;end process;(3)记分译码器的设计七段译码器是在数学电路设计中经常用到的显示电路。所谓七段译码器,其实是由7段发光二极管组成的用于显示数字的器件。记分译码器(mydecoder):由于记分需要显示出来,所以要使用
13、七段译码器。而状态机中的记分是由5位二进制码来表示的,即count1和count2。以下程序就是实现从5位二进制码转换成七段译码显示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsingned.all; entity mudecoder isport(binaryin:int std_logic_vector(1 to 5); -5位二进制码的输入端口bcdout1:out std_logic_vector(1 to 7); -七段译码器输出端口bcdout
14、2:out std_logic_vector(1 to 7);end mydecoder;architecture m of mydecoder issignal tembinaryin:std_logic_vector(1 to 5);beginprocess(binaryin)begintembinaryinbcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdou
15、t1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=1111110;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout
16、1=0110000;bcdout2bcdout1=1101101;bcdout2bcdout1=1101101;bcdout2bcdout1=1101101;bcdout2=1111110;end case;end process;end m; 这个记分译马电路是针对乒乓球游戏机的特点进行的特别设计,采用的是全部列举的方法。(4)构造体的设计该构造体紧跟在实体设计之后,这样就完成了数字乒乓球游戏机的vhdl源程序编写。rchitecture game of pingponggame istype pingpong is (waitserve,light1on,ballmoveto2,allow
17、2hit,light8on,ballmoveto1,allow1hit);-设置7个状态,为枚举数据类型,记为pingpong signal state:pingpong;signal i:integer range 0 to 8;signal count1,count2:std_logic_vector(1 to 5):=00000; -内部计数器,是5位二进制变量component mydecoder isport(binaryin: in std_logic_vector(1 to 5);bcdout1:out std_logic_vector(1 to 7);bcdout2:out s
18、td_logic_vector(1 to 7););end component; -调用记分译码器beginprocess(clk) -状态机进程beginend process; -进程处i信号控制发光二极管的亮暗light=10000000when(i=1) else01000000 when(i=2) else00100000 when(i=3) else00010000 when(i=4) else00001000 when(i=5) else00000100 when(i=6) else00000010 when(i=7) else00000001 when(i=8) else000
19、00000; -其他情况所有发光二极管都暗u0:mydecoder port map(count1,score11,score12); -用七段译码器显示甲的分数u1:mydecoder port map(count2,score21,score22); -用七段译码器显示乙的分数end game;从构造体设计中可以看到,控制整个乒乓球游戏机运转的就是状态机进程,它队各个外围部分起控制作用。它是整个程序的核心,起到一个中心控制器的作用。而外围的部分,比如分数显示,球的轨迹,都是通过它传出的信号来控制。状态机中的i信号和count1,count2信号的变化同时就可以影响到外围的显示部分-发光二极
20、管和七段译码器,从而表示出当时的乒乓球位置和双方分数情况。3、仿真及仿真结果分析编译完成后进行仿真(如下图)在仿真图中,看到serve数组为1,代表乙发球。i从8开始依次递减计数,控制发光管亮暗light信号也随着i的数值变化,由light端口输出的高电平驱动芯片以外的发光二极管使之点亮,这样就可以通过发光二极管模拟乒乓球的运动轨迹。可以看到,在甲该击球的时候没有击球,也就是hit1在state状态6的时候没有高电平1输入,则乙得分,count2由0变1,score22的值随之变化。从最后一行state值的变化,可以清楚分析状态转移。甲在state为状态6的时候击球了,在图上hit1在此时刻出
21、现高电平,看到state转移到了状态2。当到了状态3乙没有击球,所以甲得分了,count1由0变到1,而七段译码器随之改变。在图4.5中可以清楚地看到球的移动轨迹。在不允许甲击球的状态下,即state处在状态5时,hit1输入逻辑1,表示甲击球了,所以乙得分。4、实验调试结果通过调试我们可以观察到,8个led排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的led指示球的当前位置,点亮的led依此从左到右,或从右到左,其移动的速度应能调节。当“球”(点亮的那只led)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。若击中,则球向相反方向移动;若未击中,则对方得1分。一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球有效。三、结论及心得体会在课题设计中,通过使用quartus这个完全集成化、易学易用的可编程逻辑设计环境,利用vhdl语言设计的乒乓球游戏机,较成功的完成了预期的效果,能够正确判断与显示乒乓球的位置,并能自动裁判和记分的装置。在具体设计过程中还需要改进的是控制系统的纠错功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公路工程资料承包合同年
- 游戏电竞产业电竞战队管理与赛事组织方案设计
- 企业股权结构调整方案
- 高新农业技术创新发展合同
- 第2单元 生物体的结构层次 单元导学(新教学设计)2023-2024学年七年级上册生物(人教版)
- 文心兰种苗买卖合同8篇
- 药品质量保证协议新5篇
- 铝合金门窗砂浆施工方案
- 镇江住宅暖通工程施工方案
- 2025版农副产品定购合同5篇
- 2022《化工装置安全试车工作规范》精选ppt课件
- 吞咽障碍筛查表
- Q∕GDW 12067-2020 高压电缆及通道防火技术规范
- 汽车系统动力学-轮胎动力学
- 《经济研究方法论》课程教学大纲
- 10T每天生活污水处理设计方案
- 艾琳歆日内交易2011-2月至4月份图表
- 中国民航国内航空汇编航路314系列航线
- 山西特色文化简介(课堂PPT)
- 工业厂房工程技术标(共93页)
- 一元二次方程100道计算题练习(附答案)
评论
0/150
提交评论