VHDL的乒乓球逻辑电路设计.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VHDL的乒乓球逻辑电路设计

基于VHDL的乒乓球游戏电路设计 1、 概述 两人乒乓球游戏机是由发光二极管代替球的运动。并按一定的规则进行对垒比赛。甲乙双方发球和接球分别用两只开关代替。当甲方按动发球开关时,球就向前运动(发光管向前移位),当球运动过网到一定位置以后,乙方就可接球。若在规定的时间内,乙方不接球或提前、滞后接球,都算未接着球,甲方的计分牌自动加分。然后重新按规则有一方发球,比赛才能继续进行。比赛一直要进行到一方记分牌达到11分,这一局才告结束。 2、 设计任务和要求 乒乓球游戏机逻辑电路控制任务和要求如下: 1、乒乓球游戏机甲、乙双方各有两只按钮,分别为发球按钮和击球按钮。 2、乒乓球的移动用14只LED灯模拟运行。亮着的灯表示乒乓球此时的位置,乒乓球可以向左和向右移动。 3、球过网到一定的位置方可接球,提前击球或出界击球均判为失分,对方的得分加1。 4、比赛采用11分制,任何一方先记满11分就获胜,比赛一局就结束。当计分牌清零后,又可开始新的一轮比赛。 5、利用VHDL写相应的代码,利用状态机来实现其功能。 3、 总体设计 总体设计框图: 该系统可由以下几个模块构成 (1). Fenpin模块(分频模块),用来产生球移动频率和得分显示动态扫描频率。 (2). Move模块(模拟运行模块),用来显示乒乓球的运动情况 (3). Control模块(控制模块),用来控制乒乓球的运动情况,包括发球、接球、复位,加分等的控制。 (4). Showscore模块(得分显示模块),用来记录和显示各方的得分情况,通过四个7段数码管显示出来。 (5). Pingpangqiu模块(顶层文件),最终的乒乓球逻辑电路的一切功能的顶层文件。 (2) Fenpin模块设计 ibrary ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity fenpin is port(clk: in std_logic; -----输入频率,为10MHZ clkscan: out std_logic; -----输出得分动态扫描频率,为8us clkmove: out std_logic); -----球移动频率,为400ms end; architecture behavior of fenpin is begin process(clk) variable cntscan: integer range 80 downto 0; -----80分频后得到8us脉冲 --variable cntmove: integer range 4000000 downto 0; variable cntmove: integer range 400 downto 0; -----为了仿真方便则使球的移动频率改为40us begin if clkevent and clk=1 then ------clk的上升沿到来时 if cntscan80 then cntscan:=cntscan+1; ------计数器未满时加1 else cntscan:=0; ------否则计数器清零 end if; if cntmove400 then cntmove:=cntmove+1; else cntmove:=cntmove+1; end if; if cntscan40 then -------使其占空比为50% clkscan=0; else clkscan=1; end if; if cntmove200 then clkmove=0; else clkmove=1; end if; e

文档评论(0)

ipad0a + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档