基于FPGA的乒乓球游戏机_图文


2011.5 年大生 江西省 2011.5 月年大生 电子设计自选赛 参 赛 作 品
参赛题目: 参赛题目:乒乓球游戏机 参赛者:肖新清、侯飞、 参赛者:肖新清、侯飞、官仕富

二〇一一年五月





乒乓球游戏机 .......................................................................................................... - 1 摘要 ..................................................................................................................................... - 1 关键字 ................................................................................................................................. - 1 -

一 PWM 波形形成 ............................................................................................... - 2 1. FPGA 简介 ...................................................................................................................... - 2 2. 脉宽调制(PWM)原理及本赛题要求的实现 .......................................................... - 2 脉宽调制( ) 3. PWM 形成方法: .......................................................................................................... - 3 形成方法: 4. 方案选择 方案选择......................................................................................................................... - 3 -

二、滤波电路 .......................................................................................................... - 3 1. 无源滤波器简介............................................................................................................. - 3 2. 方案选择 方案选择......................................................................................................................... - 3 3. 作用及效果 作用及效果..................................................................................................................... - 4 4. 电路原理图及分析......................................................................................................... - 4 -

三 LM324 运放电路及分析 ................................................................................... - 4 1. LM324 简介 .................................................................................................................... - 4 2. 原理分析 原理分析......................................................................................................................... - 5 -

四 程序设计 ............................................................................................................ - 5 1. 程序设计思路 程序设计思路................................................................................................................. - 5 2. 程序流程图..................................................................................................................... - 6 程序流程图

五 调试方法与测试结果 ...................................................................................... - 11 1. 调试设备与工具........................................................................................................... - 11 2. 调试方法 调试方法....................................................................................................................... - 11 3. 输出波形 输出波形....................................................................................................................... - 11 -

六 结论 .................................................................................................................. - 12 附录 ........................................................................................................................ - 12 1. 部分程序清单............................................................................................................ - 12 -

参考文献 ................................................................................................................ - 14 -

-1-

乒乓球游戏机

摘要
本设计以 FPGA 为中心,实现在示波器上模拟乒乓球游戏。在 FPGA 平台 控制下,编程实现两路脉宽调制(PWM)波形, 采用 RC 低通滤波分别得到三 角波和近似抛物线波,经放大后分别输入至示波器两个输入通道,示波器工作在 X-Y 模式。三角波的 PWM 共分为 256 个准周期,占空比线性增长,实现三角波 上升期间光点 (乒乓球) 从左到右运动、 下降期间则从右向左运动, 频率为 50Hz; 近似抛物线波的 PWM 共分为 128 个准周期,占空比按近似抛物线规律增减,频 率为 50Hz。在两路波形的共同驱动下,光点可实现从左到右、从右到左近似抛 物线轨迹运动,以模拟乒乓球游戏。两种波形的放大倍数皆为 3~5 倍。

关键字 FPGA、PWM、RC 滤波、运放

-1-

一 PWM 波形形成
1. FPGA 简介 FPGA 是 Field Programmable Gate Array 的缩写,即现场可编程门阵列,它 是在 PAL、GAL、EPLD 等可编程器件的基础上进一步发展的产物。它是作为专 用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的 不足,又克服了原有可编程器件门电路数有限的缺点。本设计主要采用其内部宏 模块 LPM_ROM1,利用它的特性通过查表产生脉宽调制波。 2. 脉宽调制(PWM)原理及本赛题要求的实现 脉宽调制( ) 原理及本赛题要求的实现 及本赛题要求 脉宽调制通常用于电气或电子系统中的驱动电压、功率控制,其基本原理 是改变驱动信号(方波或矩形波)的占空比或改变频率(分别称为调宽或调频) , 经过低通滤波后使其平均值变化,从而改变电压或功率。 本课题使用 FPGA 平台,通过软件编程实现输出脉宽调制波。与通常 PWM 设计的不同之处在于:要求两路 PWM 波输入以 X-Y 模式工作的通用示波器, 控制模拟乒乓球的光点以抛物线轨迹在示波管左右之间运动。显然示波器的 X、 Y 轴驱动应该采用不同的脉宽调制方法。 要实现赛题要求,X 轴方向的控制电压应该是三角波、Y 轴方向的控制电 压应该是抛物波。 采用 PWM 的调宽方法, 轴和 Y 轴方向的驱动均以矩形波为 X 基础,但是 X、Y 方向调宽方式不同。X 方向输出经滤波后应实现三角波,故其 占空比首先应线性增长,实现光点(乒乓球)从左到右运动;然后线性下降,实 现光点(乒乓球)从右到左运动。Y 方向输出经滤波后应实现抛物线波,故其占 空比首先应近似抛物线形增长,实现光点从下到上运动到达中点(最高点) ;然 后近似抛物线形下降,实现光点从上到下运动。近似抛物线可以用正弦波的正半 周模拟实现。在两路波形的共同驱动下,光点可实现从左到右、从右到左近似抛 物线轨迹运动,模拟乒乓球游戏。 PWM 的占空比形成原理:将波形分为 256 段,即 256 个准周期。每个准周 期又划分为 256 个区间,通过控制每周期出现高电平区间的个数,实现不同驱动 波形要求的占空比。 综上所述,本赛题 X、Y 驱动电压的实现,实际上是采用了一种简易数模 一种简易数模 一种简易 转换。 (D/A)转换的方法,即不采用 D/A 芯片实现了近似 D/A 转换。 )转换的方法,

-2-

3. PWM 形成方法: 形成方法: 方案一:利用 Matlab 软件工具,波形 256 等分后,把 Matlab 软件所得的 数据存入 ROM 中。调用 ROM 中的数据,即可实现每个步长的占空比不同。 方案二:设置标志位及设置循环加、减来实现不同区间的高电平的个数, 得到不同的占空比。 方案对比:方案一数据固定,可使得波形稳定,需要芯片支持存储宏模块; 方案二循环使得端口资源占用大,但基本芯片都具备此功能。 4. 方案选择 三角波是线性增减的,方案一或者方案二,都可以依次增大占空比,得到 占空比逐渐增、减的 PWM 波形。本设计采用的为方案一。 近似抛物波的形成方法:抛物波为非线性的,方案一实现比较麻烦。采用 方案二,制作相应的表格即可实现。本设计近似抛物波的表格存入 ROM 的数据 一共有 256 个,每个的字长为 8 位。

二、滤波电路
1. 无源滤波器简介 无源滤波器简介 无源滤波器是仅由无源元件(R、L 和 C)组成的滤波器,它是利用电容和电 感元件的电抗随频率的变化而变化的原理构成的。这类滤波器的优点是:电路比 较简单,不需要直流电源供电,可靠性高;缺点是:通带内的信号有能量损耗, 负载效应比较明显,使用电感元件时容易引起电磁感应,当电感 L 较大时滤波 器的体积和重量都比较大,在低频域不适用。 2. 方案选择 方案一:采用 RLC 滤波 方案二:采用 LC 滤波 方案三:RC 滤波 方案四:二阶滤波 RC 滤波器电路简单,抗干扰性强,有较好的低频性能,并且选用标准的阻 容元件易得,有助于参数选择,故本次设计采用 RC 滤波电路。

-3-

3. 作用及效果 本设计 RC 滤波电路实现提取脉宽调制的均值电压,由 FPGA 得到的 PWM 的区间为 256 个,经过 RC 低通滤波后得到的电压均值波动较小,可以得到相应 的近似抛物线波和三角波。 4. 电路原理图及分析 图 1 为低通滤波电路。 原理:通过电容充放电的作用实现 RC 低通滤波。 参数选择:设波形周期为 T,电路时间常数为 t,则应该满足公式: T>=4t 即 T>=4RC 本设计波形周期为两秒,电容取值为 10?F,电位器为 0~50KΩ。
R1 input C1 output

GND
图 1 RC 低通滤波电路

运放电路及分析 三 LM324 运放电路及分析
1. LM324 简介 LM324 系列器件为价格便宜的带有真差动输入的四运算放大器。与单电源 应用场合的标准运算放大器相比,它们有一些显著优点。该四放大器可以工作在 低到 3.0 伏或者高到 32 伏的电源下,静态电流为 MC1741 的静态电流的五分之 一。共模输入范围包括负电源,因而消除了在许多应用场合中采用外部偏置元件 的限制。其中“+”、“ -”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo” 为输出端。其管脚图如图 2 所示。.

-4-

LM 324 1 2 3 4 5 6 7 Vout1 Vin1Vin1+ VCC Vin2Vin2+ Vout2 Vout4 Vin4Vin4+ VEE Vin+ Vin3Vout3 14 13 12 11 10 9 8

图 2 LM324 管脚图

2. 原理分析
LM324 连接为同向比例运算放大器,原理如图 3 所示。

Rp1 +12v 5K R1 GND
输输1

1K5 6 5

B

U1B LM324AD 7

4 11 Rp2 1K

VO
三三三

-12v

+12v R2 GND
输输2

1K5 2 3

A

U1A LM324AD 1

图 3 运算放大器 LM324 电路设计

放大倍数 AV=(1+Rp1/R1)*Vo,将 FPGA 输出的脉宽调制模拟三角波和近似抛 物波输入到运放 LM324,然后接入示波器两个输入通道,通过改变 Rp 可实现相 应 X、Y 轴驱动信号的调节,实现光点运动轨迹的调整。

4 11 -12v

VO
正正三

四 程序设计
1. 程序设计思路 波形形成:首先进行分频,设置两组计数变量 count,i,n;count2,q1,t

-5-

分别用于设计三角波和正弦波。 三角波:在每一个准周期后变量 count 清零,此时有以下两种情况: (1)当 n 小于 255 时, i,,n 加一,高电平的个数在每一准周期上依次增加, 这样实现了 PWM 波形的占空比线性增加; (2)当 n 不小于 255 时,n 清零,同时 i 的值减一,高电平的个数在每一准 周期上依次增加,PWM 波形的占空比线性减小。 通过变量的组合实现高电平的个数的增加、减少,得到所需的 PWM 波形。 近似抛物波的方法相似,只是通过查表的方式得到。 左右击球:设置标志位,当小球分别处于左右端时,标志位置位。此时判断 是否有按键按下,若有相应的键按下,则继续输出波形;若无键按下,则等待 1 秒左右,若还是无键按下,则指示灯亮并记录相应的分数。 成败机制:设置一标志位,初值为 1,当左右击球时,判断按键是否按下。 若无,则将标志位置零,指示灯亮(指示灯低电平亮) ;若有按键按下,则不采 取操作。 积分机制:采用 4 位共阳数码管动态显示,设计时需要注意扫描频率。按乒 乓球比赛规则实行 11 分制,当一方得分为 11 分时,两方的得分清零。设计一显 示模块,在总体设计时直接调用模块,这样可使程序简洁。

2. 程序流程图 主程序流程图见图 4。 图 5 为三角波 PWM 流程图。 图 6 为抛物波(正弦波的正半周)PWM 流程图。 图 7 为数码管记分机制流程图。

-6-

图 4 主程序流程图

-7-

count 加一

N count==256 count =i Y Y pwmout输出 为低电平

pwmout输 高电平 count置零

N

n>=256 Y

i加一 n加一

i的值减一 N

i是否为零

Y

N

n置零 count置零 pwmout置零

结束
图 5 三角波 PWM 流程图
-8-

开始

count2加一

count2=256

count2=t1 Y pwmout2输 出为低电平

Y

count2置零 pwmou输出为高电 q1加一 N

q1==255

Y

N

q1置零

结束
图 6 抛物波 PWM 流程图

-9-

图 7 数码管记分机制流程图

- 10 -

调试方法与测试 方法与测试结果 五 调试方法与测试结果
1. 调试设备与工具 ①通用双踪示波器:LM4320D ②双踪数字示波器:Tektronix TDS1001B-SC ③直流稳压电源:XK-1715 ④信号发生器:LM1634 ⑤万用表:DT9205A ⑥其他常用焊接工具。 2. 调试方法 调试方法 首先将 PWM 波形产生程序进行反复调试、编译、仿真,确认符合设计要 求、用信号发生器、双踪示波器调试 RC 低通滤波器和运算放大电路。上述三个 部分调试完毕之后,将 FPGA 开发板、低通滤波器、运算放大器 LM324 正确连 接,接通系统电源。 用示波器观察低通滤波器输出,调节 R、C 大小以基本符合 X、Y 驱动电压 波形的要求。 将示波器置于 X-Y 工作模式,调节运算放大器输出,改变其放大倍数,使 示波器光点运动轨迹符合设计要求。 3. 输出波形 图 8 和图 9 分别是三角波与近似抛物波和光点(乒乓球)运动轨迹波形。

图 8 三角波与近似抛物波
- 11 -

图 9 光点(乒乓球)运动轨迹波形

六 结论
本设计实现了赛题基本功能和部分扩展功能, 可在示波器上稳定地模拟乒乓 球的运动。本次设计的关键在于脉宽调制波的的产生和滤波电路中的参数选择。

附录
1. 部分程序清单 部分程序清单 if(count1==200) begin count1=0; count=count+1; count2=count2+1; if(count==256) begin count=0; pwmout=1; if(n>=255) begin i=i-1; if(i==0) begin n=0; count=0; pwmout=0;
- 12 -

end end else begin i=i+1; n=n+1; end end else if(count==i) begin pwmout=0; end if(count2==256) begin count2=0; pwmout2=1; q1=q1+1; if(q1==255) q1=0; end else if(count2==t1) begin pwmout2=0; end**********************

- 13 -

参考文献
[1]王金明. 数字系统设计与 Verilog HDL(第 4 版). 北京:电子工业出版社,2011 [2]童诗白,华成英. 模拟电子技术基础(第四版). 北京:高等教育出版社,2006 [3]马场清太郎. 运算放大器应用电路设计. 何希才译. 北京:科学出版社,2010 [4]潘明,许勇. 基于 FPGA 的直流脉宽调制控制. 桂林:桂林电子工业学院学报,2005 [5]潘松,黄继业. EDA 技术使用教程(第 3 版). 北京:科学出版社,2006

- 14 -


相关文档

基于FPGA乒乓球比赛游戏机的设计
基于FPGA_乒乓球比赛游戏机_的设计
基于FPGA的乒乓球游戏机控制器设计
基于FPGA的乒乓球游戏机设计
基于FPGA乒乓游戏机的设计
基于FPGA的乒乓球游戏参考设计
基于FPGA的乒乓球游戏设计
基于FPGA乒乓球游戏机Verilog设计
fpga 乒乓球游戏机
基于FPGA的乒乓球游戏机设计综述
电脑版