基于FPGA的乒乓球游戏机设计 毕业论文.doc_第1页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第2页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第3页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第4页
基于FPGA的乒乓球游戏机设计 毕业论文.doc_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

存档编号 赣南师范学院科技学院学士学位论文基于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状态机的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的乒乓球游戏机设计。用vhdl语言编程, vhdl是甚高速集成电路硬件描述语言。目前,vhdl已成为许多设计自动化工具普遍采用的标准化硬件描述语言。vhdl语言功能性强,覆盖面广,灵活性高,具有很好的实用性。本文详细的简述了乒乓球游戏机的工作原理,此乒乓球游戏机由状态机、记分器、译码显示器与按键去抖等部分所组成。通过对各部分编写vhdl程序,在quartus软件上进行编译、仿真,最终在altera公司的ep开发板上成功实现下载和调试。经过仿真和验证的结果表明,实现乒乓游戏机的基本功能,结果达到了设计的要求。关键词:fpga vhdl 乒乓游戏机 状态机abstract:as electronic design automation 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 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 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 successfully 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 automation,电子设计自动化)技术是现代电子工程领域的一门新技术。它提供了基于计算机和信息技术的电路系统设计方法。eda技术的发张和推广应用极大地推动了电子工业的发展。随着社会的进步和工业技术的发展,在电子线路设计领域中,设计自动化工具已经逐步为设计者所接受,成为主要的设计手段。目前,vhdl已成为许多设计自动化工具普遍采用的标准化硬件描述语言,掌握vhdl语言,用vhdl语言设计电子线路,是电子线路设计者必须掌握的基本技能。vhdl支持数字电路的开发环境,vhdl也支持各种设计方法:自顶向下、自底向上或混合的方法1。vhdl语言功能性强,覆盖面大,灵活性高,具有很好的实用性2。20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。而休闲时间越来越少的人们越来越没太多的时间出去搞户外活动,于是众多电子游戏相应而出,成为大家的娱乐节目。因此设计出了关于两人的乒乓球游戏。乒乓游戏机是由9个发光二极管代表乒乓球台,中间的3个发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置两个开关,甲乙二人按乒乓球比赛规则来操作开关。此设计由译码显示器、记分器、状态机/球台控制器与按键去抖等部分组成。设计总体要求:乒乓机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。其主要任务和要求如下:(1) 使用乒乓球的甲乙双方在不同的位置发球或击球。(2) 乒乓球的位置和移动方向由灯亮及依次点亮的方向决定。球速为0.5s-1s移动1位。球过网,接球方向可击球,提前击球或没击球均判失分。(3) 比赛按11分为一局,甲乙双方应设置记分牌,任何一方先记满11分,为胜出,按reset复位重新开局。(4) 基于vhdl的乒乓球程序设计及软件编译与调试、仿真。2 开发工具简介eda是电子设计自动化(electronic design automation)的缩写,在20世纪60年代中期从计算机辅助设计(cad)、计算机辅助制造(cam)、计算机辅助测试(cat)和计算机辅助工程(cae)的概念发展而来的。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域中,可编程逻辑器件(如cpld、fpga)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了eda技术的迅速发展。2.1硬件描述语言vhdl概述vhdl是very high speed integrated circuit hardware description language的缩写,即“甚高速集成电路硬件描述语言”,最初由美国国防部和inter、ibm、ti公司联合开发,1987年成为ieee标准,即ieee1076标准(俗称87版vhdl)3。vhdl主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,vhdl的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。2.1.1 vhdl语言的特点vhdl 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来,vhdl 语言主要具有以下优点4:(1)vhdl 语言功能强大,设计方式多样 vhdl 语言具有强大的语言结构,只需采用简单明确的vhdl语言程序就可以描述十分复杂的硬件电路。同时,它还具有多层次的电路设计描述功能。此外,vhdl 语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。vhdl 语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法; 既支持模块化设计方法,也支持层次化设计方法。 (2)vhdl 语言具有强大的硬件描述能力 vhdl 语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,vhdl 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。vhdl 语言的强大描述能力还体现在它具有丰富的数据类型。vhdl 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) vhdl 语言具有很强的移植能力 vhdl 语言很强的移植能力主要体现在对于同一个硬件电路的 vhdl 语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4) vhdl 语言的设计描述与器件无关 采用 vhdl 语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化,而不需要考虑其他的问题。当硬件电路的设计描述完成以后,vhdl 语言允许采用多种不同的器件结构来实现。 (5) vhdl 语言程序易于共享和复用 vhdl 语言采用基于库 ( library) 的设计方法。在设计过程中,设计人员可以建立各种可再次利用的模块,一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计,而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块,将这些模块存放在库中,就可以在以后的设计中进行复用。2.1.2基于vhdl的自顶向下设计 在电子设计领域,自顶向下的设计方法只有在eda技术得到快速发展和成熟应用的今天才成为可能。自顶向下设计方法的有效应用必须基于功能强大的eda工具,具备集系统描述、行为描述和结构描述功能为一体的vhdl硬件描述语言,以及先进的asic制造工艺和fpga开发技术。当今,自顶向下的设计方法已经是eda技术的首选设计方法,是asic或fpga开发的主要设计手段。自顶向下的设计方法使系统被分解为各个模块的集合之后,可以对设计的每个独立模块指派不同的工作小组,其在不同地点工作,分属不同的单位,最后将不同模块集成为一个系统模型,并对其进行综合测试与评价。 (1)设计说明书(2)建立vhdl行为模型(3)vhdl行为仿真 (5)前端功能仿真(4)vhdl-rtl级建模 (6)逻辑综合 (8)功能仿真 (10)门级时序仿真 (9)结构综合 (7)测试向量生成设计完成 (11)硬件测试自顶向下设计流程的框图说明如图1所示:图1自顶向下的设计流程图2.3 quartus ii开发软件概述quartus ii 是altera公司的综合性pld/fpga开发软件,支持原理图、vhdl、veriloghdl以及ahdl(altera hardware description language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整pld设计流程。quartus ii支持altera的ip核,包含了lpm/megafunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方eda工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方eda工具。此外,quartus ii 通过和dsp builder工具与matlab/simulink相结合,可以方便地实现各种dsp应用系统;支持altera的片上可编程系统(sopc)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。quartus ii 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。altera在quartus ii 中包含了许多诸如signaltap ii、chip editor和rtl viewer的设计辅助工具,集成了sopc和hardcopy设计流程。altera quartus ii 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。quartus ii提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括5:(1)可利用原理图、结构框图、veriloghdl、ahdl和vhdl完成电路描述,并将其保存为设计实体文件;(2)芯片(电路)平面布局连线编辑;(3)logiclock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;(4)功能强大的逻辑综合工具;(5)完备的电路功能仿真与时序逻辑仿真工具;(6)定时/时序分析与关键路径延时分析;(7)可使用signaltap ii逻辑分析工具进行嵌入式的逻辑分析;(8)支持软件源文件的添加和创建,并将它们链接起来生成编程文件;(9)使用组合编译方式可一次完成整体设计流程;(10)自动定位编译错误以及高效的期间编程与验证工具;(11)可读入标准的edif网表文件、vhdl网表文件和verilog网表文件也能生成第三方eda软件使用的vhdl网表文件和verilog网表文件。2.4本章小结本章主要介绍了系统的开发工具,对硬件的描述语言vhdl的特点做了基本介绍,简明了vhdl的自顶向下设计的流程。并对quartusii开发软件进行了概述。3基于fpga的乒乓球游戏机设计与实现3.1总体设计乒乓游戏机的组成示意图如2所示。本设计中的乒乓游戏机是由9个发光二极管代表乒乓球台,中间3个发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动方向。在游戏机的两侧各设置两个开关:hit1、 hit2,甲乙二人按乒乓球比赛规则来操作开关。甲开始发球时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲向乙依次点亮,代表乒乓球的移动。当球过网后按规定的球位,乙方就可以击球。若乙方提前击球或没有击中球,则判乙方失分,甲方的记分牌自动加一分。同理,当乙方开始发球时,点击hit1击球。然后重新发球,比赛继续进行。比赛一直要进行到一方记分牌达到11分,该局才结束。hit1hit2sevre0sevre1light8.0乒乓球游戏机计分器2计分器1本设计由译码显示器、按键去抖、状态机/球台控制器等部分所组成。系统的整体设计结构图如图3所示。fpga最小系统击球、发球按键fpga各组电源计分显示电路led灯显示球路径图2 乒乓球游戏机的组成示意图图3 系统结构图3.2电路总原理图本设计由+5v供电,输出+3.3v的供电模块、50mhz有源晶振模块、as下载端口拨码开关控制led灯显示模块、数码管计分显示模块及芯片ep2c5t144c8n组成。如下图4所示:图4 乒乓球游戏机设计总原理图3.3时钟分频设计分频是将一个给定的频率较高的数字输入信号经过适当的处理而产生一个或数个频率较低的数字输出信号。由于开发板的时钟信号频率是50mhz,直接作为二极管点亮频率和数码管扫描频率过大,不符合设计要求,如下图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 tmp=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;state=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 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 then 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 warnings”,表示仿真运算结束。乒乓球运动轨迹图(如图11)及甲、乙击球波形图(如图12、如图13)。图11 乒乓球运动轨迹图12 甲击球波形图图13 乙击球运动轨迹4.3系统的适配、编程下载配置,就是对fpga的内容进行编程的一个过程。在一般的应用中,都是选择用altera的配置芯片配合完成配置过程。在altera的产品中,可以根据fpga在整个配置过程的角色,可以分为3类:fpga主动方式(as);fpga被动方式(ps);jtag方式12。在fpga主动方式下(以下简称as),由板上的fpga主动输出输出控制和同步信号给altera专用的一种串行配置芯片(如epcs1等),在配置芯片收到命令后,就把配置芯片数据发到fpga,完成配置过程。在fpga被动方式下(以下简称ps),由系统的其他设备发起并控制配置过程。这些设备包括altera的配置芯片(epc系列)。fpga完全处于被动地位,只是简单的输出一些状态信号配合配置过程。 jtag接口是一个业界标准,主要用于芯片测试等功能,使用ieee std 1149.1联合边界扫描接口引脚,支持jam stapl标准,可以使用altera下载电缆或主控器来完成。fpga在正常工作时,它的配置数据存储在sram中,加电时须重新下载。在此实验系统中,使用的是as配置方式,加电时无需重新下载。在实用系统中,多数情况下必须由fpga主动引导配置操作过程,这时fpga将主动从外围专用存储芯片中获得配置数据,而此芯片中fpga配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。as编程模式下配置如图15所示以及引脚分布图(如图14):图14 引脚分布图图15 as模式配置图4.4本章小结本章主要介绍整个系统的编译、仿真、分配以及编程下载。通过对系统的仿真、编程下载,实现了系统的基本功能现象,达到了设计的要求。5结论本文乒乓球游戏机的设计是基于fpga技术设计的乒乓球游戏机,利用fpga最小系统作为设计基础,运用quartusii软件和vhdl硬件描述语言实现了乒乓球游戏机的功能。在设计时用eda实验箱进行验证,目标芯片是altera公司cycloneii系列的ep2c5t144c8n芯片,电路由状态机/球台控制器、记分牌译码显示电路、按键去抖和乒乓球路径显示电路等模块组成,通过实验箱模拟乒乓球游戏机。本次设计发挥了fpga在智能化的应用,为fpga应用技术的研究和学习奠定了实践基础。通过本设计实验,对eda技术有了更深入的认识与了解。通过几个月的努力,基本完成了毕业设计任务书所要求的内容,而且在实验箱上对大部分功能进行了仿真,取得了预期的结果,总之,通过自己的努力以及同学和老师的帮助,圆满的完成了本次设计任务。参考文献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: 256.8 王振红.vhdl数字电路设计与应用实践教程m.北京:机械工业出版社,2005:35,37.9 李宜达.数字逻辑电路设计与实现m.北京:科学出版社,2004:144.10 王振红,张常年.综合电子设计与实践m.北京:清华大学出版社,2005:122.11 杭州康芯电子有限公司.eda技术实用教程m.北京:科学出版社,2004:17.12 朱正伟.eda技术及应用m.北京:清华大学出版社,2005:21-25.致谢本次设计是在指导老师吴强的指导下完成的。在设计的过程中,吴老师给予了我许多指导,是他带我进入vhdl世界,仅仅几次课让我们认知了vhdl的世界,这是我这次设计能成功的一些因素,并提供了很多与该设计相关的重要信息,培养了我们对该设计的兴趣,丰富了我们的知识。这都将非常有利于我们今后的学习和工作。在此表示衷心的感谢!另外,在设计过程中,我更深刻的了解到电子信息工程是一门很精深的课程,它是一个硬件与软件相通的课程,要想很好的学好它,还必须投入更多时间与热情。也了解到很多内容不是光看可不就能学到的,必须高强度的提高动手能力,多去尝试。这些都对我以后的学习有很大的帮助。还有,班上同学同样给与我不少帮助,这里一并表示感谢。附件1:硬件实物图附件2:源程序代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity game is -实体部分 port(reset: in std_logic; -reset是记分牌清零信号 clk: in std_logic; start: in std_logic; -start控制游戏是否开始 serve: in std_logic_vector(0 to 1); -发球信号 hit1,hit2: in std_logic; -击球键 light: out std_logic_vector(0 to 6); -发光二极管的输出信号 tmp: buffer std_logic; -tmp,tmg为输入输出类型,作为分频后的信号,供给数码管扫描和发光二极管点亮使用 tmg: buffer std_logic; score11,score12,score21,score22: out std_logic_vector(0 to 6); end game;architecture one of game is -构造体部分 type pingpong is (waitserve,light1on,ballmoveto2,allow2hit,light7on, ballmoveto1,allow1hit); -状态机的七个状态 signal state:pingpong; signal i:integer range 0 to 7; -代表8个二极管的发光状态

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论