基于VHDL的乒乓球游戏机设计_第1页
基于VHDL的乒乓球游戏机设计_第2页
基于VHDL的乒乓球游戏机设计_第3页
基于VHDL的乒乓球游戏机设计_第4页
基于VHDL的乒乓球游戏机设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

李园园 基于 VHDL 的乒乓球游戏机设计 第 0 页 共 23 页 1 引言EDA(Electronic Design Automation,电子设计自动化)技术是现代电子工程领域的一门新技术。它提供了基于计算机和信息技术的电路系统设计方法。EDA技术的发张和推广应用极大地推动了电子工业的发展。EDA技术就是以计算机为工具,在EDA软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件自动地完成逻辑编译,逻辑化简,逻辑分割,逻辑综合及优化,逻辑布局布线,逻辑仿真,直至对于特定目标芯片的适配编译,逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式,即利用硬件描述语言来完成对系统硬件功能的描述,在EDA工具的帮助下就可以得到最后的设计结果 1。近年来,集成电路制造技术的快速发展, 一方面促进了相应设计技术的发展, 另一方面也对设计技术提出了更高的要求。当前集成电路设计, 面临着功能强、性能好、规模大、成本低、设计周期短等一系列要求和挑战, 这些要求和挑战引起了集成电路设计方法的全面革新。当今, 以行为设计为主要标志的新一代数字系统设计理论已形成并得到发展。在集成电路的数字系统的系统级设计中, VHDL 硬件描述语言构造的描述模型优化设计, 有利于高效利用设计空间, 实现设计结构的精确分析, 使芯片资源得以充分利用。1.1 课题的背景、目的20 世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。而休闲时间越来越少的人们越来越没太多的时间出去搞户外活动,于是众多电子游戏相应而出,成为大家的娱乐节目。因此设计了这个两人的乒乓球游戏。而电子信息类产品的开发明显地出现了两个特点:一是开发产品的复杂程度加深;二是开发产品的上市时限紧迫。而伴随着如上两个特点的产生,相应的出现了设计上的两个问题。其一,在电子系统日趋数字化、复杂化和大规模集成化的今天,电子厂商们越加迫切地追求电子产品的高功能、优品质、低成本、微功耗和微小封装尺寸,从而使得电子设计日趋复杂。那么如何去完成这些高复杂度的电子设计呢?其二,电子产品设计周期短和上市快是电子厂商们坚持不懈的追求,那么面对日趋复杂的设计,又如何能够缩短开发时间呢?解决以上两个问题的唯一途径是电子设计自动化(EDA),即用计算机帮助设计人员完成繁琐的设计工作。李园园 基于 VHDL 的乒乓球游戏机设计 第 1 页 共 23 页 1.2 课题设计主要内容两人乒乓球游戏机是用 8个发光二级管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置发球和击球开关,甲乙双方按乒乓球比赛规则来操作开关。当甲方按动发球开关时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲方向乙方依次点亮,代表乒乓球的移动。当球过网后按照设计者规定的球位乙方就可以击球。若乙方提前击球或者未击到球,则甲方得分。然后重新发球进行比赛,知道一方记分达到 21分为止,记分清零,重新开始新一局比赛。李园园 基于 VHDL 的乒乓球游戏机设计 第 2 页 共 23 页 2 开发工具简介2.1EDA 技术EDA2是电子设计自动化(Electronic Design Automation)缩写,是 90 年代初从CAD(计算机辅助设计) 、CAM(计算机辅助制造) 、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA 技术是以计算机为工具,根据硬件描述语言 HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。典型的 EDA 工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者在 EDA 平台上完成的针对某个系统项目的 HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可与目标器件 FPGA/CPLD 相映射的网表文件。硬件描述语言 HDL 是相对于一般的计算机软件语言,如:C、PASCAL 而言的。HDL 语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用 HDL 程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制 FPGA 和CPLD 内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就 FPGA/CPLD 开发来说,比较常用和流行的 HDL 主要有 ABEL-HDL、AHDL和 VHDL。2.2 硬件描述语言VHDL2.3 MAX+PLUS的介绍李园园 基于 VHDL 的乒乓球游戏机设计 第 3 页 共 23 页 3 设计方案3.1 状态机的设计思路状态机设置了 7个状态,分别是“等待发球状态” ,第一盏灯亮状态“,第八盏灯亮状态” , “球向乙移动状态” , “球向甲移动状态” , “允许甲击球状态” , “允许乙击球状态” 。这是该程序中起作用的 7个状态。开始的时候处于“等待发球状态” ,若甲发球则状态转移到“第一盏灯亮状态,若乙发球则转移到”第八盏灯亮状态“,具体说明以甲发球为例。若发球后乙没有提前击球规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态” 。若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击球状态” ,在此状态下,如果乙击球了,那么状态就转移到“球向甲移动状态” 。在“第一盏灯亮状态” , “球向乙移动状态”中,如果乙击球了,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球。“球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。状态转移规则都是一样。图 3-1给出了乒乓游戏机的状态转移图。第一盏灯亮第一盏灯亮第一盏灯亮第一盏灯亮第一盏灯亮第一盏灯亮第一盏灯亮图 3-13.2 乒乓球游戏机实体的设计设计该乒乓球游戏机的输入/输出端口。首先考虑输入端口,一般都应该设置一个李园园 基于 VHDL 的乒乓球游戏机设计 第 4 页 共 23 页 异步置位端口 reset,用于在系统不正常时回到初始状态;两个发球输入端 serve1 和serve2,逻辑1分别表示甲方和乙方的发球;两个击球输入端 hit1 和 hit2,逻辑1分别表示甲击球和乙击球;一个开始游戏按钮 startbutton,处于逻辑1表示可以游戏;还得有一个时钟输入端口 clk。其次考虑输出端口,芯片应该有 8 个输出端口来控制 8 个发光二极管,输出逻辑1即输出一个高电平,可以使发光二极管点亮;另外,要直观地表示双方的得分,就得用到七段译码器,每方用到 2 个,可以表示 021 的数字,每个七段译码器需要芯片的 7 个输出端口来控制,总共需要 28 个输出端口。实体的设计如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity pingponggame isport(reset: in std_logic;clk: in std_logic;startbutton: in std_logic;serve: in std_logic_vector(1 to 2);hit1,hit2: in std_logic;light: out std_logic_vector(1 to 8);score11,score12,score21,score22: out std_logic_vector(1 to 7);end pingponggame;3.3 状态机编程实现状态机设置了 7 个状态,分别是等待发球状态(waitserve) 、第一盏灯亮状态(light1on) 、第八盏灯亮状态(light8on) 、球向乙移动状态(ballmoveto2) 、球向甲移动状态(ballmoveto1) 、允许甲击球状态(allow1hit)和允许乙击球状态(allow2hit) 。状态 waitserve,light1on ,ballmoveto2,allow2hit,light8on,ballmoveto1 和allow1hit 代表的具体数值依次是 0 到 6.在波形模拟图中是用数值来表示状态的。乒乓球游戏机中有两个计数器 count1 和 count2,分别记忆甲的得分和乙的得分;一个 i 信号,用它的数值来控制状态机外 8 个发光二极管的亮和暗,比如当 i=1 时表示李园园 基于 VHDL 的乒乓球游戏机设计 第 5 页 共 23 页 第一个发光二极管亮,用发光二级管的轮流发光表示球的移动轨迹。输入状态机的信号有游戏开关 startbutton 信号,它是 1 位二进制信号,数值为 1 表示可以进入游戏;serve 信号,是一个 2 位二进制向量, “01”表示甲发球;两个二进制信号 hit1 和 hit2 分别表示甲乙是否击球,若数值为 1,表示击球,不为 1 表示不击球。以下是状态机进程代码。process(clk)beginif reset=1 thenicase serve iswhen “00“ = i i i i i i iif hit1=1 then iif hit2=1 then iif hit1=1 then iif hit2=1 then i bcdout1 bcdout1 bcdout1 bcdout1 bcdout1 bcdout1 bcdout1 bcdout1 bcdout1 bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1bcdout1=“1101101“;bcdout2=“1111110“;end case;end process;end m;3.5 构造体的设计构造体代码如下:architecture game of pingponggame istype pingpong is (waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1,allow1hit);signal state:pingpong;signal

温馨提示

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

评论

0/150

提交评论