eda的课程设计乒乓球.doc_第1页
eda的课程设计乒乓球.doc_第2页
eda的课程设计乒乓球.doc_第3页
eda的课程设计乒乓球.doc_第4页
eda的课程设计乒乓球.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

电子课程设计 电子乒乓球设计学院:XXXXX专业班级:XXXXX姓名:XXXXX指导老师:XXXXX完成时间:XXXXX目录一、设计任务与要求-3二、总体框图-3三、选择器件-4四、功能模块代码-4五、总体设计电路图、波形图和引脚绑定-9六、心得体会-12乒乓球游戏机一、 设计任务与要求:设计一个能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分的乒乓球游戏机。功能要求:比赛时甲乙双方各在不同的位置发球或击球;根据球的位置发出相应的动作,提前击球或无意义击球判失分;乒乓球的位置和移动方向有发光二极管亮及二极管依次点亮的方向决定;球移动的速度由一个时钟信号控制,可自由调节,且有一led数码管闪烁用于指示当前球速;记分牌由led数码管显示充当,可在每次程序启动时手动清零,当某一方失分,则对方积分器自动加1;通过蜂鸣器对击球得分等操作进行提示,提示声音频率可通过时钟频率调节。二、 总体框图1、 乒乓球游戏机的总体框图如下图所示:片选信号产生模块核心模块七段译码器数据转换模块2、 设计思路及各模块功能: 设计思路: 用D1D8个发光二极管代表乒乓球台,在游戏机的两侧各设置三个开关,一个是发球开关,一个是击球开关,一个是积分器清零开关。甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,按设计者规定的球位乙方就可以击球。若乙方提前击球或没有击到球,则判乙方失分,甲方自动加分,重新发球比赛继续。清零积分器,可以开始新的一局比赛。 片选信号产生模块片选信号产生模块是用来产生数码管的片选信号,将产生的片选信号输送到数据转换模块,以便其对输入数据进行选择。 核心模块 核心模块有两个功能,第一个是实现逻辑功能,即对甲方乙方的发球击球 情况进行判断,然后再对双方谁得分进行记录;第二个是将整数得计分转换成十进制数,以便译码显示。 数据转换模块数据转换模块是将核心模块输送过来的数据通过片选信号对其进行选择,并将符合要求的数据输送出去。 七段译码器七段译码器用来将输入数据进行翻译,便于数码管显示出数据。三、 选择器件:GW48系列EDA实验开发系统。微型计算机。四、 功能模块代码乒乓球游戏顶层文件LIBRARY IEEE;use ieee.std_logic_1164.all;entity TENNIS isport(bain,bbin,clr,clk,souclk:in std_logic;ballout:out std_logic_vector(7 downto 0);countah,countal,countbh,countbl:out std_logic_vector(3 downto 0);lamp,speaker:out std_logic);end;architecture ful of TENNIS iscomponent sound port(clk,sig,en:in std_logic;sout:out std_logic);end component;component ballctrlport(clr,bain,bbin,serclka,serclkb,clk:in std_logic;bdout,serve,serclk,ballclr,ballen:out std_logic);end component;component ballport(clk,clr,way,en:in std_logic;ballout:out std_logic_vector(7 downto 0);end component;component boardport(ball,net,bclk,serve:in std_logic;couclk,serclk:out std_logic);end component;component cou10port(clk,clr:in std_logic;cout:out std_logic;qout:out std_logic_vector(3 downto 0);end component;component cou4port(clk,clr:in std_logic;cout:out std_logic;qout:out std_logic_vector(3 downto 0);end component;component mwayport(servea,serveb:in std_logic;way:out std_logic);end component;signal net,couclkah,couclkal,couclkbh,couclkbl,cah,cbh:std_logic;signal serve,serclka,serclkb,serclk,ballclr,bdout,way,ballen:std_logic;signal bbll:std_logic_vector(7 downto 0);beginnet=bbll(4);ballout=bbll;lamp=clk;uah:cou4 port map(couclkah,clr,cah,countah);ual:cou10 port map(couclkal,clr,couclkah,countal);ubh:cou4 port map(couclkbh,clr,cbh,countbh);ubl:cou10 port map(couclkbl,clr,couclkbh,countbl);ubda:board port map(bbll(0),net,bain,serve,couclkal,serclka);ubdb:board port map(bbll(7),net,bbin,serve,couclkbl,serclkb);ucpu:ballctrl port map(clr,bain,bbin,serclka,serclkb,clk,bdout,serve,serclk,ballclr,ballen);uway:mway port map(serclka,serclkb,way);uball:ball port map(clk,ballclr,way,ballen,bbll);usound:sound port map(souclk,ballen,bdout,speaker);end;发声时钟模块library ieee;use ieee.std_logic_1164.all;entity sound isport(clk:in std_logic;-发声时钟sig:in std_logic;-正确接球信号en:in std_logic;-球拍接球脉冲sout:out std_logic);-提示声输出,接小喇叭end sound;architecture ful of sound isbeginsout=clk and(not sig)and en;-球拍接球,没接到时,发声end;总控制模块library ieee; use ieee.std_logic_1164.all;entity ballctrl isport(clr:in std_logic;-系统复位bain:in std_logic;-左球拍bbin:in std_logic;-右球拍serclka:in std_logic;-左拍准确接球或发球serclkb:in std_logic;-右拍准确接球或发球31clk:in std_logic;-乒乓球灯移动时钟bdout:out std_logic;-球拍接球脉冲serve:out std_logic;-发球状态信号serclk:out std_logic;-球拍正确接球信号ballclr:out std_logic;-乒乓球灯清零信号ballen:out std_logic);-乒乓球灯使能end ballctrl;architecture ful of ballctrl issignal bd:std_logic;signal ser:std_logic;beginbd=bain or bbin;ser=serclka or serclkb;serclk=ser;-球拍正确接球信号bdout=bd;-球拍接球脉冲process(clr,clk,bd)beginif(clr=1)then-系统复位serve=1;-系统处在发球状态ballclr=1;-乒乓球灯清零else-系统正常if(bd=1)then-球拍发球或接球时ballclr=1;-乒乓球灯清零if(ser=1)then-球拍发球或准确接球ballen=1;-乒乓球灯使能允许serve=0;-系统处在接球状态else ballen=0;serve=1;-系统处在发球状态end if;else ballclr=0;-没发球或接球时乒乓球灯不清零end if;end if;end process;end;乒乓球灯模块library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ball isport(clk:in std_logic;-乒乓球灯前进时钟clr:in std_logic;-乒乓球灯清零way:in std_logic;-乒乓球灯前进方向en:in std_logic;-乒乓球灯使能ballout:out std_logic_vector(7 downto 0);-乒乓球灯end ball;architecture ful of ball issignal lamp:std_logic_vector(9 downto 0);beginprocess(clk,clr,en)beginif(clr=1)then lamp=1000000001;-清零elsif en=0thenelsif(clkevent and clk=1)then-使能允许,乒乓球灯前进时钟上升沿if(way=1)then lamp(9 downto 1)=lamp(8 downto 0);lamp(0)=0;-兵乓球右移else lamp(8 downto 0)=lamp(9 downto 1);lamp(9)=0;-兵乓球左移end if;end if;ballout=lamp(8 downto 1);end process;end;乒乓拍模块library ieee; use ieee.std_logic_1164.all;entity board isport(ball:in std_logic;-接球点,也就是乒乓球灯的末端net:in std_logic;-乒乓球灯的中点,乒乓球过中点时,counc32bclk:in std_logic;-球拍接球信号serve:in std_logic;-发球信号couclk:out std_logic;serclk:out std_logic);end board;architecture ful of board isbeginprocess(bclk,net)beginif(net=1)then serclk=0;couclk=0;-乒乓球过中点时,elsif(bclkevent and bclk=1)then-球拍接球时if(serve=1)then serclk=1;-系统处于发球状else-系统处于接球状态if(ball=1)then serclk=1;-乒乓球刚落在接球点else serclk=0;couclk=1;end if;end if;end if;end process;end;积分器模块library ieee; -十进制计数器用来做失球低位计数use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cou10 isport(clk,clr:in std_logic;cout:out std_logic;qout:out std_logic_vector(3 downto 0);end cou10;architecture ful of cou10 issignal qqout:std_logic_vector(3 downto 0);beginprocess(clr,clk)beginif(clr=1)then qqout=0000;cout1000)THEN qqout=0000;cout=1;else qqout=qqout+1;cout=0;end if;end if;qout=qqout;end process;end;library ieee; -四进制计数器用来做失球高位计数use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cou4 isport(clk,clr:in std_logic;cout:out std_logic;qout:out std_logic_vector(3 downto 0);end cou4;architecture ful of cou4 issignal qqout:std_logic_vector(3 downto 0);beginprocess(clr,clk)beginif(clr=1)then qqout=0000;cout0010)THEN qqout=0000;cout=1;else qqout=qqout+

温馨提示

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

评论

0/150

提交评论