基于FPGA_乒乓球比赛游戏机_的设计_图文


?现代电子技术#2009 年第 21 期总第 308 期

测试 ? 测量 ? 自动化

基于 FPGA 乒乓球比赛游戏机 的设计
曹莉凌, 刘雨青
( 上海海洋大学 工程学院 摘 上海 201306)

要: FPGA 的低成本正推动其在消费电子产 品中的应用, 为进一步挖掘其在娱乐产品应用中的巨大商机, 基于 Altera

公司 F PGA, 在 Quartus !8. 1 环境下, 运用 VHDL 语言、 采用有限状态机等设计方法设计了一款乒乓球比赛游戏机。介绍了该 游戏机系统功能模块划分及关键模块具体设计方案, 给出设计和调试中遇到的问题及解决途径, 并进行了仿真测试。仿真结果 表明, 该乒乓球游戏机工作正常, 具有发球权控制、 自动计分、 犯规提示等多种功能, 能有效模拟实际乒乓球比赛。 关键词: 乒乓球比赛游戏机; FP GA ; VH DL ; 状态机 中图分类号: T N40 文献标识 码: A 文章编号: 1004 373X( 2009) 21 131 04

Design of Table Tennis Game Player Based on FPGA
CA O L iling, LIU Yuqing
( C ollege of Engineering Science and T echno logy , Shanghai Ocean Universit y, Shanghai, 201306, China)

Abstract: L ow co st of FP GA has promo ted its applicatio ns in co nsumer electr onic pr oducts. T o fur ther gr asp its eno rmo us business o ppor tunities in entertainment pr oducts, a table t ennis g ame player has been desig ned w hich is based on Altera Cor po r atio n FPG A , using Quar tus ! 8. 1 and V H DL lang uag e, adopting some design methods such as the f inite state machine, the functio nal modules div isio n o f the g ame player and the specific desig n schemes of main mo dules ar e intr oduced, pro blems and appro priate solut ions dur ing designing and debug g ing are summaried, t he simulat ion and tests are g iven, t he r esults show that the design of such t able tennis g ame player is cor rect, it gets many functions such as contro l of right to serv e, automatic count ing and sig na l of illegality so that it can simulate the actual table tennis effectiv ely. Keywords: table tennis g ame player ; F PG A; V HDL ; stat e machine

可编程逻辑器件 F PGA 以其开发周期短、 成本低、 功耗低、 可靠性高等优势, 广泛应用于通信、 航空、 医疗 [ 1 3] [ 4] 等领域 , 近年来在消费电子领域 中的应用也日渐 增加。为进一步挖掘 F PGA 在家庭娱乐如游戏机开发 与应用中的巨大商机, 介绍 了一款以 Alt era 公司 FP GA 芯片为控制核心, 附加少量外围电路组成的乒乓球 比赛游戏机 [ 5] 。整个系统设计模块划分清晰: 包括裁判 端、 选手端、 控制端、 显示端及模拟乒乓球台; 功能齐全: 包括发球权控制、 犯规提示、 局数比分显示等, 模拟实际 乒乓球比赛相似程度高。采用了 VH DL[ 6, 7] 语言编程 实现, 在 Quar tus !8. 1[ 8, 9] 集成环境下 进行了模拟仿 真, 结果表明在设定的比赛规则下, 游戏机运行正常, 通 过进一步优化可将其商品化, 推入市场。 1 系统组成 乒乓球比赛游戏机的组成如图 1 所示。比赛规则 约定: 五局三胜; 11 分一局; 裁判发出比赛开始信号, 触 发 FP GA 内部随机数发生器模块产生首次发球权方; 比赛进行中, 选手连续两次获得发球权后, 发球权交予
收稿日期: 2009 06 10

对方, 如未获发球权方发球, 裁判端犯规音响电路鸣响; 13 个 L ED 排列成行模拟乒乓球台; 点亮 的 L ED 模拟 乒乓球, 受 FP GA 控制从左到右或从右到左移动; 比赛 选手通过按钮输入模拟击球信号, 实现 L ED 移位方向 的控制; 若发亮的 L ED 运动在球台中点至对方终点之 间时, 对方未能及时 按下击球按钮使其向相反方向 移 动, 即失去一分。

图1

基于 F PG A 乒乓球 比赛游戏机组成框图

2

功能模块设计 图 1 中, 基于 FPGA 设计的控制端为整个系统的核

心, 其内部主要由简易随机数发生器、 发球权控制器、 乒 131

自动化技术

曹莉凌等: 基于 F PGA 乒乓球比赛游戏机 的设计
mod2 en1< = sum sc1; mo d2 en2< = mo d2 en1; start1< = start; start2< = start1; end if; end pro cess; fqq en < = ( mod2 en1 xo r mo d2 en2) or ( sta rt1 xo r start2) ; mod2 en< = ( mod2 en1 x or mod2 en2) o r ( star t1 xo r start2) ; process( mod2 en) beg in if mo d2 en%event and mod2 en= %1% then cnt1< = cnt1+ 1; end if; end pro cess; cnt< = cnt1; ent ity led fqq ctl: process( r eset, cnt) beg in if r eset = %0% then led< = " 1000"; - - 复位按钮按下, 发球权数码管显示 8 %ev elsif fqq en ent and fqq en= %0% then if cnt= 1 then led< = "000"& rand; else led< = "000"& no t led( 0) ; - - fqq en 第一个下降沿显 示随机 数的值, 其他 下降 沿交换发球权 end if; end if; end pro cess;

乓球位置控制器、 甲乙方计分控制器、 犯规音响控制器等 模块组成。整个控制端采用模块化设计, 先用 VH DL 语 言编写功能模块, 然后用顶层原理图将各功能模块连接 起来。设计的难点在于协调各模块工作, 严格遵守各信 号间时序关系。本系统采用 1 kH z 系统时钟。 2. 1 简易随机数发生器 比赛首次发球权由随机数发生器产生的数据决定, 其随机性要求不严, 因此, 采用非常简单的模式产生, 即 一旦 F PGA 上电, 系 统时 钟 百分 频 产生 一方 波 信号 square, 当裁判闭合开始比赛开关产生 start 信号上升 沿时, 读取此时 squar e 信号值作为随机数发生器输出 randq。模块仿真如图 2 所示, 结果满足设计要求。此 模块设计时保证了 square 信号周期应远大于 start 信 号上升沿建立时间, 保证随机数据的正确读取。

图2

简易随机数发生器模块仿真

2. 2

发球权控制器 发球权控制器的控制过程为: 如果按下复位按钮,

发球权数码管显示 8, 否则, 开始比赛开关闭合时, 显示 随机数发生器的值( 0 或 1, 0 代表甲方、 代表乙 方) 。 1 而在比赛中, 为遵守发球权交换规则, 设计甲乙双方计 分器总和信号 sum sc 是不为 0 的偶数时( 即计分总和 最低位 sum sc0 下降沿到来时) , 发球权数码管显示由 0 变为 1 或由 1 变为 0。 此模块设计中, 发球权数码管的信号控制受多个时 钟的控制, 即开始比赛开关 st art 和计分值 sum sc0 信 号, 这在 VH DL 编程语言中无法用一个进程实现, 必须 将两个信号组合成一个时钟信号, 并统一两个时钟的触 发沿。因此最佳时钟触发方式如图 3 所示的 f qq en 信号。为满足这种时序要求, 借助计分总和次低位 sum sc1 信号 设计 ent it y sum sc mo d2, 由 于 st art 和 sum sc1 的频率都远低于系统时钟信号 clk 频率, 则可 借助 clk 高频信号捕捉其边沿产生新的时钟信号 f qq en, 并产生其计数值, 仿真波形如图 4( a) 所示。为保证 发球权数码管显示正确, 设计 ent it y led f qq ct l 在 fqq en 下降沿时, 根据其计数值产生相应的数码管输 出信号 led f qq, 仿真波形如图 4( b) 所示。 发球权控制器的 VH DL 核心程序如下:
entity sum sc mo d2: pr ocess( clk) beg in if clk%event and clk= %1% then 图 4 发球权控制器模块仿真 图 3 发球权显示控制器控制时钟

2. 3

乒乓球位置控制、 甲乙计分、 犯规音响控制 乒乓球位置控制电路为 FP GA 控制端的核心, 依
[ 10]

据比赛规则, 采用了 M ealy 型状态机 来实现, 大大降 低了设计难度。状态机共定义了 7 个状态, 各状态定义
- - 系统时钟

如表 1 所示, 状态转换如图 5 所示, 转换条件如表 2 所

132

?现代电子技术#2009 年第 21 期总第 308 期 示, 具体程序如下。
表1 状态 s0 s1 s2 s3 s4 s5 s6 Mealy 型状态机状态定义 定义 发球权为 0 时, 乒乓球位置为最左端; 发球权 为 1 时, 乒乓 球位置为最右端 如果甲击球, 乒乓球右移; 如果乙击球, 犯规音响电路鸣响 判断乒乓球进入乙方台面后, 乙是 否击球; 判断乒 乓球是 否仍处于甲方台面及中点; 否则, 甲方得分 乒乓球右移 如果乙击球, 乒乓球左移; 如果甲击球, 犯规音响电路鸣响 判断乒乓球进入甲方台面后, 甲是 否击球; 判断乒 乓球是 否仍处于乙方台面及中点; 否则, 乙方得分 乒乓球左移 表2 源状态 目的状态 s0 s0 s1 s1 s1 s2 s1 s4 s0 s1 s2 s0 状态转换条件 转换条件 发球权归甲方: ( ! led 发球权归乙方: ( led 乙方击球: ( ! f q 等待甲方击球: ( fq 甲方击球: ( ! fq f qq) f qq) b)

测试 ? 测量 ? 自动化
port( reset: in std log ic; led fqq, fq a, fq b, clk: in std log ic ; - - fq a, fp b 选手击球信号, clk: 1Hz 信号 led ppq: out st d lo gic vector ( 12 dow nto 0) ; - - 模拟乒乓球台 cnta, cntb: inout integer range 0 to 11; - - 甲乙双方计分输出 speaker: out std lo g ic) ; end position; architecture pst st of po sition is ty pe states is ( s0, s1, s2, s3, s4, s5, s6) ; sig nal state: states; sig nal ppq: std lo gic vecto r( 12 dow nto 0) ; sig nal ca, cb: integer range 0 to 11; beg in process( clk) beg in if r eset= %0% then state< = s0; elsif ( clk%event and clk= %1%) then case state is w hen s0 = > speaker< = %0%; if cnta= 11 or cntb= 11 then ca< = 0; cb< = 0; end if; - - 任一方 先得 11 分, 一局结 束, 计分清零 if led fqq= %0% then ppq< = " 1000000000000"; state< = s1; end if; if led fqq= %1% then ppq< = " 0000000000001"; state< = s4; end if; - - 依据发球权数码管显示判断状态转换 when s1= > if fq a= %0% then ppq< = %0 ppq( 12 do wnto 1) ; %& state< = s2; end if; - - 若甲击球 , 乒乓球右移 if fq b= %0 then speaker< = %1%; % state< = s0; end if; - - 若乙击球, 犯规音响电路鸣响 when s2= > if ( ppq( 5) = %1% o r ppq( 4) = % 1 or ppq( 3) = % 1 or ppq % % ( 2) = %1% or ppq( 1) = %1% o r ppq( 0) = %1%) and fq b= % 0 then % state< = s6; - - 若右移到乙方台面, 乙方接球, 进入 s5 状态 elsif( ( ppq( 5) = %1% o r ppq( 4) = %1% or ppq( 3) = %1 o r ppq % ( 2) = %1% or ppq( 1) = % 1%) and fq b = %1%) or ppq( 12) = %1% o r ppq( 11) = %1% or ppq( 10) = %1% or ppq( 9) = %1% o r ppq( 8) = %1% o r ppq( 7) = %1 o r ppq( 6) = %1% then state< = s3; % - - 若右移还未过中点, 进入 s3 状态 else ca< = ca+ 1; state< = s0; - - 若右移到最右位置乙方未接 球, 甲方得分 end if; when s3= > ppq< = %0 ppq( 12 do wnto 1) ; %& state< = s2; - - 控制乒乓球右移 when s4= > % if fq b= %0 then ppq< = ppq( 11dow nto 0) &%0%; state< = s5; end if; - - 若乙击球 , 乒乓球左移 if fq a= %0% then speaker< = %1%; state< = s0; end if; - - 若甲击球, 犯规音响电路鸣响 when s5= > if ( ppq( 12) = % 1 or ppq( 11) = % 1 or ppq( 10) = % 1 o r % % % ppq( 9) = %1% o r ppq( 8) = %1 or ppq( 7) = %1%) and fq a= %0 then % % state< = s3; - - 若左移到对方台面, 对方接球, 进入 s2 状态 elsif ( ( ppq( 11) = %1 o r ppq( 10) = %1 o r ppq( 9) = %1% o r % % ppq( 8) = %1 o r ppq( 7) = %1% ) and fq a = %1 o r ppq( 6) = % 1 % %) % or ppq( 5) = %1 or ppq( 4) = %1% o r ppq( 3) = %1 or ppq( 2) = %1% o r % % ppq( 1) = %1 o r ppq( 0) = %1% then state< = s6; % - - 若左移还未过中点, 进入 s6 状态 else cb< = cb+ 1; state< = s0; - - 若左移到最左位置甲方未接 球, 乙方得分 end if; when s6= > ppq< = ppq( 11 do wnto 0) &%0 %;

b) . ( f q a) a) . ( f q b)

球至最右乙未击球: ppq( 0) = %1% and f q b= %1 % 球仍在甲方台面 及中点 位置或 进入 乙方 台面但 乙方尚未击球: ( ppq( 5 ) = %1% or ppq ( 4) = %1 or % ppq( 3) = %1 or ppq( 2) = %1 or ppq( 1) = %1 and % % %) f q b= %1 or ppq( 12) = %1% or ppq( 11) = %1 or %) % ppq( 10) = %1 or ppq( 9 ) = %1 or ppq( 8) = %1 or % % % ppq( 7) = %1 or ppq( 6) = %1 % % 球移至乙方台面乙击球: ( ppq( 5) = %1% or ppq( 4) = %1 or ppq( 3) = %1% or ppq( 2) = %1 or pp q( 1) % % = %1 or ppq( 0) = %1 and fq b= %0% % %) 乒乓球右移后无条件转移 甲方击球: ( ! f q a) 等待乙方击球( f q b) . ( f q a) 乙方击球( ! f q b) . ( f q a) 球至最左甲未击球: ppq( 12) = %1% and f q a= %1 % 球移至甲方 台面 甲击 球: ( ppq ( 12) = %1% or pp q ( 11) = %1 or ppq( 10) = %1 or ppq( 9) = %1% or pp q % % % ( 8) = %1 or ppq( 7) = %1 and fq a= %0 % %) 球仍在乙方台面 及中点 位置或 进入 甲方 台面但 甲方尚未击球: ( ppq( 11) = %1 or ppq( 10) = %1 % % or ppq( 9) = %1% or ppq( 8) = %1 or ppq( 7) = %1 ) % % and f q a= %1 or ppq( 6) = %1% or ppq ( 5) = %1 %) % or ppq( 4) = %1% or ppq( 3) = %1 or ppq( 2) = %1 or % % ppq( 1) = %1 or ppq( 0) = %1 % % 乒乓球左移后无条件转移

s2

s3

s2 s3 s4 s4 s4 s5 s5

s6 s2 s0 s4 s5 s0 s3

s5

s6

s6

s5

图5

乒乓球位置控制电路状态转换图

libr ary ieee; use ieee. std log ic 1164. all; entity posit ion is

133

自动化技术
st ate< = s5; end case; end if; end process; led ppq< = ppq; cnt a< = ca; cntb< = cb; end pst st;

曹莉凌等: 基于 F PGA 乒乓球比赛游戏机 的设计
- - 控制乒乓球左移

模块的设计就不再此赘述, 最终顶层原理图设计如图 6 所示, 仿真波形如图 7 所示, 分析波形可知, 图中开始比 赛信号产生后, 首次发球权方为乙方, 甲方发球造成犯 规音响电路鸣响, 即 speaker 信号为高电平, 然后乙方 发球, 乒乓球依次移位, 甲方接球成功后乙方未接球成 功, 甲方得分, cnt a 信号为 0110000 , 注意, 此处输 出 为驱动数码管输出信号, 代表数字 1 。通过仿真可知, 该系统设计满足游戏机比赛规则要求。

3 顶层模块仿真测试 由于篇幅限制, 本系统中的分频器、 译码器等常用

图 6 基于 FP GA 乒乓球比赛游戏机 顶层原理图









[ 1] 李果. 基于 F PG A 的扩频通信芯片设计及应用[ D] . 武汉: 武 汉理工大学, 2008. [ 2] 张帆. 基于 F PG A 的航电总线适配器设计[ D] . 南京: 南京理 工大学, 2006. [ 3] 高士峰. 医疗机器人主操作手接口研究与 开发[ D] . 天津: 天 津大学, 2005. [ 4] Latt ice Semico nduct or Co rpor ation. 利用低 成本 F PG A 设计 下一代 游戏 控 制 台[ EB/ O L ] . ht tp: / / ww w . eewo rld. co m. cn/ FPG A / 2009/ 0424/ article 574. html, 2009. 图7 顶层文件仿真波形 [ 5] 彭介华. 电 子技术 课程 设计指 导[ M ] . 北京: 高等 教育 出版 社, 1997. [ 6] 潘松, 黄继业. EDA 技术与 VH DL [ M ] . 北京: 清华大学出版 社, 2007. [ 7] [ 巴西] Pedroni V A . V HD L 数字 电路设 计教 程[ M ] . 乔庐 峰, 译. 北京: 电子工业出版社, 2005. [ 8] A lter a Inter nat ional L imited. Q uartus II Handbo ok v9. 0 [ EB/ O L ] . http: / / w ww . altera. com. cn/ liter ature/ lit qts. jsp, 2009. [ 9] 周立功. EDA 实验 与实践[ M ] . 北京: 北京 航空航 天大 学出 版社, 2007. [ 10] [ 美] 克里兹. 高级 FPG A 设计结构、 实现和优化[ M ] . 孟宪 元, 译. 北京: 机械工业出版社, 2009. 曹莉凌 刘雨青 女, 1982 年出生 , 助理实验师, 硕士。研究方向为 EDA 技术的应用。 女, 1976 年出生 , 讲师, 博 士。研究 方向为自动化控制。

4 结



采用 VH DL 语 言编 程, 基 于 F PGA 成功设 计了 一款乒乓球比赛游戏机, 通过仿真验证可知, 结果满足 设计需求, 系统具有发球权控制、 自动计分、 犯规提示等 多种功能, 能有效模拟实际乒乓球比赛。该系统进一步 改进思路为: 改用人体感应传感器来采集击球信号, 采 用 FP GA 产生视频信号传送到电视机或监视器, 更直 观地展示乒乓球运动轨迹, 从而真正实现人机互动, 优 化虚拟效果。
作者简介

134


相关文档

基于FPGA乒乓球比赛游戏机的设计
基于FPGA乒乓球比赛游戏机的设计
基于FPGA“乒乓球比赛游戏机”的设计
基于FPGA“乒乓球比赛游戏机”的设计
电子赛设计论文乒乓球比赛游戏机
电子技术乒乓球比赛游戏机课程设计
电子技术乒乓球比赛游戏机课程设计
乒乓球比赛游戏机设计成果说明书
基于FPGA乒乓球游戏机Verilog设计
基于FPGA的乒乓球游戏机控制器设计
电脑版