最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx

上传人:b****6 文档编号:16224203 上传时间:2022-11-21 格式:DOCX 页数:30 大小:2.07MB
下载 相关 举报
最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx_第1页
第1页 / 共30页
最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx_第2页
第2页 / 共30页
最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx_第3页
第3页 / 共30页
最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx_第4页
第4页 / 共30页
最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx

《最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。

最新基于VHDL课程设计乒乓球游戏Word文档下载推荐.docx

AlteraQuartusII作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

AlteraQuartusII(3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。

Quartus 

IIdesign是最高级和复杂的,用于system-on-a-programmable-chip(SOPC)的设计环境。

QuartusIIdesign提供完善的timingclosure和LogicLock?

基于块的设计流程。

QuartusIIdesign是唯逐一个包括以timingclosure和基于块的设计流为基本特征的programmablelogicdevice(PLD)的软件。

QuartusII设计软件改进了性能、提升了功能性、解决了潜伏的设计延迟等,在产业领域率先提供FPGA与mask-programmeddevices开发的同一工作流程。

1.2课题主要内容

随着可编程逻辑电路和EDA技术的发展,在逻辑电路设计和嵌入式系统设计方面,以CPLD/FPGA为代表的可编程逻辑器件已经逐步代替了传统的标准逻辑器件;

本次论文的乒乓球游戏所有的程序可以集成在一个FPGA开发芯片上面,不用在用其他功能的分立逻辑元件,达到集成度高、响应快、功耗低的特点。

本次论文主要是基于FPGA的乒乓球游戏的设计,模拟乒乓球比赛的基本过程和规则,自动裁判和记分,比局为7局,每局11分。

而本次论文采用模块化设计,主要分为两大模块:

时钟分频模块、状态机控制模块。

第二部分系统设计

2.1整体设计图

图1乒乓球游戏程序BDF图

2.2设计思路

1.控制模块状态图

图2乒乓球游戏程序控制模块状态图

2.总体思路

SW0开关(EN)控制功能使能与比赛清零。

SW0关闭(EN=0),显示学号后六位,打开时允许运行,比分比局清零。

利用状态机,设初始状态处于start状态,key3为复位键,按下key3可以回到start状态。

通过各种请求信号实现状态的相互转换,进而实现发球和乒乓球左右移动、击球的相互转换,并在球未击中、提前击中、发球失败时显示相应比分、比局情况。

通过设计control的反馈控制频率方式,利用不同键击球的快慢控制球运行的速度。

并在整个游戏结束时有一个end标记与比分比局切换显示。

2.3具体功能对应等

1.乒乓球控制模块

控制乒乓球的运行状态的转换,比分、比局的显示。

反馈信号信号的设置和输出,为分频模块提供指令信号,控制球运行的速度。

图3乒乓球运行控制模块BDF

2.时钟分频模块

为状态机产生3种不同的时钟信号。

图4时钟分频模块BDF

第三部分模块设计

3.1控制模块

3.1.1引脚功能

表1控制模块的引脚功能表

定义类型

外设

引脚

功能

instd_logic

EN

SW0

关闭显示学号后6位并对比分清零,打开则开始游戏

CLK

分频模块送入3种不同频率的速度

RST

KEY3

按一次重新开始新的一球

HIT[17..13]

SW17~SW13

选手甲接发球开关

HIT[5..2]

SW5~SW2

选手乙接发球开关

HIT[12..6]

SW12~SW6

禁止触球区

out

stdlogic

HEX7

选手甲获胜局数

HEX6

选手乙获胜局数

HEX5

显示无意义

HEX4

HEX3

选手甲获胜比分

HEX2

HEX1

选手乙获胜比分

HEX0

CONTROL[1..0]

输出反馈给分频模块

LIGHT[17..2]

LEDR17~LEDR2

乒乓球位置显示

3.1.2核心代码及解释

模块主要分状态转换,状态译码,LED灯的译码,和辅助变量temp,辅助判断信号control的计数进程。

利用temp判断是否分出胜负即游戏是否结束,结束之后显示闪烁辅助标志End并且清零比分。

利用control判断接球快慢,反馈到分频器,分频器根据接球快慢控制球的运行速度,共快中慢三种速度,分别为50Hz,10Hz,5.556Hz。

为方便检查结果,SW1直接控制速度开关,共快慢两种速度,分别为50Hz,5.556Hz。

1.中间变量的初始化:

SIGNALST,NST:

STATE:

=start;

SIGNALreg:

STD_LOGIC_VECTOR(17DOWNTO2);

--灯的内部变量

SIGNALBIFEN1,BIFEN2:

integerrange0to11;

--选手甲乙的比分记录变量

SIGNALBIJUONE,BIJUTWO:

integerrange0to4;

--选手甲乙的比局记录变量

SIGNALTEMP:

integerrange0to1;

--比局数的内部计数变量

SIGNALBIJU1,BIJU2:

STD_LOGIC_VECTOR(6DOWNTO0);

--选手甲乙的比局译码输出变量

SIGNALBIFENOUT11,BIFENOUT12,BIFENOUT21,BIFENOUT22:

--选手甲乙的比分译码输出变量

SIGNALREG_1:

--数码管的内部变量

SIGNALREG_5:

SIGNALREG_3:

SIGNALREG_8:

SIGNALREG_4:

SIGNALREG_2:

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,灯右移,并判断是否有无关按键按下(SW17~SW14),若无则继续右移,反之返回状态start并且对方得一分。

当球移至REG6~REG2,进入选手乙可接球区域:

1当球移至REG6时选手乙及时击打相应开关SW6,则进入状态movetoleft,并调整球运行速度为快。

若提前击打或未及时关闭开关,则击球失败并且对方得一分,进入状态start。

REG5条件下类似。

2当球移至REG4时选手乙及时击打开关SW4,则进入状态movetoleft,并调整球运行速度为中。

REG4,REG3条件下类似。

(5)进入状态movetoleft,灯左移,并判断是否有无关按键按下(SW2~SW5),若无则继续右移,反之返回状态start并且对方得一分。

当球移至REG17~REG13,进入选手甲可接球区域:

1当球移至REG13时选手乙及时击打相应开关SW6,则进入状态movetoright,并调整球运行速度为快。

REG14条件下类似。

2当球移至REG15时选手乙及时击打开关SW4,则进入状态movetoright,并调整球运行速度为中。

REG16,REG17条件下类似。

附movetoright代码:

WHENmovetoright=>

REG<

='

0'

&

REG(17DOWNTO3);

--右移状态

CASEREGIS

WHEN"

1000000000000000"

=>

NST<

=movetoright;

0100000000000000"

IFHIT="

0000000000000000"

THEN--开关及时关上

NST<

ELSE

BIFEN2<

=BIFEN2+1;

--若未及时关上,对方加分

ENDIF;

0010000000000000"

NST<

0001000000000000"

IFHIT="

THEN

NST<

ELSE

BIFEN2<

ENDIF;

0000100000000000"

0000010000000000"

0000001000000000"

0000000100000000"

0000000010000000"

0000000001000000"

0000000000100000"

0000000000010000"

THENCONTROL<

="

01"

;

=movetoleft;

ELSIFHIT(5)='

1'

THEN

BIFEN1<

=BIFEN1+1;

0000000000001000"

IFHIT(4)='

ELSIFHIT="

WHEN"

0000000000000100"

IFHIT(3)='

BIFEN1<

NST<

ELSIFHIT="

10"

0000000000000010"

IFHIT

(2)='

ENDIF;

0000000000000001"

IFHIT="

ELSEBIFEN1<

ENDIF;

WHENOTHERS=>

ENDCASE;

3.主控时序进程:

控制游戏使能及状态转换,具有异步清零功能。

附代码:

PROCESS(EN,RST,CLK)

BEGIN

IFEN='

THEN

IFRST='

THENST<

ELSIFCLK'

EVENTandCLK='

=NST;

ENDIF;

ENDPROCESS;

4.译码进程:

EN=0时显示学号;

EN=1时将选手甲、乙的比分及比局变量译码转为七段数码管显示。

并且当TEMP=0时,在数码管上显示游戏结束标志End。

代码见附录。

3.1.3RTL图

图5控制模块RTL图

3.2分频模块

3.2.1引脚功能

表2分频模块引脚功能表

FD

 

内部50MHz时钟

总使能开关

SW1

频率直接选择信号

CONTROL

速度控制频率选择信号

outstd_logic

CLKOUT

提供频率给GAME

3.2.2核心代码及解释

1.核心代码

PROCESS(CLK,EN)

VARIABLEtemp1:

integerrange999999downto0:

=0;

--50Hz

VARIABLEtemp2:

integerrange4999999downto0:

--10Hz

VARIABLEtemp3:

integerrange8999999downto0:

--5.556Hz

IFEN='

ifCLK'

EVENTANDCLK='

IFtemp1=999999THEN

temp1:

Q1<

=NOTQ1;

ELSE

=temp1+1;

ENDif;

IFtemp2=4999999THEN

temp2:

Q2<

=NOTQ2;

=temp2+1;

IFtemp3=8999999THEN

temp3:

Q3<

=NOTQ3;

=temp3+1;

endif;

ELSE

temp1:

Q1<

='

temp2:

Q2<

temp3:

Q3<

CASECONTROLIS

WHEN"

00"

IFSW1='

CLKOUT<

=Q1;

ELSIFSW1='

=Q3;

CLKOUT<

=Q2;

WHENOTHERS=>

ENDCASE;

2.解释

该模块将内部时钟的50MHz信号,变为50Hz,10Hz,5.556Hz。

内部变量分别为Q1、Q2、Q3,将根据GAME模块反馈的CONTROL选择输出到CLKOUT。

初始条件下可直接通过SW1控制Q1、Q3输出到CLKOUT。

3.2.3RTL图

图6分频模块RTL图

第四部分操作配图

1、EN=0,显示学号

图7显示学号153835、153842

2、EN=1,初始状态,甲和乙比局和比分均为0。

图8初始状态

3、EN=1,甲发球,SW17亮。

图9

4、EN=1,右移状态。

图10

5、EN=1,乙接球失败,乙发球情况。

图11

6、甲乙比局2:

1,比分2:

5情况显示如下。

图17

7、游戏结束辅助显示如下。

图12

第五部分结论

4.1遇到的问题和改进

问题1:

在比赛结束时,比分比局迅速清零,无法使比分比局按我们的意志在某时刻清零。

解决办法:

增设辅助信号,当比赛结束时,使数码管在结束标志与比局之间切换显示,最后由人为的控制使能开关清零。

问题2:

无法按照在不同键接球改变球运行的速度。

设一个反馈控制信号,将不同键接球信息反馈回分频模块里从而控制速度。

4.2工作分配比例

邢可馨:

分频模块,按键击球以及比赛记分译码代码的设计与开发(55%)

陈声琴:

速度控制处理、状态机代码的设计与开发(45%)

第六部分附录

一、分频模块代码:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.all;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYFDIS

PORT(

EN:

INSTD_LOGIC;

CLK:

INSTD_LOGIC;

CLKOUT:

OUTSTD_LOGIC;

SW1:

CONTROL:

INSTD_LOGIC_VECTOR(1DOWNTO0)

);

ENDFD;

ARCHITECTUREbehavOFFDIS

signalQ1:

STD_LOGIC;

signalQ2:

signalQ3:

BEGIN

------最快使比赛结束的速度

------接球加速后的速度

-------正常发球速度

CASECONTROLIS------使用反馈信号控制速度

=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1