基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx

上传人:b****9 文档编号:26023128 上传时间:2023-06-17 格式:DOCX 页数:34 大小:460.05KB
下载 相关 举报
基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx_第1页
第1页 / 共34页
基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx_第2页
第2页 / 共34页
基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx_第3页
第3页 / 共34页
基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx_第4页
第4页 / 共34页
基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx

《基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx(34页珍藏版)》请在冰豆网上搜索。

基于FPGA的乒乓球游戏机控制器设计毕业设计论文.docx

基于FPGA的乒乓球游戏机控制器设计毕业设计论文

基于FPGA的乒乓球游戏机设计

摘要

Verilog是甚高速集成电路硬件描述语言。

目前,verilog已成为许多设计自动化工具普遍采用的标准化硬件描述语言。

verilog语言功能性强,覆盖面广,灵活性高,具有很好的实用性。

本文设计一个基于verilog的乒乓游戏机,乒乓游戏机由状态机、记分器、译码显示器与按键去抖等部分所组成。

通过对各部分编写verilog程序,然后进行编译、仿真、逻辑综合、逻辑适配,最后进行编程下载,并且通过EDA实验箱的验证,实现乒乓游戏机的基本功能。

关键词:

verilog;EDA;乒乓游戏机

Abstract

VERILOGishighspeedIChardwaredescribelanguage.VERILOGalreadybecomesthelanguageofnormalizinghardwaredescribethatalotofdesignautomationimplementadoptscommonlyatpresent.TheVERILOGlanguagefunctionisstrong.Thefacecoveringisbroad,flexibilityhighandhavetheverygoodpragmatism.OnemainbodyofthebookisdesignedwaitsforwhatpartgroupisaccomplishedowingtothatVERILOGtabletennisgamemachine,tabletennisgamemachinegototremblefromstatemachine,marker,decodingdisplayandbutton.BycompilingandcomposingVERILOGproceduretoeverypart,thencompiling,simulate,logicsynthesis,logicfitting.Carryoutprogrammingtimebeloadedwithfinally.ThenverificationandbyGW48typeEDAexperimentbox,realizetabletennisgamemachine’sfundamentalfunction.

Keywords:

VERILOG:

EDA;Tabletennisgamemachine

1绪论

1.1课题的背景和意义

随着人们的物质生活越来越好了,人们开始对娱乐生活有了新的要求,特别是进入新世纪以来各种电子产品的不断出现,更是促进了我国电子行业的发展,为此,能够推出一款新的游戏产品是非常有前景的,本设计正是考虑了当前的社会现状,想设计出一款“乒乓球”游戏机,以往可能有过这方面的设计出现过,但是那些大多数都是采用的单片机等来实现的,本设计将采用最新的FPGA技术对“乒乓球”游戏机进行实现。

日常娱乐生活中,智能化的娱乐产品非常流行。

FPGA具有功能强、可靠性高、使用方便、体积小及重量轻等优点。

国外已广泛应用于自动化控制的各个领域。

近年来,国内的FPGA技术与产品开发应用方面的发展也很快,各种电子产品已越来越多地采用FPGA控制系统且性价比高。

本文从实用的角度以Altera公司的EP2C35F484I8芯片为核心设计了一种智能“乒乓球”游戏机。

实践证明,该游戏机运行状况稳定、可靠,满足了智能化要求。

1.2国内外研究现状

随着社会的进步和工业技术的发展,在电子线路设计领域中,设计自动化工具已经逐步为设计者所接受,成为主要的设计手段。

目前,VERILOG已成为许多设计自动化工具普遍采用的标准化硬件描述语言,掌握VERILOG语言,用VERILOG语言设计电子线路,是电子线路设计者必须掌握的基本技能。

VERILOG支持数字电路的开发环境,VERILOG也支持各种设计方法:

自顶向下、自底向上或混合的方法[1]。

VERILOG语言功能性强,覆盖面大,灵活性高,具有很好的实用性[2]。

本文设计一个基于VERILOG的乒乓游戏机,乒乓游戏机是由5个发光二极管代表乒乓球台,中间的发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。

在游戏机的两侧各设置两个开关,甲乙二人按乒乓球比赛规则来操作开关。

本设计由译码显示器、记分器、状态机/球台控制器与按键去抖等部分组成。

本设计是用实验箱进行模拟乒乓机,用发光二极管代表乒乓球台,最中间的发光二极管作球网,用点亮的发光二极管按一定方向移动来表示球的运动,用按钮设置发球和接球开关。

1.3本论文的主要内容

本论文的主要内容是设计一个基于FPGA的“乒乓球”游戏机,在广泛收集相关资料的基础上,对“乒乓球”游戏机进行了深入的研究,利用现场可编程门阵列FPGA完成本次设计。

整个系统以ALtera公司的EP2C35芯片为核心,采用verilogHDL语言进行开发,配置了相应的输入、信号处理及显示电路,并进行仿真及验证。

本论文各章的内容如下:

第一章介绍了“乒乓球”游戏机设计的背景及意义,并简单的的阐述了目前国内外在这方面的发展现状。

第二章介绍了QuartusII软件以及Modelsim软件的使用和特点。

第三章介绍了对于系统的整体设计以及相关的设计任务和设计要求,并简单的分析了整个系统的设计流程和方法。

第四章主要是介绍在整个“乒乓球”游戏机系统中各个模块的工作原理及过程。

第五章主要是对系统进行原理图的设计和对整个系统的仿真。

第六章主要是对整个的设计过程和仿真的的过程做一个简单的描述。

2QuartusII与Modelsim软件简介

2.1QuartusII简介

QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

MaxplusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对MaxplusII的更新支持,QuartusII与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。

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

2.2Modelsim简介

Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。

它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。

主要特点:

•RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;

•单内核VHDL和Verilog混合仿真;

•源代码模版和助手,项目管理;

•集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;

•C和Tcl/Tk接口,C调试;

•对SystemC的直接支持,和HDL任意混合

•支持SystemVerilog的设计功能;

•对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL;

•ASICSignoff。

ModelSim分几种不同的版本:

SE、PE、LE和OEM,其中SE是最高级的版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。

SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSimXE为例,对于代码少于40000行的设计,ModelSimSE比ModelSimXE要快10倍;对于代码超过40000行的设计,ModelSimSE要比ModelSimXE快近40倍。

ModelSimSE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;MentorGraphics公司提供业界最好的技术支持与服务。

3方案选择与系统总体设计

3.1整体方案的选择

本课题将采用Altera公司的EP2C35F484I8芯片进行基于FPGA的“乒乓球”游戏机设计。

3.1.1设计任务与要求

设计一个乒乓球游戏机,模拟乒乓球比赛基本过程和规则,并能自动裁判和计分。

具体要求如下:

使用乒乓球游戏机的甲,乙双方各在不同的位置发球或击球。

乒乓球的位置和移动方向可由LED显示灯和一次点亮的方向决定,球的移动速度设为0.5s移动1位。

使用者可按乒乓球的位置发出相应的动作,提前击球或出界均判失分。

3.1.2设计的原理和方法

乒乓球游戏机是用5个发光二极管代表乒乓球台,中间发光二极管兼作乒乓球网,用点亮的发光二极管按一定的方向移动来表示球的运动。

另外设置发球开关Af,Bf以及接球开关Aj,Bj。

利用7段数码管作为记分牌。

甲乙双方按乒乓球比赛规则来操作开关。

当甲方按动发球开关af时,靠近甲方的第一个灯亮,然后按顺序向乙方移动;当球过网后,乙方可以接球,接球后灯反方向移动,双方继续比赛;如果一方提前击球或未击球,则判失分,对方加分。

重新发球后继续比赛。

本设计主要的设计方法是采用文本编辑法,利用verilogHDL语言描述乒乓球游戏机,并进行综合和仿真。

图3.1系统设计流程图

3.1.3芯片的选择

在这次设计中选用的FPGA芯片是Altera公司的Cyclone(飓风)系列的芯片,型号为:

EP2C35。

它是基于1.5V的,采用0.13um全铜SRAM工艺、TQFP封装,有5980个逻辑单元,2个锁相环,20个M4KRAM块,其中每个RAM为4kbit,可以另加一位奇偶校验位。

3.2系统总体设计

3.2.1乒乓游戏机的组成示意图

图3.2乒乓球游戏机组成示意图

本设计中的乒乓游戏机是由5个发光二极管代表乒乓球台,中间的发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。

在游戏机的两侧各设置两个开关,一个是发球开关af、bf;另一个是击球开关aj、bj。

甲乙二人按乒乓球比赛规则来操作开关。

当甲方按动发球开关af时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲向乙依次点亮,代表乒乓球的移动。

当球过网后按设计者规定的球位,乙方就可以击球。

若乙方提前击球或没有击中球,则判乙方失分,甲方的记分牌自动加一分。

然后重新发球,比赛继续进行。

比赛一直要进行到一方记分牌达到21分,该局才结束。

本设计由译码显示器、按键去抖、状态机/球台控制器和记分器等部分所组成。

3.2.2本系统的逻辑分框图

图3.2系统逻辑分框图

4系统各部分电路的详细设计

4.1七段数码管显示译码电路

图4.1译码显示电路符号

七段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA或CPLD中实现。

七段数码管分为共阴极和共阳极两种[8]。

简而言之,对共阴极来说,公共引脚要接地,想要点亮某段数码管,就在相应的引脚加上高电平;对共阴极来说刚好相反,公共引脚提高电平,想要点亮某段数码管,就在相应的引脚加上低电平[9]。

七段BCD码译码器的设计,输出信号LED7S的7位分别接如图4所示数码管的七个段,高位在左,低位在右[9]。

例如当LED7S输出为“1101101”时,数码管的7个段:

g、f、e、d、c、b、a分别接1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示“5”。

带使能信号EN的译码电路的verilog程序中,EN为高电平时,译码器正常工作;EN为低电平时,译码器输出0000000,表示数码管无显示。

用选择信号赋值语句描述,将综合成组合逻辑电路。

4.2按键去抖电路

图4.2按键电路符号

键盘的按键闭合与释放瞬间,输入的信号会有毛刺。

如果不进行消抖处理,系统会将这些毛刺误以为是用户的另一次输入,导致系统的误操作。

防抖电路有很多种,最简单、最容易理解的就是计数法。

其原理是对键值进行计数,当某一键值保持一段时间不改变时(计数器达到一定值后),才确认它为有效值;否则将其判为无效键值,重新对键值进行计算。

4.3状态机设计

4.3.1状态机的6种状态及状态转移

本状态机有6种状态,分别是WAITSTATE、ATOB、BTOA、ASCORE、BSCORE和FINALRESULT,其含义如下表所示:

状态机的6种状态及含义:

表4.1状态机6种状态表

状态

含义

WAITSTATE

等待状态,等待A或B方开球

ATOB

球从A向B方移动

BTOA

球从B向A方移动

ASCORE

A得一分

BSCORE

B得一分

FINALRESULT

比赛结束(最终判分),在此状态下需要按复位键,才能开始下一轮比赛

结合上表从下图中很清楚地看出乒乓游戏机比赛过程中球的移动情况,及加分方法,还可以初步了解到本状态机设计的基本思路:

图4.3乒乓游戏机状态转移图

4.3.2状态机/球台控制电路

状态机是种很重要的时序电路,也是本设计的核心部件。

状态机属于时序电路范畴,实现一个控制功能更为方便,并提高了控制速度。

本次设计中状态机的符号如下图所示:

图4.4状态机、球台控制电路符号

在本设计中,状态机用两个信号表示状态:

STATE表示当前状态,TABLESTATE表示下一个状态。

此状态机由两个进程构成,状态机的输入/输出引脚的作用如下表所示。

其中SCOREAL[3..0]、SCOREAH[3..0]、SCOREBL[3..0]、SCOREBH[3..0]用七段BCD码译码器显示得分情况,而SCOREA、SCOREB用二进制进行加分,由记分器反馈回来。

输入/输出引脚的作用:

表4.2输入输出引脚表

引脚

作用

CLK

所需时钟可由系统时钟分频得到。

此时时钟决定了球移动的速度,可根据实际需要调整。

RESET

复位键,比赛重新开始,记分器清0

af、bf

A和B双方的开始的开球键

aj,bj

A和B双方的击球键(可以将其与开球键合并)

CLEAR

将记分器清0(给记分器的控制信号)

INCREASEA、INCREASEB

分别为A、B双方的加分信号(给记分器的控制信号)

SCOREAL[3..0]SCOREAH[3..0]

SCOREBL[3..0]SCOREBH[3..0]

SCOREA、SCOREB

A、B双方的分数(由记分器给出)

LIGHT[4..0]

接5个发光二极管

AWIN、BWIN

分别接发光二极管,表示A或B方胜出

4.4记分器设计

图4.5计分器电路符号

记分器元件符号如上图所示,本设计中记分器比较简单,只须根据状态机给出的两个信号(INCREASEA和INCREASEB)对六个分数(SCOREAL、SCOREAH和SCOREBL、SCOREBH、SCOREA、SCOREB)进行操作。

5系统的整体综合与仿真

5.1顶层文件设计

“乒乓球”游戏机系统主要由译码电路,按键去抖电路,状态机/球台控制电路等构成,下图为系统的顶层文件设计原理图:

图5.1顶层文件设计原理图

5.2系统程序框图:

系统的程序框图如下图所示,程序清单见附录:

图5.2系统程序框图

5.3整个系统的综合与仿真

5.3.1电路符号

乒乓球游戏机的电路符号如下图所示。

输入信号:

系统时钟clk1khz(输入1KHZ的时钟信号);系统复位端rst;甲方发球af;乙方发球bf;甲方击球aj;乙方击球bj;输出信号:

5个LED显示模块shift[4…0];数码管地址选择信号scan[3…0];7段显示控制信号seg7[6..0]。

图5.3系统电路符号

5.3.2系统仿真

由于本系统的状态情况比较的多,下面就几种典型的情况进行系统的综合和仿真:

1、甲方发球后乙方提前击球,同时甲方得分:

下图为仿真的结果图,观察波形可知,球的移动方向为从左到右,乙提前击球后a_core加1,即甲方得分。

图5.4仿真结果图

2、甲方发球后,乙方在过网后击球:

此情况的功能仿真结果如下图所示,观察波形可知,乙接到球后,球的运动方向变为从右到左。

图5.5仿真结果图

3、甲方发球后,乙方没有击球:

此情况的功能仿真结果图如下图所示,观察波形可知,乙没有接球,则甲方加分。

图5.6仿真结果图

6系统的运行与仿真过程

6.1系统程序的编译

1、运行新建项目向导,新建一个项目,选择之前创建好的文件夹,用来存放该项目的文件,如图6.1所示:

 

2、该步骤主要是为以后的仿真做准备,如图6.2所示选择仿真软件为modelsim,编程语言为verilogHDL。

 

3、创建完项目之后接着再新建一个verilogHDLfile用来编辑之前设计好的程序,再编辑区输入设计好的程序之后,点击编译按钮开始编译文件,通过不断的调试修改直到编译成功为止,如图6.3所示:

 

6.2系统的仿真

1、点击进入仿真软件modelsim之后,点击如图6.4所示的按钮,找到之前准备好的文件,开始编译,观察信息区,直到编译成功为止。

 

2、在work库中找到编译成功的文件zhouyou,双击准备开始仿真,如图6.5所示:

3、如图6.6所示开始给定各个变量的初始值,以及所需的时钟信号

根据自己的需要和仿真的方便性考虑时钟的大小.

 

4、给定完时钟信号和各个变量的初始值之后,开始点击进入仿真界面,运行开始仿真,具体的步骤如图6.7所示:

 

结论

本文进行乒乓游戏机软件设计,并用EDA实验箱进行验证,目标芯片是Altera公司CycloneII系列的EP2C35F484I8,本设计由状态机/球台控制器、记分器、译码显示器、按键去抖等模块组成。

通过实验箱模拟乒乓球游戏机,用发光二极管代表乒乓球台,最中间的发光二极管作球网,用点亮的发光二极管按一定方向移动来表示球的运动,用按钮设置发球和接球开关。

最终实现乒乓机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。

本设计用了16个发光二极管当乒乓球台。

本设计可以再改进一下,把指示胜利2个发光二极管用数码管来代替,这样不仅可以完成之前的功能,而且可以显示比赛的局数。

通过几个月的努力,基本完成了毕业设计任务书所要求的内容,而且在实验箱上对大部分功能进行了仿真,取得了预期的结果,总之,通过自己的努力以及同学和老师的帮助,圆满的完成了本次设计任务。

谢辞

通过两个多月的毕业设计,我学习了怎样运用FPGA设计乒乓球游戏机系统。

非常感谢我的指导老师孙禾,在整个设计过程中一直耐心教导,认真负责,细心教诲,让我领略到如何实现一个系统的设计,以及如何使用书本知识到实际应用上去。

在很多细节上,孙老师的指导与教诲,让人受益匪浅。

感谢四年来测控技术与仪器专业各位老师的孜孜教诲和学校的细心培养,让我能有今天的进步,在今后的工作中发挥自己的价值。

最后要感谢我身后的父亲,母亲,一直以来对我的信任和支持,有朝一日,希望可以回给他们同样的爱。

感谢辽宁科技学院四年的学习!

参考文献

[1]边计年.用VHDL设计电子线路[M].北京:

清华出版社,2000:

2.

[2]黄任.VHDL入门•解惑•经典实例•经验总结[M].北京:

北京航天大学出版社,2005:

3-5,115.

[3]尹常永.EDA技术/电子设计实验讲义[M].西安:

西安电子科技大学出版社,2004:

3.

[4]杨刚.现代电子技术—VHDL与数字系统设计[M].北京:

电子工业出版社,2004:

6.

[5]甘历.VHDL应用与开发实验[M].北京:

科学出版社,2003:

4.

[6]侯伯亨.VHDL硬件描述语言与数字逻辑电路设计[M].西安:

西安电子科技大学出版社,1999:

27.

[7]潭会生,张昌凡.EDA技术及应用[M].西安:

西安电子科技大学出版社,2004:

81,233,256.

[8]王振红.VHDL数字电路设计与应用实践教程[M].北京:

机械工业出版社,2005:

35,37.

[9]李宜达.数字逻辑电路设计与实现[M].北京:

科学出版社,2004:

144.

附录

1、系统程序:

modulezhouyou(shift,scan,seg7,clk1khz,rst,af,aj,bf,bj);

output[4:

0]shift;

output[3:

0]scan;

output[6:

0]seg7;

inputclk1khz;

inputaf;

inputaj;

inputbf;

inputbj;

inputrst;

reg[4:

0]shift;

reg[3:

0]scan;

reg[6:

0]seg7;

regclk1_2hz;

reg[3:

0]a_score,b_score;

reg[1:

0]cnt;

reg[3:

0]data;

reg[3:

0]a_one,a_ten,b_one,b_ten;

reg[7:

0]count;

rega,b;

reg[4:

0]shift_1;

always@(posedgeclk1khz)

begin

if(count=='b1111_1010)

beginclk1_

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

当前位置:首页 > 解决方案 > 工作计划

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

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