基于FPGA的乒乓球游戏机设计 毕业论文.doc

上传人:来看看 文档编号:3920397 上传时间:2019-10-10 格式:DOC 页数:35 大小:1.98MB
返回 下载 相关 举报
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第1页
第1页 / 共35页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第2页
第2页 / 共35页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第3页
第3页 / 共35页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第4页
第4页 / 共35页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《基于FPGA的乒乓球游戏机设计 毕业论文.doc》由会员分享,可在线阅读,更多相关《基于FPGA的乒乓球游戏机设计 毕业论文.doc(35页珍藏版)》请在三一文库上搜索。

1、 存档编号 赣南师范学院科技学院学士学位论文基于FPGA的乒乓球游戏机设计 系 别: 数信系 届 别: 09届 专 业: 电子信息工程 学 号: 0920085108 姓 名: 指导老师: 完成日期: 2013、5、6 31目 录内容摘要1关键词1Abstract.1Key words11引言22 开发工具简介22.1硬件描述语言VHDL概述32.1.1VHDL语言的特点32.1.2基于VHDL的自顶向下设计42.2 Quartus II开发软件概述52.3本章小结63基于FPGA的乒乓球游戏机设计与实现63.1总体设计63.2电路总原理图73.3时钟分频设计93.4状态机设计93.4.1状态

2、机的7种状态及状态转移93.4.2状态机/球台控制程序103.5记分牌显示电路设计133.6按键消抖、乒乓球路径显示电路设计143.7顶层实体的描述153.8本章小结164系统的调试、仿真、下载、测试164.1 调试FPGA164.2系统的编译、仿真164.2.1系统编译164.2.2系统仿真184.3系统的适配、编程下载194.4本章小结215结论21参考文献22致谢23附件1:硬件实物图24附件2:程序清单25内容摘要:随着电子设计自动化技术的不断发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。本文设计了基于FPGA的乒乓球游戏机设计。用V

3、HDL语言编程, VHDL是甚高速集成电路硬件描述语言。目前,VHDL已成为许多设计自动化工具普遍采用的标准化硬件描述语言。VHDL语言功能性强,覆盖面广,灵活性高,具有很好的实用性。本文详细的简述了乒乓球游戏机的工作原理,此乒乓球游戏机由状态机、记分器、译码显示器与按键去抖等部分所组成。通过对各部分编写VHDL程序,在Quartus软件上进行编译、仿真,最终在Altera公司的EP开发板上成功实现下载和调试。经过仿真和验证的结果表明,实现乒乓游戏机的基本功能,结果达到了设计的要求。关键词:FPGA VHDL 乒乓游戏机 状态机Abstract:As electronic design aut

4、omation technology continues to develop and expand the field of application, EDA technology in electronic information, communication, increasing the importance of the field of automatic control and computer applications. This design of the table tennis game design based on FPGA . Programming in VHDL

5、 language, VHDL is the very high speed integrated circuit hardware description language . At present, the VHDL design automation tool widely used by many standardized hardware description language. VHDL language feature is strong, wide coverage, high flexibility, good practicality. This article gave

6、 a detailed summary of table tennis video game works, the table tennis game by the state machine, a device, decoding machine parts such as monitor and press the key to shaking up. The sections written by VHDL program, compiled in the Quartus II software, simulation, final EP of Altera Corporation su

7、ccessfully downloaded and debugged on the Development Board. After simulation and verification of the results shows that achieving basic functionality of ping pong game, the result meets the design requirements.Key words: FPGA VHDL Table tennis game machine State machine1引言EDA(Electronic Design Auto

8、mation,电子设计自动化)技术是现代电子工程领域的一门新技术。它提供了基于计算机和信息技术的电路系统设计方法。EDA技术的发张和推广应用极大地推动了电子工业的发展。随着社会的进步和工业技术的发展,在电子线路设计领域中,设计自动化工具已经逐步为设计者所接受,成为主要的设计手段。目前,VHDL已成为许多设计自动化工具普遍采用的标准化硬件描述语言,掌握VHDL语言,用VHDL语言设计电子线路,是电子线路设计者必须掌握的基本技能。VHDL支持数字电路的开发环境,VHDL也支持各种设计方法:自顶向下、自底向上或混合的方法1。VHDL语言功能性强,覆盖面大,灵活性高,具有很好的实用性2。20世纪末,电

9、子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。而休闲时间越来越少的人们越来越没太多的时间出去搞户外活动,于是众多电子游戏相应而出,成为大家的娱乐节目。因此设计出了关于两人的乒乓球游戏。乒乓游戏机是由9个发光二极管代表乒乓球台,中间的3个发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置两个开关,甲乙二人按乒乓球比赛规则来操作开关。此设计由译码显示器、记分器、状态机/球台控制器与按键去抖等部分组成。设计总体要求:乒

10、乓机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。其主要任务和要求如下:(1) 使用乒乓球的甲乙双方在不同的位置发球或击球。(2) 乒乓球的位置和移动方向由灯亮及依次点亮的方向决定。球速为0.5s-1s移动1位。球过网,接球方向可击球,提前击球或没击球均判失分。(3) 比赛按11分为一局,甲乙双方应设置记分牌,任何一方先记满11分,为胜出,按RESET复位重新开局。(4) 基于VHDL的乒乓球程序设计及软件编译与调试、仿真。2 开发工具简介EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅

11、助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域中,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。2.1硬件描述语言VHDL概述VHDL是

12、Very high speed integrated circuit Hardware Description Language的缩写,即“甚高速集成电路硬件描述语言”,最初由美国国防部和INTER、IBM、TI公司联合开发,1987年成为IEEE标准,即IEEE1076标准(俗称87版VHDL)3。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可

13、视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。2.1.1 VHDL语言的特点VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,VHDL 语言主要具有以下优点4:(1)VHDL 语言功能强大,设计方式多样 VHDL 语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,VHDL 语言能够同时支持同步电路

14、、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。 (2)VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户

15、定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在对于同一个硬件电路的 VHDL 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,VHDL 语言允许采用多种不同的器件结构来实现。 (5) VHDL

16、语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。2.1.2基于VHDL的自顶向下设计 在电子设计领域,自顶向下的设计方法只有在EDA技术得到快速发展和成熟应用的今天才成为可能。自顶向下设计方法的有效应用必须基于功能强大的EDA工具,具备集系统描述、行为描述和结构描述功能为一体的VHDL硬件描述语言,以及先进的ASIC制造工艺

17、和FPGA开发技术。当今,自顶向下的设计方法已经是EDA技术的首选设计方法,是ASIC或FPGA开发的主要设计手段。自顶向下的设计方法使系统被分解为各个模块的集合之后,可以对设计的每个独立模块指派不同的工作小组,其在不同地点工作,分属不同的单位,最后将不同模块集成为一个系统模型,并对其进行综合测试与评价。 (1)设计说明书(2)建立VHDL行为模型(3)VHDL行为仿真 (5)前端功能仿真(4)VHDL-RTL级建模 (6)逻辑综合 (8)功能仿真 (10)门级时序仿真 (9)结构综合 (7)测试向量生成设计完成 (11)硬件测试自顶向下设计流程的框图说明如图1所示:图1自顶向下的设计流程图2

18、.3 Quartus II开发软件概述Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Q

19、uartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观

20、易用的接口,越来越受到数字系统设计者的欢迎。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括5:(1)可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;(2)芯片(电路)平面布局连线编辑;(3)LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;(4)功能强大的逻辑综合工具;(5)完备的电路功能仿真与时序逻辑仿真工具;(6)定时/时序分析与关键路径延时分析;(7)可使用SignalTap II逻辑分析工具进行嵌入式的逻辑分析;(8)支持软件

21、源文件的添加和创建,并将它们链接起来生成编程文件;(9)使用组合编译方式可一次完成整体设计流程;(10)自动定位编译错误以及高效的期间编程与验证工具;(11)可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件也能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。2.4本章小结本章主要介绍了系统的开发工具,对硬件的描述语言VHDL的特点做了基本介绍,简明了VHDL的自顶向下设计的流程。并对QuartusII开发软件进行了概述。3基于FPGA的乒乓球游戏机设计与实现3.1总体设计乒乓游戏机的组成示意图如2所示。本设计中的乒乓游戏机是由9个发光二极管代表乒乓球台

22、,中间3个发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动方向。在游戏机的两侧各设置两个开关:hit1、 hit2,甲乙二人按乒乓球比赛规则来操作开关。甲开始发球时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲向乙依次点亮,代表乒乓球的移动。当球过网后按规定的球位,乙方就可以击球。若乙方提前击球或没有击中球,则判乙方失分,甲方的记分牌自动加一分。同理,当乙方开始发球时,点击hit1击球。然后重新发球,比赛继续进行。比赛一直要进行到一方记分牌达到11分,该局才结束。Hit1Hit2Sevre0Sevre1Light8.0乒乓球游戏机计分器2计分器1本设计由译码显示器、按键去

23、抖、状态机/球台控制器等部分所组成。系统的整体设计结构图如图3所示。FPGA最小系统击球、发球按键FPGA各组电源计分显示电路LED灯显示球路径图2 乒乓球游戏机的组成示意图图3 系统结构图3.2电路总原理图本设计由+5V供电,输出+3.3V的供电模块、50MHz有源晶振模块、AS下载端口拨码开关控制LED灯显示模块、数码管计分显示模块及芯片EP2C5T144C8N组成。如下图4所示:图4 乒乓球游戏机设计总原理图3.3时钟分频设计分频是将一个给定的频率较高的数字输入信号经过适当的处理而产生一个或数个频率较低的数字输出信号。由于开发板的时钟信号频率是50MHz,直接作为二极管点亮频率和数码管扫

24、描频率过大,不符合设计要求,如下图5所示为50MHz有源晶振电路图。因此需将时钟信号分频,分频成两个时钟信号分别给发光二极管作为移动速度和数码管的显示信号,分别设置分频系数为25000000、5000000,分频后的信号频率为1Hz、,此时发光二极管的移动速度为1s,符合设计要求。图5 50MHz有源晶振电路图部分时钟分频源程序:p1:process(count,clk) - 25000000 倍分频,发光二极管begin if clkevent and clk=1 then count=count+1;if count=25000000 then tmp=1; count=0; else t

25、mp=0;end if; end if;end Process; p2:process(couny) - 5000000倍分频,数码管 begin if clkevent and clk=1 then couny=couny+1;if couny=5000000 then tmg=1; couny=0; else tmg -等待状态下 进程处于等待发球状态 case serve is when 00 = i i=1;state i=7;state i i i=2; -light1on状态下 进程处于第一盏灯亮状态 if hit2=1 then i=0; count1=count1+1;stat

26、e=waitserve; else state i=6; -light7on状态下 进程处于第八盏灯亮状态 if hit1=1 then i=0; count2=count2+1;state=waitserve; else state -进程处于球向2移动状态 if hit1=1 then i=0; count2=count2+1;state=waitserve; elsif i=2 then i=1; state=allow1hit; else i -进程处于球向1移动状态 if hit2=1 then i=0; count1=count1+1;state=waitserve; elsif

27、i=6 then i=7; state=allow2hit; else i -进程处于允许1击球状态 if hit1=1 then i=2; state=ballmoveto2; else count2=count2+1;i=0; state -进程处于允许2击球状态 if hit2=1 then i=6;state=ballmoveto1; else count1=count1+1;i=0; statedout=1; if din=1 then nex=s0; else nexdout=1; if din=1 then nex=s0; else nexdout=1; if din=1 the

28、n nex=s0; else nexdout=0; if din=1 then nex=s0; else nex”按钮,将左边列表框的结点全部选中到右边的列表框。按“OK”按钮,选中全部的信号将其加入波形编辑器中11。最后通过菜单“File” “Save”在弹出的窗口中将波形文件存在同一个目录下,文件取名为GAME.SCF。(2)设置输入信号波形:波形观察左排按钮是用于设置输入信号的,使用时只要先用鼠标在输入波形上拖一个需要改变的黑色区域,然后单击左排相应按钮即可。将时钟信号选中,按集成环境左边上的时钟按钮,将出现时钟信号设置对话框,设置好时钟信号。按集成环境右边的“缩小”按钮,可以随小波形显示,以便在仿真时能够浏览波形全貌。根据需要将各输入信号进行设置,并保存。(3)运行仿真器进行仿真:选择菜单“QuartusII”“Simulator”,按下 “Simulator”,出现仿真参数设置与仿真启动窗。这时按一下该窗口中的“Start”按钮,即进行仿真运算,当仿真结果显示“0 errors,0

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1