EDA课程设计-乒乓球游戏电路设计(双打)_第1页
EDA课程设计-乒乓球游戏电路设计(双打)_第2页
EDA课程设计-乒乓球游戏电路设计(双打)_第3页
EDA课程设计-乒乓球游戏电路设计(双打)_第4页
EDA课程设计-乒乓球游戏电路设计(双打)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

乒乓球游戏电路的设计。首先给出状态机的设计,然后据此给出完成控制电路所需要的设计模块;给出硬件编程语言的实现,并进行仿真;给出下载电路的指导教师签名: I 1 3 3 3 3 4 6 8 10 12 假设发球后丙或丁没有提前击球----规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态〞转移到“球向丙丁移动状态〞。假设在“球向丙丁移动状否否否球向丙丁移 球向丙丁移 球向甲乙移动该乒乓球游戏机的设计主要包括的模块与内容有:乒乓球游戏机实体的设计,游戏机编程的实现,记分译码器的设计以及构造体的设计。直接对状态机进行描述,所有的状态均可设计该乒乓球游戏机的输入与输出端口。首先考虑输入端口,一般应该设置一个异步置‘1’分别表示甲乙丙丁的发球;四个个击球输入端hit1,hit2,hit3和hit别表示甲丙乙丁击球;一个开始游戏按钮startbutton,处于逻辑‘1’表示可以游戏;还得输出一个高电平,可以使发光二极管点亮;另外,要直观地表示双方的得分,就得用到4个useieee.std_logic_11useieee.std_logic_ariuseieee.std_logic_unsigned.all;//引用必要的entitypingponggamehit1,hit2,hit3,hit4a,b:intstd_logic;--甲乙和丙丁的击Llight:outstd_logiscore11,score12,score21,score22:outstd_logic_vector(1to7)〕;在整个程序中,状态机起的是中央控制器的作用,由它控制的信号来影响整个程序中的其他相关局部,如记分局部,发光二极管局部。乒乓球游戏机中有两个计数器count1和count2,分别记忆甲乙和丙丁的得分,用发光二极管的轮流发光表示球的移动轨迹。状态机i<=0;count1<"00000";whenwaitserve=>--进程处于等待发球when"00〞or〞01〞=>i<=1;state<=light1on;when"10〞or〞11〞=>i<=8;state<=light8on;whenlight8on=>--进程处于第八盏灯亮whenballmoveto1=>--进程处于球向丙丁移动whenballmoveto2=>--进程处于球向甲乙移动ount1<=count1+1;stat七段译码器是在数学电路设计中经常用到的显示电路。所谓七段译码器,其实是由7段发光二极管组成的用于显示数字的器件。记分译码器〔mydecoder〕:由于记分需要显示出来,所useieee.std_logic_11useieee.std_logic_ariuseieee.std_logic_unsingnport(binaryin:intstd_logbcdout1:outstd_logic_vector(1to7);--七段译bcdout2:outstd_logiwhen"00000"=>bcdout1<="1111110";bcdout2<="1111110when"00001"=>bcdout1<="1111110";bcdout2<="0110000when"00010"=>bcdout1<="1111110";bcdout2<="1101101when"00011"=>bcdout1<="1111110";bcdout2<="1111001when"00100"=>bcdout1<="1111110";bcdout2<="0110011when"00101"=>bcdout1<="1111110";bcdout2<="1011011when"00110"=>bcdout1<="1111110";bcdout2<="1011111when"00111"=>bcdout1<="1111110";bcdout2<="1110000when"01000"=>bcdout1<="1111110";bcdout2<="1111111when"01001"=>bcdout1<="1111110";bcdout2<="1111011when"01010"=>bcdout1<="0110000";bcdout2<="1111110when"01011"=>bcdout1<="0110000";bcdout2<="0110000when"00000"=>bcdout1<="0110000";bcdout2<="1101101when"01100"=>bcdout1<="0110000";bcdout2<="1111001when"01101"=>bcdout1<="0110000";bcdout2<="0110011when"01111"=>bcdout1<="0110000";bcdout2<="1011011when"10000"=>bcdout1<="0110000";bcdout2<="1011111when"10001"=>bcdout1<="0110000";bcdout2<="1110000when"10010"=>bcdout1<="0110000";bcdout2<="1111111when"10011"=>bcdout1<="0110000";bcdout2<="1111011when"10100"=>bcdout1<="1101101";bcdout2<="1111110when"10101"=>bcdout1<="1101101";bcdout2<="0110000whenothers=>bcdout1<="1101101";bcdout2<="1111110useieee.std_logic_11useieee.std_logic_ariuseieee.std_logic_unsignport(reset1,clk1:instred1,red2,green1,green2:insLlight:outstd_logiscore11,score12,score21,score22:outstd_logicstartbutton,hit1,hit2,himap(count1=>d,count2=>e,hit1=>red1,hit2=>green1,hit3=>red2,hit4=>green2,clk=startbutton=>lopen,serve=>fire,reset=>r从构造体设计中可以看到,控制整个乒乓球游戏机运转的就是状态机进程,它队各个外围局部起控制作用。它是整个程序的核心,起到一个中心控制器的作用。而外围的局部,比二极管使之点亮,这样就可以通过发光二极管模拟乒乓球的运动轨迹。可以看到,在甲或乙变到1,而七段译码器随之改变。在图4.5中可以清楚地看到球的移动轨迹。在不允许甲乙位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左满21分为1局。甲乙和丙丁双方各设一个发光二极管,表示拥有发球球的位置,并能自动裁判和记分的装置。在具体设计过程中还需要改良的是控制系统的纠错这次课程设计总的说来收获很大。在两位同学的帮助下才顺利完成此次课题。此外,也这次课程设计虽然短暂。但却是我独立自主的从设计电路到得出结论。书本上的内容第一次完完全全的综合运用。在设计过程中。遇到了书本中不曾学到的知识,经过请教老师和[2]刘艳.EDA技术在数字系统电路设计实验中的应用[J].实验室研究与探[7]潭会生,张昌凡.EDA技术及应用[M].西安:西安电子科技大学出版社,[8]王振红.VHDL数字电路设计与应用实践教程[M].北京:机械工业出版社,useieee.std_logic_arith.aluseieee.std_logic_unsigned.alport(reset1,clk1:instd_logic;red1,red2,green1,green2:instd_logfire:instd_logic_vectoLlight:outstd_logic_vector(1toscore11,score12,score21,score22:outstd_logic_vectarchitecturegameofyingisstartbutton,hit1,hit2,hit3,hit4:count1,count2:bufferport(binaryin:instd_lobcdout1:outstd_logic_vector(1signald,e:std_logic_vector(4beginportmap(count1=>d,count2=>e,hit1=>red1,hit2=>green1,hit3=>red2,hit4=>green2,clk=>clk1,startbutton=>lopen,serve=>fire,reset=>reset1,liu2:mydecoderportmap(binaryin=>d,bcdout1=>scoru3:mydecoderportmap(binaryin=>e,bcdout1=>scorend;useieee.std_logic_unsigned.alstartbutton,hit1,hit2,hit3,hit4:count1,count2:bufferarchitectureoneofpingponggameistypepingponggameis(waitserve,light1on,ballmoveallow24hit,light8on,ballmoveto1,albeginprocess(reset,hit1,hit2,hit3,hit4,clk,a,b,i)begin--进程开始ifreset='1'then--异步置位i<=0;count1<="00000";count2<="00000";a<elsifclk'eventandclk='1'thenifcount1="10101"orcount2="10101"theni<=0;count1<="00000";count2<elsifstartbutton='0'theni<=0;count1<="00000";count2<whenwaitserve=>--进程处于等待发球when("01")=>i<=1;state<=light1when("10")=>i<=8;state<=light8if(hit2='1')or(hit4='1')thencount1<=count1+1;state<=whenlight8on=>--进程处于第八盏灯亮if(hit1='1')or(hit3='1')thencount2<=count2+1;state<=whenballmoveto1=>--if(hit1='1')or(hit3='1')thencount2<=count2+1;state<=elsifi=2theni<=1;whenballmoveto2=>--if(hit2='1')or(hit4='1')thencount1<=count1+1;state<=elsifi=7theni<=8;whenallow13hit=>--if(hit1='1')or(hit3='1')theni<=2;elsif(hit3='1')and(a=1)theni<=2;whenallow24hit=>--if(hit2='1')and(b=0)theni<=7;b<=1;elsif(hit4='1')and(b=1)theni<=2;b<=0;dddddprocess;light<="10000000"whenuseieee.std_logic_arith.aluseieee.std_logic_unsigned.alport(binaryin:instd_lobcdout1:outstd_logic_vector(1architecturemofmydecoderissignaltembinaryin:std_logic_vectobeginprocess(binaryin)beginwhen"00000"=>bcdout1<="1111110";bcdout2<="111111when"00001"=>bcdout1<="1111110";bcdout2<="011000when"00010"=>bcdout1<="1111110";bcdout2<="110110when"00011"=>bcdout1<="1111110";bcdout2<="111100when"00100"=>bcdout1<="1111110";bcdout2<="011001when"00101"=>bcdout1<="1111110";bcdout2<="101101when"00110"=>bcdout1<="1111110";bcdout2<="101111when"00111"=>bcdout1<="1111110";bcdout2<="111000when"01000"=>bcdout1<="1111110";bcdo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论