欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    乒乓游戏机EDA课设.docx

    • 资源ID:13192613       资源大小:171.89KB        全文页数:21页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    乒乓游戏机EDA课设.docx

    1、乒乓游戏机EDA课设课 程 设 计 任 务 书学院信息科学与工程学院专业电子信息工程学生姓名王金强学号1203030224设计题目乒乓游戏机一、内容及要求: 利用所学的EDA设计方法设计乒乓游戏机,熟练使用QUARTUS应用软件,进一步学习使用VHDL语言、原理图等EDA设计方法进行综合题目的方法。1.调试底层模块,并时序仿真。2.设计顶层模块,并时序仿真。3.撰写课程设计报告.设计报告要求及格式见附件。二、功能要求:设计一个乒乓球游戏机,该机模拟乒乓球比赛的基本过程和规则,并能自动裁判和几分。要求:(1)甲乙双方各在不同的位置发球或击球。(2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定

    2、,球移动的速度为0.1-0.5秒移动一位。(3)11分为一局,甲乙双方都应设置各自的几分牌,任何一方先记满11分,该方胜出。当记分牌清零后,重新开始。三、进度安排:课程设计时间为10天(2周) 1、调研、查资料1天。 2、总体方案设计2天。 3、代码设计与调试5天。 4、撰写报告1天。 5、验收1天。指导教师(签字):年 月 日学院院长(签字):年 月 日目 录1 设计目的 12 设计要求和任务 13 总体设计思路及原理描述 24 分层次方案设计及代码描述 34.1 乒乓球游戏机实体的设计 34.2 状态机编程实现 44.3 记分译码器的设计 64.4 构造体的设计 85 各模块的时序仿真图

    3、106 总结 147 参考文献 151 设计目的这次的设计主要是学习使用EDA集成设计软件MxplussII,电路描述,综合,模拟过程。掌握使用EDA工具设计乒乓游戏机的的设计思路和设计方法。体会使用EDA综合过程中电路设计方法和设计思路的不同。2 设计要求和任务两人乒乓游戏机能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。乒乓游戏机是用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定的方向移动来表示球的运动。在游戏机的两侧各设置两个开关,一个是发球开关(s1a,s1b),另一个是击球开关(s2a,s2b)。甲乙两人按乒乓球比赛的规则来操作开关。当甲

    4、方按动发球开关s1a时,靠近甲方的第一盏灯亮,然后二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,按设计者规定的球位乙方就可以击球。若乙方提前击球或者没有击着球,则判乙方失分,甲方记分牌自动加分。然后重新发球,比赛继续进行。比赛一直进行到一方记分到11分,该局结束,记分牌清零,可以开始新的一局比赛。具体功能如下:(1)使用乒乓游戏机的甲乙双方各在不同的位置发球或击球。(2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移动的速度为0.10.5s移动一位。游戏者根据球的位置发出相应的动作,提前击球或者出界均判失分。(3)比赛用11分为一局来进行,甲乙双方都应设置各自的记分牌,任何一方

    5、先记满11分,该方就算胜了此局。记分牌清零后,又可开始新的一局比赛。3 总体设计思路及原理描述状态机设置了7个状态,分别是“等待发球状态”,第一盏灯亮状态“,第八盏灯亮状态”,“球向乙移动状态”,“球向甲移动状态”,“允许甲击球状态”,“允许乙击球状态”。这是该程序中起作用的7个状态。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态,若乙发球则转移到”第八盏灯亮状态“,具体说明以甲发球为例。若发球后乙没有提前击球规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”。若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击

    6、球状态”,在此状态下,如果乙击球了,那么状态就转移到“球向甲移动状态”。在“第一盏灯亮状态”,“球向乙移动状态”中,如果乙击球了,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球。“球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。状态转移规则都是一样。图3-1给出了乒乓游戏机的状态转移图。图3-14 分层次方案设计及代码描述4.1 乒乓球游戏机实体的设计设计该乒乓球游戏机的输入/输出端口。首先考虑输入端口,一般都应该设置一个异步置位端口reset,用于在系统不正常时回到初始状态;两个发球输入端serve1和serve2,逻辑1分别表示甲方和乙方的发球;两个击球输入

    7、端hit1和hit2,逻辑1分别表示甲击球和乙击球;一个开始游戏按钮startbutton,处于逻辑1表示可以游戏;还得有一个时钟输入端口clk。其次考虑输出端口,芯片应该有8个输出端口来控制8个发光二极管,输出逻辑1即输出一个高电平,可以使发光二极管点亮;另外,要直观地表示双方的得分,就得用到七段译码器,每方用到2个,可以表示021的数字,每个七段译码器需要芯片的7个输出端口来控制,总共需要28个输出端口。实体的设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_log

    8、ic_unsigned.all;entity pingponggame is port(reset: in std_logic;clk: in std_logic;startbutton: in std_logic;serve: in std_logic_vector(1 to 2);hit1,hit2: in std_logic;light: out std_logic_vector(1 to 8);score11,score12,score21,score22: out std_logic_vector(1 to 7);end pingponggame;4.2 状态机编程实现状态机设置了7

    9、个状态,分别是等待发球状态(waitserve)、第一盏灯亮状态(light1on)、第八盏灯亮状态(light8on)、球向乙移动状态(ballmoveto2)、球向甲移动状态(ballmoveto1)、允许甲击球状态(allow1hit)和允许乙击球状态(allow2hit)。状态waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1和allow1hit代表的具体数值依次是0到6.在波形模拟图中是用数值来表示状态的。乒乓球游戏机中有两个计数器count1和count2,分别记忆甲的得分和乙的得分;一个i信号,用它的数值来控

    10、制状态机外8个发光二极管的亮和暗,比如当i=1时表示第一个发光二极管亮,用发光二级管的轮流发光表示球的移动轨迹。输入状态机的信号有游戏开关startbutton信号,它是1位二进制信号,数值为1表示可以进入游戏;serve信号,是一个2位二进制向量,“01”表示甲发球;两个二进制信号hit1和hit2分别表示甲乙是否击球,若数值为1,表示击球,不为1表示不击球。以下是状态机进程代码。process(clk)beginif reset=1 theni=0;count1=00000;count2=00000;elsif clkevent and clk=1thenif count1=10101 o

    11、r count2=10101then i=0;count1=00000;count2=00000; elsif startbutton=0 then i=0;count1=00000;count2case serve iswhen 00 = i i=1;state i=8;state i i i=2;if hit2=1 then i=0;count1=count1+1;state=waitserve;elsestate i=7;if hit1=1 then i=0;count2=count2+1;state=waitserve;elsestateif hit1=1 then i=0;count

    12、2=count2+1;state=waitserve;elsif i=2 then i=1;state=allow1hit;else iif hit2=1 then i=0;count1=count1+1;state=waitserve;elsif i=7 then i=8;state=allow2hit;else iif hit1=1 then i=2;state=ballmoveto2;else count2=count2+1;i=0;stateif hit2=1 then i=7;state=ballmoveto1;else count1=count1+1;i=0;state=waits

    13、erve;end if;end case;end if;end if;end process;4.3 记分译码器的设计七段译码器是在数字电路设计中经常用到的显示电路。所谓七段译码器,其实是由7段发光二极管组成的用于显示数字的器件。如图3-2所示。图3-2 其中的a,b,c,d,e,f,g飞奔为7段发光二极管,通过控制每个发光二极管的亮和暗,可以分别显示09十个数字。例如,b和c两段发光二极管亮,其他发光二极管暗,则表示数字“1”;a,b,g,e和d五段发光二极管亮,其他发光二极管暗,则表示数字“2”。七段译码器有7个输入端,分别控制ag七段发光二极管。记分译码器(mydecoder):由于记分

    14、需要显示出来,所以要使用七段译码器。而状态机中的记分是由5位二进制码来表示的,即count1和count2.以下程序就是实现从5位二进制码转换成七段译码显示。bcout1(1)和bcout2(1)表示a段,bcout1(2)和bcout2(2)表示b段,以此类推,bcout1(7)和bcout2(7)表示g段。这个记分译码器电路是针对乒乓球游戏机的特点进行的特别设计,采用的是全部列举的方法,代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.

    15、all;entity mydecoder isport(binaryin: in std_logic_vector(1 to 5);bcdout1: out std_logic_vector(1 to 7);bcdout2: out std_logic_vector(1 to 7);end mydecoder;architecture m of mydecoder issignal tembinaryin:std_logic_vector(1 to 5);beginprocess(binaryin)begintembinaryin bcdout1=1111110;bcdout2 bcdout1

    16、=1111110;bcdout2 bcdout1=1111110;bcdout2 bcdout1=1111110;bcdout2 bcdout1=1111110;bcdout2 bcdout1=1111110;bcdout2 bcdout1=1111110;bcdout2 bcdout1=1111110;bcdout2 bcdout1=1111110;bcdout2 bcdout1=1111110;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2

    17、bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=0110000;bcdout2bcdout1=1101101;bcdout2bcdout1=1101101;bcdout2bcdout1=1101101;bcdout2=1111110;end case;end process;end m;4.4 构造体的设计 构造体代码如下:architecture game of pingponggame is t

    18、ype pingpong is (waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1,allow1hit);signal state:pingpong;signal i:integer range 0 to 8;signal count1,count2:std_logic_vector(1 to 5):=00000;component mydecoder isport(binaryin: in std_logic_vector(1 to 5);bcdout1: out std_logic_vector(1 to 7);bc

    19、dout2: out std_logic_vector(1 to 7);end component;beginprocess(clk)begin.end process;light=10000000 when (i=1) else 01000000 when (i=2) else 00100000 when (i=3) else00010000 when (i=4) else00001000 when (i=5) else00000100 when (i=6) else00000010 when (i=7) else00000001 when (i=8) else00000000;u0: my

    20、decoder port map(count1,score11,score12);u1: mydecoder port map(count2,score21,score22);end game;5 各模块的时序仿真图图5-1所示代表乙发球,由light端口输出的高电平会驱动芯片以外的发光二极管使之点亮,这样就可以通过发光二极管模拟乒乓球的运动轨迹。可以看到,在甲该击球的时候没有击球,也就是hit1在state状态6(allow1hit,允许甲击球状态)的时候没有高电平1输入,则算乙得分,count2由0变到1,score22的值随之变化,“30”代表了二进制的“0110000”,就是七段译码器

    21、显示1,之后state回到状态0(waitserve,等待发球状态)。从最后一行state值的变化,可以清楚地分析状态转移。图5-1i从8开始依次递减计数,控制发光二极管亮暗的light信号也随着i的数值而变化,如图5-2所示: 图5-2 图5-3是在乙发球以后,甲子正确时刻击球的波形仿真图。甲在state为状态6(allow1hit,允许甲击球状态)的时候击球了,在图上hit1在此时刻出现高电平,看到state转移了状态2(ballmoveto2,球向乙移动状态)当到了状态3(allow2hit,允许乙击球状态)乙没有击球,所以甲得分了,count1由0变到1,而七段译码器随之改变。图5-3

    22、图5-4为上图的球的移动轨迹:图5-4 图5-5是仿真甲提早击球的情况,在不允许甲击球的状态下,即state处于状态5(ballmoveto1,球向甲移动状态)时,hit1输入逻辑1,表示甲击球了,所以乙得分。图5-5图5-6为上图的球的移动轨迹:图5-66 总结 这次EDA课程设计历时两个星期,在整整两个星期的日子里,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到

    23、了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也能仿真正确了。最难的是引脚锁定与测试这一块,由于,我选的乒乓球游戏机的引脚很多,而且也比较复杂,其中老是将引脚弄错,终于锁定完了,编译也没有出错,当在硬件上测试的时候,发现结果并不像设定的那么好,比如在发球的时候,根本没有设置首先从哪边开始,然后在接发球的过程中很难接到,不过也有接到的时候,基本上达到了实验的要求。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来

    24、,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。7 参考文献EDA技术与数字系统设计 邹彦主编 电子工业出版社数字电子技术基础(第五版)阎石 主编 高等教育出版社EDA技术及应用 朱正伟主编 清华大学出版社MAX+plus入门篇 廖裕评等主编 清华大学出版社数字逻辑设计实验技术与EDA工具 张亦华等主编 北京邮电大学出版社EDA技术及应用 谭会生等主编 西安电子科技大学出版社FPG

    25、A系统设计与实践 黄智伟等主编 电子工业出版社附录:基于VHDL数字电子钟设计与实现源程序代码(1)顶层文件(文件名为pingponggame.vhd)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity pingponggame is port(reset: in std_logic;clk: in std_logic;startbutton: in std_logic;serve: in std_logic_vector(1 t

    26、o 2);hit1,hit2: in std_logic;light: out std_logic_vector(1 to 8);score11,score12,score21,score22: out std_logic_vector(1 to 7);end pingponggame;architecture game of pingponggame is type pingpong is (waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1,allow1hit);signal state:pingpong;signal

    27、 i:integer range 0 to 8;signal count1,count2:std_logic_vector(1 to 5):=00000;component mydecoder isport(binaryin: in std_logic_vector(1 to 5);bcdout1: out std_logic_vector(1 to 7);bcdout2: out std_logic_vector(1 to 7);end component;beginprocess(clk)beginif reset=1 theni=0;count1=00000;count2=00000;elsif clkevent and clk=1thenif count1=10101 or count2=10101then i=0;count1=00000;count2=00000; elsi


    注意事项

    本文(乒乓游戏机EDA课设.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开