基于VHDL课程设计乒乓球游戏_第1页
基于VHDL课程设计乒乓球游戏_第2页
基于VHDL课程设计乒乓球游戏_第3页
基于VHDL课程设计乒乓球游戏_第4页
基于VHDL课程设计乒乓球游戏_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

Shanghai Normal University课程设计名称 乒乓球游戏程序 姓名 专业班级 通信工程(1)班学院 信息与机电工程学院 完成日期 2017 年 5 月目录摘 要 .1第一部分 绪论 .21.1 课题设计背景 .21.1.1 FPGA 简介 .21.1.2 硬件描述语言 VHDL .21.1.3 Quartus简介 .21.2 课题主要内容 .3第二部分 系统设计 .42.1 整体设计图 .42.2 设计思路 .52.3 具体功能对应等 .6第三部分 模块设计 .93.1 控制模块 .93.1.1 引脚功能 .93.1.2 核心代码及解释 .103.1.3 RTL 图 .133.2 分频模块 .143.2.1 引脚功能 .143.2.2 核心代码及解释 .143.2.3 RTL 图 .153.3 按键处理模块 .153.3.1 引脚功能 .153.3.2 核心代码及解释 .153.3.3 RTL 图 .163.4 锁楼层模块 .173.4.1 引脚功能 .173.4.2 核心代码及解释 .173.43 RTL 图 .18第四部分 操作配图 .19第五部分 结论 .234.1 遇到的问题和改进 .234.2 工作分配比例 .23第六部分 附录 .241基于 FPGA 的乒乓球游戏程序的设计摘 要VHDL 是高速集成电路硬件描述语言,目前已成为许多设计自动化工具普遍采用的标准化硬件描述语言VHDL 语言功能性强、覆盖面广、灵活性高,具有很好的实用。本文设计一个基于 VHDL 的乒乓游戏机模拟乒乓球比赛。用 VHDL 编程模拟乒乓球比赛,电路模块由分频、状态机等部分组成,对各部分编写 VHDL 算法,进行编译及程序下载。通过验证,乒乓游戏机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分,还能根据接球快慢改变球运行的速度。实现乒乓游戏机的功能。关键词:乒乓游戏机、VHDL、状态机2第一部分 绪论1.1 课题设计背景1.1.1 FPGA 简介FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。1.1.2 硬件描述语言 VHDLVHDL 的英文全名是 VHSIC Hardware Description Language(VHSIC 硬件描述语言)。VHSIC 是 Very High Speed Integrated Circuit 的缩写,是 20 世纪 80 年代在美国国防部的资助下始创的,并最终导致了 VHDL 语言的出现。1987 年底,VHDL 被 IEEE 和美国国防部确认为标准硬件描述语言。VHDL 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点。1.1.3 Quartus简介Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。Altera Quartus II (3.0 和更高版本)设计软件是业界唯一提供 FPGA 和固定功能 HardCopy 器件统一设计流程的设计工具。Quartus II design 是最高级和复杂的,用于 system-on-a-programmable-chip (SOPC)的设计环境。 QuartusII design 提供完善的 timing closure 和 LogicLock? 基于块的设计流程。QuartusII design 是唯逐一个包括以 timing closure 和 基于块的设计流为基本特征的 programmable logic device (PLD)的软件。 Quartus II 设计软件改进了性能、提升了功能性、解决了潜伏的设计延迟等,在产业领域率先提供 FPGA与 mask-programmed devices 开发的同一工作流程。31.2 课题主要内容随着可编程逻辑电路和 EDA 技术的发展,在逻辑电路设计和嵌入式系统设计方面,以 CPLD/FPGA 为代表的可编程逻辑器件已经逐步代替了传统的标准逻辑器件;本次论文的乒乓球游戏所有的程序可以集成在一个 FPGA 开发芯片上面,不用在用其他功能的分立逻辑元件,达到集成度高、响应快、功耗低的特点。本次论文主要是基于 FPGA 的乒乓球游戏的设计,模拟乒乓球比赛的基本过程和规则,自动裁判和记分,比局为 7 局,每局 11 分。而本次论文采用模块化设计,主要分为两大模块:时钟分频模块、状态机控制模块。4第二部分 系统设计2.1 整体设计图图 1 乒乓球游戏程序 BDF 图2.2 设计思路1控制模块状态图图 2 乒乓球游戏程序控制模块状态图52总体思路SW0 开关(EN)控制功能使能与比赛清零 。SW0 关闭(EN=0),显示学号后六位,打开时允许运行,比分比局清零。利用状态机,设初始状态处于 start 状态,key3 为复位键,按下 key3 可以回到 start 状态。通过各种请求信号实现状态的相互转换,进而实现发球和乒乓球左右移动、击球的相互转换,并在球未击中、提前击中、发球失败时显示相应比分、比局情况。通过设计 control 的反馈控制频率方式,利用不同键击球的快慢控制球运行的速度。并在整个游戏结束时有一个 end 标记与比分比局切换显示。2.3 具体功能对应等1乒乓球控制模块控制乒乓球的运行状态的转换,比分、比局的显示。反馈信号信号的设置和输出,为分频模块提供指令信号,控制球运行的速度。图 3 乒乓球运行控制模块 BDF2时钟分频模块为状态机产生 3 种不同的时钟信号。图 4 时钟分频模块 BDF6第三部分 模块设计3.1 控制模块3.1.1 引脚功能表 1 控制模块的引脚功能表定义类型 外设 引脚 功能EN SW0 关闭显示学号后 6 位并对比分清零,打开则开始游戏CLK 分频模块送入 3 种不同频率的速度RST KEY3 按一次重新开始新的一球HIT17.13 SW17SW13 选手甲接发球开关HIT5.2 SW5SW2 选手乙接发球开关in std_logicHIT12.6 SW12SW6 禁止触球区HEX7 HEX7 选手甲获胜局数HEX6 HEX6 选手乙获胜局数HEX5 HEX5 显示无意义HEX4 HEX4 显示无意义HEX3 HEX3 选手甲获胜比分HEX2 HEX2 选手甲获胜比分HEX1 HEX1 选手乙获胜比分HEX0 HEX0 选手乙获胜比分CONTROL1.0 输出反馈给分频模块outstd logicLIGHT17.2 LEDR17LEDR2 乒乓球位置显示3.1.2 核心代码及解释模块主要分状态转换,状态译码,LED 灯的译码,和辅助变量 temp,辅助判断信号 control 的计数进程。利用 temp 判断是否分出胜负即游戏是否结束,结束之后显示闪烁辅助标志 End 并且清零比分。利用 control 判断接球快慢,反馈到分频器,分频器根据接球快慢控制球的运行速度,共快中慢三种速度,分别为 50Hz,10Hz,5.556Hz。为方便检查结果,SW1 直接控制速度开关,共快慢两种速度,分别为 50Hz,5.556Hz。1 中间变量的初始化:SIGNAL ST,NST: STATE:=start;SIGNAL reg: STD_LOGIC_VECTOR(17 DOWNTO 2); -灯的内部变量SIGNAL BIFEN1,BIFEN2: integer range 0 to 11;-选手甲乙的比分记录变量SIGNAL BIJUONE,BIJUTWO: integer range 0 to 4; -选手甲乙的比局记录变量SIGNAL TEMP: integer range 0 to 1; -比局数的内部计数变量SIGNAL BIJU1,BIJU2: STD_LOGIC_VECTOR(6 DOWNTO 0); -选手甲乙的比局译码输出变量7SIGNAL BIFENOUT11,BIFENOUT12,BIFENOUT21,BIFENOUT22: STD_LOGIC_VECTOR(6 DOWNTO 0); -选手甲乙的比分译码输出变量SIGNAL REG_1: STD_LOGIC_VECTOR(6 DOWNTO 0); -数码管的内部变量SIGNAL REG_5: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL REG_3: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL REG_8: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL REG_4: STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL REG_2: STD_LOGIC_VECTOR(6 DOWNTO 0);2主控组合进程:通过判断球的位置信号及开关键信号执行相应的状态转换。EN=1 时游戏开始,进入状态 start, temp 开始计数,进入状态 wait1 检测发球选手并点亮相应的球所代表的LED,之后进入状态 send,之后选择进入状态,movatoright 或 movetoleft,球开始向对方选手移动,当球到达可接球区域时,若对方及时击打并及时关闭开关,则进入状态movetoleft 或 movatoright 球向回移动,如此反复。若发球方或接球方未及时关闭开关,则视为击打失败,返回状态 start,对方加一分。每局为 11 分制,共设七局。每结束一局 temp 就会相应加 1,当 temp 加到 5,即分出胜负之后显示闪烁辅助标志 End。以选手甲发球为例:(1)进入状态 start,统计比分及比局。(2)进入状态 send,判断选手甲(假设甲为左边一方)是否发球,若发球则进入状态wait1,否则停留在状态 start。(3)进入状态 wait1,判断选手甲发球端球代表的灯 REG17 是否亮起,若是则进入状态 movetoright,反之返回状态 start。(4)进入状态 movetoright,灯右移,并判断是否有无关按键按下 (SW17SW14),若无则继续右移,反之返回状态 start 并且对方得一分。当球移至 REG6REG2,进入选手乙可接球区域: 当球移至 REG6 时选手乙及时击打相应开关 SW6,则进入状态 movetoleft,并调整球运行速度为快。若提前击打或未及时关闭开关,则击球失败并且对方得一分,进入状态 start。REG5 条件下类似。 当球移至 REG4 时选手乙及时击打开关 SW4,则进入状态 movetoleft,并调整球运行速度为中。若提前击打或未及时关闭开关,则击球失败并且对方得一分,进入状态 start。REG4,REG3 条件下类似。(5)进入状态 movetoleft,灯左移,并判断是否有无关按键按下(SW2SW5) ,若无则继续右移,反之返回状态 start 并且对方得一分。当球移至 REG17REG13,进入选手甲可接球区域: 当球移至 REG13 时选手乙及时击打相应开关 SW6,则进入状态 movetoright,并调整球运行速度为快。若提前击打或未及时关闭开关,则击球失败并且对方得一分,进入状态 start。REG14 条件下类似。 当球移至 REG15 时选手乙及时击打开关 SW4,则进入状态 movetoright,并调整球运行速度为中。若提前击打或未及时关闭开关,则

温馨提示

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

评论

0/150

提交评论