fpga乒乓球游戏机设计大学论文

上传人:沈*** 文档编号:217937458 上传时间:2023-06-15 格式:DOC 页数:66 大小:974.50KB
收藏 版权申诉 举报 下载
fpga乒乓球游戏机设计大学论文_第1页
第1页 / 共66页
fpga乒乓球游戏机设计大学论文_第2页
第2页 / 共66页
fpga乒乓球游戏机设计大学论文_第3页
第3页 / 共66页
资源描述:

《fpga乒乓球游戏机设计大学论文》由会员分享,可在线阅读,更多相关《fpga乒乓球游戏机设计大学论文(66页珍藏版)》请在装配图网上搜索。

1、摘要摘 要在电子技术获得了飞速的发展的今天,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。而电子游戏因其携带方便、互动性高、无场地限制等优势,成为了人们休闲时很好的选择。本设计将采用FPGA对“乒乓球”游戏机进行实现。FPGA具有功能强、可靠性高、使用方便、体积小及重量轻等优点。近年来,国内的FPGA技术与产品开发应用方面的发展也很快,各种电子产品已越来越多地采用FPGA控制系统且性价比高。然后以FPGA为平台,VHDL硬件描述语言编程实现,实验箱验证。最后在硬件上调试并实现实现“乒乓

2、球”游戏机功能。关键字:EDA,FPGA,VHDL,游戏机59AbstractABSTRACTThe electronic technology has obtained the rapid development in the modern, the electronic products penetrated almost every field of the society, a strong impetus to the development of social productive forces and the social informationization degree is

3、 improved, simultaneously also makes the modern electronic products to further improve the performance, product replacement are increasingly fast pace. Electronic games because of its portability, interactive high, no site limitation and other advantages, has become the people leisure time very good

4、 choice.This design will use the FPGA on the ping pong Electronic game machine. FPGA has the advantages of strong function, high reliability, convenient use, small volume and light weight etc. In recent years, the development of FPGA technology and product development and application of domestic too

5、 soon, all kinds of electronic products have been increasingly adopted in FPGA control system and high cost performance. Then taking FPGA as the platform, VHDL hardware description language programming, verification experiment box. Finally, in the hardware debugging and the realization of ping pong

6、game computer function.Key Words:EDA, FPGA, VHDL, Game machine目录目 录第1章 引言11.1 选题背景11.2 研究设计主要内容1第2章 开发工具描述32.1 EDA基础32.1.1 EDA技术的发展历程32.1.2 EDA技术的发展趋势52.1.3 EDA技术的基本工具52.2 硬件描述语言VHDL62.3 Quartus 简介7第3章 功能实现与设计思路103.1 功能实现103.2 设计方案10第4章 各模块程序设计124.1 主控制程序设计124.1.1 桌台模块程序设计124.1.2 译码模块程序134.2 分频器模块设计

7、144.3 防抖动模块设计154.4 显示控制和输出模块17第5章 系统的整合与仿真205.1 上层模块设计205.2 系统的仿真215.3 引脚分配与器件编程245.3.1 引脚分配245.3.2 器件编程24第6章 总结28参考文献29致谢30附录31附录一:桌台模块程序31附录二:分频器模块程序35附录三:防抖动模块程序36附录四:显示控制和输出模块程序37附录五:上层模块程序39附录六:译码模块程序41外文资料原文43译文53第1章 引言第1章 引言1.1 选题背景电子技术的飞速发展,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代

8、电子产品性能进一步提高,产品更新换代的节奏也越来越快。而休闲时间越来越少的人们越来越没太多的时间出去搞户外活动,于是众多电子游戏应运而生,满足大家休闲时的娱乐需求。由此设计了这个两人的乒乓球游戏。本设计将采用FPGA对“乒乓球”游戏机进行实现。FPGA具有功能强、可靠性高、使用方便、体积小及重量轻等优点。近年来,国内的FPGA技术与产品开发应用方面的发展也很快,各种电子产品已越来越多地采用FPGA控制系统且性价比高。而电子信息类产品的开发明显地出现了两个特点:一是开发产品的复杂程度加深;二是开发产品的上市时限紧迫。而伴随着如上两个特点的产生,相应的出现了设计上的两个问题。其一,在电子系统日趋数

9、字化、复杂化和大规模集成化的今天,电子厂商们越加迫切地追求电子产品的高功能、优品质、低成本、微功耗和微小封装尺寸,从而使得电子设计日趋复杂。那么如何去完成这些高复杂度的电子设计呢?其二,电子产品设计周期短和上市快是电子厂商们坚持不懈的追求,那么面对日趋复杂的设计,又如何能够缩短开发时间呢?解决以上两个问题的唯一途径是电子设计自动化(EDA),即用计算机帮助设计人员完成繁琐的设计工作。1.2 研究设计主要内容两人乒乓球游戏机是用8个发光二级管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置发球和击球开关,甲乙双方按乒乓球比赛规则来

10、操作开关。当甲方按动发球开关时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲方向乙方依次点亮,代表乒乓球的移动。当球过网后按照设计者规定的球位乙方就可以击球。若乙方提前击球或者未击到球,则甲方得分。然后重新发球进行比赛,知道一方记分达到21分为止,记分清零,重新开始新一局比赛。第2章 开发工具描述第2章 开发工具描述2.1 EDA基础EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描

11、述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的EDA工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过

12、程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。2.1.1 EDA技术的发展历程集

13、成电路的飞快发展不断给EDA技术提出更高的要求,对EDA技术的发展起了巨大的推动作用。从20世纪60年代中期开始,人们不断地开发出各种计算机辅助设计工具来帮助设计人员进行集成电路和电子系统的设计。经历了计算机辅助设计、计算机辅助工程设计和电子系统设计自动化这3个阶段,如图2-1所示。图2-1 EDA发展历程(1)CAD阶段20世纪70年代,随着中、小规模集成电路的兴起和应用,传统的手工设计印刷电路板和集成电路的方法已经不能满足设计精度和效率的要求,于是电子设计工程师们开始在二维平面图形上进行计算机辅助设计,这样就产生了第一代EDA工具,设计者从繁杂、机械的、手工布局和布线工作中解放了出来。(2

14、)CAE阶段20世纪80年代以后,集成电路的规模越来越大,电子系统设计的复杂也在增加,电子设计自动化的工具逐步完善和发展起来,设计者们尤其在设计方法、设计工具集成化方面取得了很大的进步。为了适应电子产品在规模和制作上的需要,以计算机仿真和自动布线为核心的第二代EDA技术应运而生。其特点是以软件设计工具为核心,通过软件完成产品的开发、设计、分析、生产和测试等工作。(3)ESDA阶段20世纪90年代,设计师们逐步从使用硬件转向去设计硬件,从单个电子产品开发转向系统级电子产品开发(及片上系统集成)。因此,这时的EDA工具是以系统级设计为核心,包括结构综合与系统行为级描述,系统仿真与测试验证,系统决策

15、与文件生成,系统划分与指标分配等一整套的电子系统设计工具。这时的EDA工具不仅具有电子系统设计的能力,而且具有独立于生产工艺和厂家的系统级设计能力。第三代EDA工具的出现,极大地提高了电子系统设计的效率,让设计工程师们开始能够以概念来驱动设计工程的梦想。2.1.2 EDA技术的发展趋势随着微电子技术的不断发展与进步和市场需求的不断增长,EDA技术在21世纪后得到了迅猛的发展,这一发展趋势表现在以下几个方面:(1)软件IP核在微电子的产业领域、设计应用领域和技术领域得到进一步的巩固与发展。(2)使支持硬件描述语言仿真和设计的EDA软件不断地强大起来。(3)EDA使得系统与器件、专用集成电路ASI

16、C与FPGA、模拟与数字、行为与结构、软件与硬件等的界限越来越模糊。(4) EDA技术保护了设计者的电子设计成果的知识产权。(5)大规模的电子系统都是以EDA为工具设计的,正以飞快的速度渗透到IP核模块。(6)更大规模的可编程逻辑器件正在推向市场,使得设计更为广泛与便捷。2.1.3 EDA技术的基本工具集成电路技术的不断发展对EDA技术提出了更高的要求,促进了EDA技术向更高的层次发展。但实际来说,EDA系统的设计能力一直难以满足集成电路的要求。EDA工具的发展经历了两个阶段,即物理工具阶段和逻辑工具阶段。现在,人们已经开发了很多计算机辅助设计工具来帮助设计集成电路,常见的EDA工具有编辑器、

17、仿真器、检查/分析工具和优化/综合工具等,如图2-2所示。EDA设计工具检查/分析工具编辑器仿真器优化/综合工具文字编辑器图形编辑器统计型编辑器确定型仿真器图2-2 EDA设计工具的分类2.2 硬件描述语言VHDLVHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和V

18、HDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL与Verilog语言将承担起大部分的数字系统设计任务。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语

19、言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体4(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。 (1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑

20、行为上描述和设计大规模电子系统的重要保证。 (2) VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3) VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。 (5) VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的

21、设计。2.3 Quartus简介Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II 可在以XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II 支持Altera的IP核,包含了LPM/MegaFun

22、ction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。 此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Quartus II 软件具有以下很多突出的特点。(1)开放式的多平台设计环境 Quartus II 提供了完整的多平台设计环境,能满足各种特定设计的需求,也是

23、可编程片上系统设计的综合性环境和SOPC开发的基本设计工具,并为Attera DSP开发包进行系统模型设计提供了集成综合环境。(2)设计与结构无关(3)可在多种平台运行(4)层次化设计Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调用,从而解决了原理图与HDL混合输入设计的问题。(5)模块化工具设计者可以从各种设计输入、编辑、校验及器件编程工具中做出选择,形成用户风格的开发环境,必要时还可在保留原始功能的基础上添加新的功能。(6)支持硬件描述语言Quartus II软件支持多种硬件描述语言的设计输入,包括标准的VHDL,Verilog HD

24、L及Atera公司自己开发的硬件描述语言AHDL。(7)丰富的PLM模块(8)MegaCore功能MegaCore是经过预先校验的为实现复杂的系统功能而提供的HDL网表文件。(9)OpenCoreQuartus II软件具有开放性内核的特点,OpenCore可供设计者在购买产品前来对自己的设计进行评估。第3章 功能实现与设计思路第3章 功能实现与设计思路 3.1 功能实现两人乒乓游戏机能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和计分。乒乓游戏机是用8个发光二极管代表乒乓球台,中间两个发光二极管兼作乒乓球网,用点亮的发光二极管按一定的方向移动来表示球的运动。在游戏机的两侧设置击球开关。甲乙

25、两人按乒乓球比赛的规则来操作开关。当甲方按动发球开关,发光二极管由甲方向乙方依次点亮,代表球在移动。当球过网后,按设计者规定的球位乙方就可以击球。若乙方提前击球或者没有击着球,则判乙方失分,甲方计分牌自动加分。然后重新发球,比赛继续进行。比赛一直进行到一方计分到21分,该局结束,计分牌清零,可以进行新的一局比赛。具体功能如下:(1)使用乒乓球游戏机的甲乙双方在不同的位置发球或者击球。(2)乒乓球的位置和移动的方向由灯亮及依次点亮的方向决定,球移动的速度为0.10.5s移动一位。游戏者根据球的位置发出相应的动作,提前击球或出界均判失分。(3)比赛用21分为一局来进行,甲乙双方设置各自的记分牌,任

26、何一方计满21分,该方就算胜了此局。计分牌清零,开始新的一局比赛。3.2 设计方案根据乒乓游戏机功能的要求,我们可以分成5个模块来实现。分别为控制模块、显示控制和输出模块、译码模块、分频模块、防抖模块。在设计中,控制模块为tennis模块,它实现了乒乓球游戏机的的全部逻辑功能;显示控制和输出模块为countyima模块,它实现乒乓球游戏机七段数码管的片选;7段译码器模块为yima模块,它将送来的分数进行译码,实现数据的显示,即计分牌的分数;分频模块将系统时钟按照设计所需进行分频;防抖模块为fangdou模块,机械开关易引入抖动干扰,为了消除抖动干扰,需要使用防抖动电路。乒乓球游戏机总体框图如图

27、3-1所示。球台控制电路分频电路时钟输入防抖动电路译码显示图3-1 乒乓球游戏机总体框图第4章 各模块程序设计第4章 各模块程序设计 4.1 主控制程序设计主控制模块程序作为该设计的核心,控制乒乓球在LED上的移动和甲乙双方的计分的作用。该主控制程序包括了桌台模块和译码模块两个部分。4.1.1 桌台模块程序设计设计该乒乓球游戏机的输入/输出端口。首先考虑输入端口,设置一个异步置位端口restart,用于在系统不正常时或重开一局时回到初始状态;两个击球输入端accep1和accep2,分别表示甲击球键输入和乙击球键输入;一个时钟输入端口clk1。其次考虑输出端口,芯片应该有8个输出端口来控制8个

28、发光二极管,输出一个电平,可以使发光二极管点亮;另外,要直观地表示双方的得分,就得用到七段译码器,每方用到2个,可以表示021的数字。实体的设计如下:entity tennis isport(restart : in std_logic;clk1 : in std_logic;accep1,accep2 : in std_logic;table : out std_logic_vector(1 to 8);score11 : out std_logic_vector(1 to 8);score12 : out std_logic_vector(1 to 8);score21 : out std

29、_logic_vector(1 to 8);score22 : out std_logic_vector(1 to 8);end tennis;控制模块设置了7个状态,分别是等待发球状态(waitfor)、第一盏灯亮状态(begin1)、第八盏灯亮状态(begin2)、球向乙移动状态(to2)、球向甲移动状态(to1)、允许甲击球状态(allowreceive1)和允许乙击球状态(allowreceive2)。乒乓球游戏机中有两个计数器scor1和scor2,分别记忆甲的得分和乙的得分;一个a信号,用它的数值来控制状态机外8个发光二极管的亮和暗,比如当a=1时表示第一个发光二极管亮,用发光二级

30、管的轮流发光表示球的移动轨迹。控制模块结构体代码见附录一。程序在Quartus II软件上编译、运行并生成tennis模块元件如图4-1所示。图4-1 Tennis模块元件4.1.2 译码模块程序译码模块是将传输进入的分数信号进行译码,然后输出让LED数码管显示。七段译码器是在数字电路设计中经常用到的显示电路。所谓七段译码器,其实是由7段发光二极管组成的用于显示数字的器件。常见的数码管有共阴和共阳2种。本设计用的是共阳极显示数码管,共阳数码管是将8个发光二极管连接在一起作为公共端。公共端常被称作位码,而降其他8位称作段码,这8位是a,b,c,d,e,f,g及h,他们对应数码管的七个段位和一个小

31、数点。a,b,c,d,e,f,g这七段是控制字型显示的,因此也将LED数码管称为7段数码管。由此我们可以得到09的7段译码值,加上小数点将是8位显示代码。09可以用4位二进制BCD码来表示。译码模块详细程序见附录六。下面是该译码模块的部分程序:begintempbcdout1=00000011;bcdout2bcdout1=00000011;bcdout2bcdout1=00100101;bcdout2bcdout1=11111101;bcdout2=00000010; end case;end process; end ccc; 译码程序在Quartus II软件上编译、运行,译码模块仿真如

32、图4-2所示。图4-2 译码模块仿真4.2 分频器模块设计本设计所用到的系统时钟频率为50Mhz。时钟分频模块的功能是将输入的外部时钟信号进行分频,产生本设计所用到的小于50Mhz的信号。其中,c1要求为1Khz,所以50Mhz/1Khz=50000,因此要一个50000分频器产生1Khz的信号。c2要求为5hz,利用信号c1,所以1Khz/5hz=200,因此要一个200分频器产生5hz的信号。该分频器的工作原理为计数器从0n-1循环计数,当计数值达到n-1时归零,并且使计数器在n-1时输出一个脉冲。分频器模块程序见附录二。程序在Quartus II软件上编译、运行并生成fenpin模块元件

33、如图4-3所示。图4-3 Fenpin模块元件分频器模块编译、运行之后进行仿真,该仿真将时钟信号进行分频,结果如图4-4所示。图4-4 分频模块仿真4.3 防抖动模块设计本设计会用到机械按键,机械开关在开关切换的瞬间在接触点会出现来回弹跳的现象,虽然只是一次按键然后放开,而实际产生的按键信号不止弹跳一次,因此必须加上消除弹跳的电路。本设计采用计数器型防抖电路。设置一个模值为4的控制计数器,在人工按键key=1时,执行加1计数;key=0时,计数器进入状态0。计数器只有在状态1时有输出。计数器进入状态3,处于保持状态。按键一次,计数器只有一个单脉冲输出。按键key是产生抖动的根源,按照设计,只有

34、按键持续时间大于3个时钟周期,计数器输出才可能产生有效正跳变,输出一个单脉冲。只要选择时钟周期大于机械开关抖动的产生的毛刺宽度,那么毛刺作用就不可能使计数器有输出,防抖动目的就可以实现。防抖模块的详细程序见附录三。以下是该模块的部分程序:d :process(clk)beginif(clkevent and clk=1)thenif key=1 thenif jsq=3 thencp=1;jsq=jsq;elsecp=0;jsq=jsq+1;end if;. . end process;end;程序在Quartus II 软件上编译、运行并生成fangfou模块元件如图4-5所示。图4-5 F

35、angdou模块元件防抖模块编译、运行之后进行仿真,当输入信号持续时间不足时没有信号输出,输入信号持续时间达到时有一个信号输出。如图4-6所示。图4-6 防抖模块仿真4.4 显示控制和输出模块显示控制和输出模块的功能就是要产生数码管的使能信号,以控制哪一个数码管亮,并完成译码的功能。该模块描述了数码管的4种状态。当q等于0时,点亮第一个数码管;q等于1时,点亮第二个数码管;当q等于2时,点亮第三个数码管;当q等于3时,点亮第四个数码管。并且将得分信号送出。选通信号一个1khz的信号控制4个数码管的点亮。显示控制和输出模块详细程序见附录四。以下是显示控制和输出模块的部分程序:beginproce

36、ss(clk2)beginif(clk2event and clk2=1)thenif q=3 thenq=0;elseqsel=1110;oscoresel=1101;oscoresel=1011;oscoresel=0111;oscore=score22;end case;end process;end程序在Quartus II软件上编译、运行并生成countyima模块元件如图4-7所示。图4-7 Countyima模块元件显示控制和输出模块程序编译、运行之后,进行仿真,仿真结果如图4-8所示。图4-8 显示控制和输出模块仿真第5章 系统的整合与仿真第5章 系统的整合与仿真5.1 上层模

37、块设计上层模块的作用是将下层模块连接起来,可以用图形输入法,也可以用文本输入法。本设计使用文本输入法将下层模块连接起来。在任何一个自顶向下的设计描述中,上层模块都包括系统的接口,即输入、输出信号和数据类型。该设计的上层接口信号为:reset 复位开关clk 时钟信号,50Mhzaccept1f,accept2f 击球信号tablef 桌球台灯scoref 数码管的输入信号selectf 数码管的片选信号上层模块调用了4个下层模块:tennis桌台模块、fangdou防抖模块、fenpin分频模块和countyima显示控制和输出模块,利用位置映射的方法可将4个模块连接起来。上层模块详细程序见附

38、录五。以下是上层模块的部分程序:architecture link of ctrl iscomponent fenpinport(clk : in std_logic;c1,c2 : out std_logic);end component;. .signal clk1,clk2 : std_logic;beginu1 : fenpin port map (clk,clk1,clk2);u2 : fangdou port map (clk1,accept1f,accept1);u3 : fangdou port map (clk1,accept2f,accept2);u4 : tennis p

39、ort map (reset,clk2,accept1,accept2,tablef,s11,s12,s21,s22);u5 :countyima port map(clk1,s11,s12,s21,s22,selectf,scoref);end link;所有模块编辑输入完成后,在quartus软件上编译、运行并生成该设计的顶层模块如图5-1所示。图5-1 顶层模块在程序编译运行成功后,仔细检查是否与自己设计符合后就可以进行程序的仿真了。5.2 系统的仿真仿真的目的就是在软件环境下,验证电路的行为和设想中的是否一致。可以使用Quartus II Simulator仿真任何设计。根据所需的信息

40、类型,可以进行功能仿真以测试设计的逻辑功能,也可以进行时序仿真,在目标器件中测试设计的逻辑功能和最坏情况下的时序,或者采用FAST Timing模型进行时序仿真,在最快的器件速率等级上仿真尽可能快的时序条件。由于本系统的状态情况比较的多,下面就几种典型的情况进行系统的综合和仿真:(1)当甲方先发球,乙方在恰当的时刻击球成功,当球回到甲方时,甲方没有及时接到球的仿真波形。在图中可以看到乒乓球的运动轨迹和打球的状态,此时乙方得一分。仿真波形如图5-2所示。图5-2 比赛过程仿真(2)当甲方两次成功发球后乙方都没有接到球,甲方得2分的仿真波形图。如图5-3所示。图5-3 比赛过程仿真(3)当甲成功发

41、球后,乙方提前击球导致未击中的情况,此时,甲方得1分。然后,甲方又成功发球,而乙方没有在规定的时间接到球,此时甲方又得了1分。如图5-4所示。图5-4 比赛过程仿真(4)当甲方发过三次球之后,乙方发球。如图5-5所示。图5-5 交换发球权仿真5.3 引脚分配与器件编程5.3.1 引脚分配建立工程和设计之后,需要指定目标器件并进行引脚分配。选择好目标器件后就可以使用分配编辑器指定引脚分配。使用分配编辑器可以在Quartus II进行引脚分配。分配用于在设计中为逻辑指定的各种选项和设置,包括位置、I/O标准、时序、逻辑选项、参数、仿真和引脚分配。本设计采用以Cyclone系列EP1C3T144C8

42、作为芯片的开发板,根据卖家提供的开发板引脚分配图就可以完成引脚分配。引脚分配如图5-6所示。图5-6 引脚分配5.3.2 器件编程使用Quartus II软件成功编译工程和引脚分配后,就可以对Altera器件进行编程或配置。Quartus II Compiler的Assembler模块生成编程文件,结合Atera编程硬件,Quartus II Programmer可以对器件进行编程或配置。Programmer使用Assembler生成的Programmer Object文件(.pof)或SRAM Object文件(.sof)对Quartus II软件支持的器件进行编程或配置。Programme

43、r具有四种编程模式:(1)Passive Serial模式;(2)JTAG模式;(3)Active Serial Programming模式;(4)In-Socket Programming模式。Prassive Serial和JTAG编程模式允许使用CDF和Altera编程硬件对单个或多个器件进行编程。可以使用Active Serial Programming模式和Altera编程硬件对单个EPCS1或EPCS4串行配置器件进行编程。编辑器窗口上的Mode下拉列表用于设置编程模式,默认是JTAG模式,如图5-7所示。图5-7 设置编程模式完成设置之后,勾选编程文件后方的选项,单击Start按

44、钮即可启动编程器,Progress显示编程进度,如图5-8所示。图5-8 完成器件编程完成器件编程之后,就可以进行硬件验证了。程序下载到硬件后就可以进行硬件调试,看硬件的测试效果与设想的是否一致。硬件程序下载完成之后,初始状态甲乙双方分数为零,由甲方发球。如图5-9所示。图5-9 游戏机初始状态甲方发完三球之后,将发球权交给乙方,硬件效果如图5-10所示。图5-10 交换发球权乒乓球游戏机在比赛过程中的效果如图5-11所示。图5-11 乒乓球游戏机比赛过程中参考文献第6章 总结本文进行乒乓游戏机软件设计,并用EDA实验箱进行验证,目标芯片是Altera公司Cyclone系列的EP1C3T114

45、C8,本设计由桌台模块、分频模块、译码模块、按键防抖等模块组成。采用VHDL语言编程,基于FPGA成功设计了一款乒乓球比赛的游戏机,通过仿真验证可知,结果满足了设计的要求。系统能够模拟两人乒乓球比赛的基本过程和规则,并能自动裁判和计分,能有效模拟实际的乒乓球比赛。该系统可进一步改进,使用人体感应器官来采集击球信号,采用FPGA产生视频信号送到电视机,更直观地展示乒乓球运动轨迹,从而真正实现人机互动,优化虚拟效果。参考文献1聂小燕, 鲁才. 数字电路EDA设计与应用. 人民邮电出版社, 20102尹常永. EDA技术与数字系统设计. 西安电子科技大学出版社, 20043李国丽, 朱维勇, 栾铭.

46、 EDA与数字系统设计. 机械工业出版社, 20074延明, 张亦华. 数字电路EDA技术入门北京邮电大学出版社, 20065江国强. EDA技术与应用M. 电子工业出版社, 20046张文爱. EDA技术与FPGA应用设计M. 电子工业出版社, 20127谭慧生 张昌凡. EDA技术与应用M. 西安电子科技大学出版社, 20018汉泽西. EDA技术及其应用M. 北京航空航天大学出版社, 20049王振红. VHDL数字电路设计与应用教程M. 机械工业出版社, 200310付家才. EDA技术与FPGA应用设计M. 电子工业出版社, 2012致谢附录附录附录一:桌台模块程序library i

47、eee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity tennis is port(restart : in std_logic; clk1 : in std_logic; accep1,accep2 : in std_logic; table : out std_logic_vector(1 to 8); score11 : out std_logic_vector(1 to 8); score12 : out std_logic_vector(1

48、 to 8); score21 : out std_logic_vector(1 to 8); score22 : out std_logic_vector(1 to 8);end tennis;architecture rt1 of tennis is type ttennis is ( waitfor, begin1,to2,allowreceive2,begin2,to1,allowreceive1); signal state :ttennis; signal a :integer range 0 to 8; signal scor1,scor2: std_logic_vector(1

49、 to 4) :=0000; signal send : std_logic; signal m : integer range 0 to 3; component yima is port(bcdin : in std_logic_vector(1 to 4); bcdout1 : out std_logic_vector(1 to 8); bcdout2 : out std_logic_vector(1 to 8); end component;begin process(clk1) begin if clk1event and clk1=1 then if(m=3) then m=0;

50、send=not send; end if; if scor1=1011or scor2=1011 then a=0; scor1=0000; scor2=0000; elsif restart=0 then a=0;scor1=0000;scor2=0000;m=0;send=0;state case send is -when 00 = aa=1;statea=8;state aa if accep1=0then a=2; if accep2=0then a=0; scor1=scor1+1;state=waitfor; else state=to2; end if; else state

51、 if accep2=0 then a=7; if accep1=0 then a=0; scor2=scor2+1;state=waitfor; else state=to1; end if; else state if accep1=0 then a=0; scor2=scor2+1;m=m+1;state=waitfor; elsif a=2 then a=1; state=allowreceive1; else a if accep2=0 then a=0; scor1=scor1+1;m=m+1;state=waitfor; elsif a=7 then a=8; state =al

52、lowreceive2; else a if accep1=0 then a=2;state=to2; else scor2=scor2+1;a=0;m=m+1; state if accep2=0 then a=7;state=to1; else scor1=scor1+1;a=0;m=m+1; state=waitfor; end if; end case; end if; end if; end process; table=10000000 when (a=1) else01000000when(a=2) else00100000when(a=3) else00010000when(a

53、=4) else00001000when(a=5) else00000100when(a=6) else00000010when(a=7) else00000001when(a=8) else00000000when(a=0) else00000000; p1 : yima port map(scor1,score11,score12); p2 : yima port map(scor2,score21,score22);end rt1;附录二:分频器模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.al

54、l;use ieee.std_logic_unsigned.all;entity fenpin is port(clk : in std_logic; c1,c2 : out std_logic);end;architecture ab of fenpin is signal tant :integer range 0 to 49999; signal tant2 :integer range 0 to 199; signal cp1 : std_logic; signal cp2 : std_logic;begina : process(clk) begin if(clkevent and clk=1) then if tant=49999 then tant=0; else tant=tant+1; end if; if tant=24999 then cp1=0; else cp1=1; end if; end if; end process; c1=cp1;b : process(cp1) begin if(cp1event and cp1=1) then if tant2=199 then tant2=0; else ta

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!