- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电路与系统课程设计-乒乓球游戏机
大连理工大学城市学院 数字电路与系统课程设计 设计题目:乒乓球游戏机学 院:电子与自动化学院班 级: 姓 名: 学 号: 指导教师: 完成日期:2015年4月21日目录第一章 设计任务1.1项目名称1.2项目设计说明1.3项目总体功能图第二章 设计方案2.1设计思路2.2各模块功能分析第三章 心得体会第一章 设计任务1.1项目名称:设计乒乓球游戏机1.2项目设计说明:1.设计一个乒乓球游戏机,该机模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分;2.使用乒乓球游戏机的甲乙双方各在不同的位置发球和击球;3.乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移动的速度为0.1-0.5s移动一位。使用者根据球的位置发出相应的动作,提前击球或出界均判失分。设计者可按过网击球来设计,也可按乒乓球移动到对方第二盏灯亮后方可击球来设计。1.3项目总体功能图 总体框图 系统设计流程图第二章 设计方案:2.1设计思路状态机设置了7个状态,分别是“等待发球状态”,第一盏灯亮状态“,第八盏灯亮状态”,“球向乙移动状态”,“球向甲移动状态”,“允许甲击球状态”,“允许乙击球状态”。这是该程序中起作用的7个状态。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态,若乙发球则转移到”第八盏灯亮状态“,具体说明以甲发球为例。若发球后乙没有提前击球——规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”。若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“球向甲移动状态”。在“第一盏灯亮状态”,“球向乙移动状态”中,如果乙击球了,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球。“球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。由乒乓游戏机功能,用原理图作为顶层模块,再将底层划分成四个小模块来实现: 1)cornal模块:整个程序的核心,它实现了整个系统的全部逻辑功能;(2)ch41a模块:在数码的片选信号时,送出相应的数据。(3)sel模块:产生数码管的片选信号;?4)disp模块:7段译码器。2.2各模块功能分析2.2.1 cornal模块VHDL程序描述:此模块为整个程序的核心,它实现了题目的全部逻辑功能Cornal模块原理图a)?是实现整个设计的逻辑功能,当游戏开始时,先通过CLR对整个系统进行清零,在输入CLK上升沿有效的条件下,甲方开始发球,LED灯从距离甲方最近的一个开始闪亮,并依次向乙方移动,过了网后乙方就可以击球,若乙方击球成功,则球按原路返回,再次过网后甲方就可击球,若甲击球成功,则按以上游戏一直进行下去,若有一方击球失败或提前击球则LED灯全部熄灭,对方在记分牌上自动记一分;当其中的一方记满11分时比赛结束,清零后可开始下一局。?b)?是将整数计分转换为十进制数,便于译码显示。当甲乙双方的记分低位到达9时使低位清零,同时使高位加1,以便正确地在数码管上显示得分。?CLR为乒乓球游戏清零键,af为A方发球控制键,aj接球键;?bf为乙方发球控制键,bj接球键;CLK为控制乒乓球行进速度的时钟信号,接50MHZ时钟信号源;SHIFT[7..0]为LED灯显示输出端,接8个LED显示灯;ah[3..0]为甲方记分的高位,al[3..0]为甲方记分的低位,bh[3..0]为乙方记分的高位,bl[3..0]为乙方记分的低位,以上四位都要经过译码器译码后接8位共阴极数码显示管。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity corna is port(clr,af,aj,bf,bj,clk:in std_logic;--af,aj,bf,bj:分别为A方发球键、键,B方发球键、接关球键,均接按键开关 shift:out std_logic_vector(7 downto 0); ah,al,bh,bl:out std_logic_vector(3 downto 0)); end corna; architecture corn_arc of corna is signal amark,bmark:integer; begin process(clr,clk) variable a,b:std_logic; variable she:std_logic_vector(7 downto 0); begin if clr=0 then a:=0; b:=0; she: amark=0; bmark=0; elsif clkeven
文档评论(0)