基于VHDL的乒乓游戏机的设计与实现

上传人:仙*** 文档编号:91585321 上传时间:2022-05-17 格式:DOC 页数:22 大小:148KB
返回 下载 相关 举报
基于VHDL的乒乓游戏机的设计与实现_第1页
第1页 / 共22页
基于VHDL的乒乓游戏机的设计与实现_第2页
第2页 / 共22页
基于VHDL的乒乓游戏机的设计与实现_第3页
第3页 / 共22页
点击查看更多>>
资源描述
.目录1引言12 VHDL简介22.1 VHDL的特点及优点22.2设计流图33模块设计63.1七段数码管显示译码器73.2按键去抖电路93.3状态机设计11状态机的6种状态及状态转移11状态机/球台控制程序123.4记分器设计174系统硬件测试204.1 GW48系统的主要性能和特点204.2 FPGA目标芯片管脚图204.3系统的编译、综合、适配224.4系统的有关仿真244.5系统的编程配置265结论28参考文献29致谢30摘 要VHDL是甚高速集成电路硬件描述语言。目前,VHDL已成为许多设计自动化工具普遍采用的标准化硬件描述语言。VHDL语言功能性强,覆盖面广,灵活性高,具有很好的实用性。本文设计一个基于VHDL的乒乓游戏机,乒乓游戏机由状态机、记分器、译码显示器与按键去抖等部分所组成。通过对各部分编写VHDL程序,然后进行编译、仿真、逻辑综合、逻辑适配,最后进行编程下载,并且通过GW48型EDA实验箱的验证,实现乒乓游戏机的基本功能。关键词:VHDL;GW48;乒乓游戏机AbstractVHDL is high speed IC hardware describe language. VHDL already becomes the language of normalizing hardware describe that a lot of design automation implement adopts commonly at present. The VHDL language function is strong.The face covering is broad, flexibility high and have the very good pragmatism. One main body of the book is designed waits for what part group is accomplishedowing to that VHDL table tennis game machine, table tennis game machine go to tremble from state machine, marker, decoding display and button. By compiling and composing VHDL procedure to every part, then compiling, simulate, logic synthesis, logic fitting. Carryout programming time be loaded with finally.Then verification and by GW48 type EDA experiment box, realize table tennis game machines fundamental function.Keywords:VHDL; GW48; Table tennis game machine.1引言随着社会的进步和工业技术的发展,在电子线路设计领域中,设计自动化工具已经逐步为设计者所接受,成为主要的设计手段。目前,VHDL已成为许多设计自动化工具普遍采用的标准化硬件描述语言,掌握VHDL语言,用VHDL语言设计电子线路,是电子线路设计者必须掌握的基本技能。VHDL支持数字电路的开发环境,VHDL也支持各种设计方法:自顶向下、自底向上或混合的方法1。VHDL语言功能性强,覆盖面大,灵活性高,具有很好的实用性2。本文设计一个基于VHDL的乒乓游戏机,乒乓游戏机是由5个发光二极管代表乒乓球台,中间的发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置两个开关,甲乙二人按乒乓球比赛规则来操作开关。本设计由译码显示器、记分器、状态机/球台控制器与按键去抖等部分组成。本设计是用实验箱GW48进行模拟乒乓机,用发光二极管代表乒乓球台,最中间的发光二极管作球网,用点亮的发光二极管按一定方向移动来表示球的运动,用按钮设置发球和接球开关。设计总体要求:乒乓机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。本设计的主要任务和要求如下:1使用乒乓机的甲乙双放在不同的位置发球或击球。2乒乓球的位置和移动方向由灯亮及依次点亮的方向决定。球的速度为0.1s-0.5s移动1位。球过网,接球方向即可击球,提前击球或没击球均判失分。3比赛按21分为一局进行,甲乙双方都应设置自己的记分牌,任何一方先记满21分,该方就算胜出,按RESET复位重新开局。2VHDL简介VHDL是Very high speed integrated circuit Hardware Description Language的缩写,即甚高速集成电路硬件描述语言,最初由美国国防部和INTER、IBM、TI公司联合开发,1987年成为IEEE标准,即IEEE1076标准俗称87版VHDL1。此后,美国国防部要求官方与高速集成电路设计的所有文档必须用VHDL描述,因为VHDL在电子设计领域得到了广泛的应用,渐渐成为工业界的标准。1993年,IEEE对VHDL进行了修订,公布了新的VHDL标准,即IEEE1076-1993版俗称93版VHDL3。2.1VHDL的特点及优点VHDL具有以下特点4:1支持自顶向下的设计方法:设计可按层次分解,采用结构化开发手段,可实现多人、多任务的并行工作方式,使系统的设计效力大幅提高。2系统硬件描述能力强:可以同时支持行为描述、数字流描述和结构描述3种描述方式,并可混用5。其中,强大的行为描述能力使设计者可以避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统。这一特点使VHDL成为系统设计领域中最佳的硬件描述语言。3系统仿真能力强:VHDL最初是作为一种仿真标准问世的,因此VHDL具有仿真语句和库函数。另外,VHDL强大的行为描述能力也使其十分适用于系统级仿真。4工艺无关性6:在使用VHDL设计系统硬件时,没有嵌入与工艺相关的信息。正因为VHDL的硬件描述与具体工艺无关,因而其程序的硬件实现目标器件有广阔的选择范围,其中包括各种CPLD、FPGA及ASIC等。同时,VHDL具有以下优点7:1与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体FPGA和CPLD等目标器件的网表文件已不成问题,只是在综合与优化效率上略有差异。2VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。3VHDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。高效、高速完成符号市场需求的大规模系统设计必须有多人甚至多个开发组共同并行工作才能实现。VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有利的支持。4用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表。这种方式突破了门级设计的瓶颈,极大地减少电路设计的时间和可能发生的错误,降低了开发成本。利用EDA工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更小、更高速的电路系统。反过来,设计者还可以容易地从综合和优化的电路获得设计信息,返回去修改VHDL设计描述,使之更加完善。5VHDL对设计的描述具有相对独立性。设计者可以不懂硬件的结构,也不必管最终设计的目标器件是什么,而进行独立的设计。正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,所以VHDL设计程序的硬件实现目标器件有广阔的选择范围,其中包括各种系列的CPLD、FPGA及各种门阵列器件。6VHDL具有类属描述语句和子程序调用等功能,对于完成的设计,在不改变源程序的条件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。正因为VHDL有如此多的特点和优点,所以本设计运用VHDL进行乒乓球游戏机软设计。2.2设计流图设计流程图如图1所示。这一流程图基本可使用任何基本硬件描述语言的设计。下面对这个流程中的步骤进行说明1:1系统层次划分/画出系统框图Hierarchy/Block Diagram:按照自顶向下的设计方法对系统进行划分确定系统由哪些模块构成,各个模块又由哪些子模块构成。2编码:写出VHDL代码,大多数集成开发环境如MAX+plus2等都集成了针对VHDL的编辑。这些编辑器一般都具有VHDL关键词的亮点显示等特点,有的还内嵌了常用的VHDL程序模块。图1 VHDL的设计流程图3编译Compilation:编译器会对VHDL程序进行语法检查,还会产生用于仿真的一些内部信息。这一步骤通常由编译器自动完成,无须我们干预。如果VHDL语言有错误,编译无法通过,则需要修改程序,即回到第2步。事实上,VHDL设计过程中,常常根据需要往后退一步,甚至更多。4功能仿真FunctionalSimulation:VHDL仿真器允许定义输入并应用到设计中,不必生成实际电路就可以观察输出。此仿真主要用于检验系统功能设计的正确性,不涉及具体器件的硬件特性。5综合Synthesis:利用综合器对VHDL代码进行综合优化处理,生成门级描述的网表文件,这是将VHDL语言描述转化为硬件电路的关键步骤。这一步通常由综合器自动完成,但设计者可以设定一些技术上的约束条件如限定逻辑层次的最大数等来帮助综合器。6适配Fitting:利用适配器将综合后的网表文件针对某一具体的目标器件进行逻辑映射操作,包括底层器件配置、逻辑分割、逻辑优化、布局布线等。此步骤将产生多项设计结果:适配报告,包括芯片内部资源的利用情况、设计的布尔方程描述情况等;适配后的仿真模型;器件编程文件。7时序仿真TimingSimulation:根据适配后的仿真模型,可以进行时序仿真。因为这时已经得到目标器件的实际硬件特性如时延特性等,所以仿真结果能比较精确的预期芯片的实际性能。如果仿真结果达不到设计要求,就需要修改VHDL源代码或选择不同的目标器件,甚至要重构整个系统,图1就是所设计者极力避免出现的情况。8下载CPLD/FPGAProgramming:如果时序仿真通过,就可将适配时产生的器件编程文件下载到CPLD或FPGA中FPGA的编程通过被称为配置。虽然流程图中未标出从此步往回走的箭头,但事实上,实际的结果有可能与仿真结果有差异可能是设计时未考虑到外部硬件的实际情况;也可能是由于仿真时测试的条件不够多,没有发现其中隐藏的错误,这时,必须回头重新找出问题所在。3模块设计乒乓游戏机的组成示意图如图2所示。图2 乒乓游戏机的组成示意图本设计中的乒乓游戏机是由5个发光二极管代表乒乓球台,中间的发光二极管兼作球网,用点亮的发光二极管按一定方向移动来表示球的运动。在游戏机的两侧各设置两个开关,一个是发球开关STARTA、STARTB;另一个是击球开关HITA、HITB。甲乙二人按乒乓球比赛规则来操作开关。当甲方按动发球开关STARTA时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲向乙依次点亮,代表乒乓球的移动。当球过网后按设计者规定的球位,乙方就可以击球。若乙方提前击球或没有击中球,则判乙方失分,甲方的记分牌自动加一分。然后重新发球,比赛继续进行。比赛一直要进行到一方记分牌达到21分,该局才结束。本设计由译码显示器、按键去抖、状态机/球台控制器和记分器等部分所组成。本系统的逻辑分框图如图3所示。图3 系统逻辑分框图3.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的译码电路的VHDL程序中,EN为高电平时,译码器正常工作;EN为低电平时,译码器输出0000000,表示数码管无显示。用选择信号赋值语句描述,将综合成组合逻辑电路。图4 共阴数码管及电路图5 多模块共同控制七段数码管译码电路示意图带使能信号EN的译码电路的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DISPLAY IS PORTEN: IN STD_LOGIC;NUM: IN INTEGERRANGE 0 TO 15;DISPLAY: OUT STD_LOGIC_VECTOR ;END;ARCHITECTURE DECODER OF DISPLAY ISBEGINPROCESS BEGIN IF EN= 1 THEN -使能信号EN为1时,译码器正常工作CASE NUM ISWHEN 0=DISPLAYDISPLAYDISPLAYDISPLAYDISPLAYDISPLAYDISPLAYDISPLAYDISPLAYDISPLAY=0000000;END CASE; ELSEDISPLAY=0000000; -EN为0,数码管无显示END IF;END PROCESS;END;值得注意的是,本程序是组合逻辑电路,PROCESS的敏感信号参数表中一定要有NUM;否则编译时会提示如下出错信息:Else Clause following a Clock edge must hold the state of signalDisplay。出现此提示信息的原因是:综合器将EN误判为时钟信号,并试图将程序综合成时序逻辑电路,但该程序的格式又不符合综合器对时钟信号描述的要求,因此无法综合。3.2按键去抖电路键盘的按键闭合与释放瞬间,输入的信号会有毛刺。如果不进行消抖处理,系统会将这些毛刺误以为是用户的另一次输入,导致系统的误操作。防抖电路有很多种,最简单、最容易理解的就是计数法。其原理是对键值进行计数,当某一键值保持一段时间不改变时计数器达到一定值后,才确认它为有效值;否则将其判为无效键值,重新对键值进行计算2。下面是基于计数法的防抖电路程序:LIBRARY IEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTUTYANTITWITTERISPORT;END;ARCHITECTURE BEHAVIOR OF ANTITWITTER ISSIGNAL TEMPNUM:INTEGERRANGE 0 TO 15;SIGNAL COUNTER:INTEGERRANGE 0 TO 31;SIGNAL START:STD_LOGIC;BEGINPROCESSBEGINIF RISING_EDGE THENIF START=0THEN -上电后立即对输出的键值赋予无效值TEMPNUM=15; -此处沿将15作为无效值NUMOUT=15; -此无效值务必随实际情况改变START= 1;ELSEIF NUMIN=TEMPNUM THEN -上一键值与此键值不同TENPNUM=NUMIN; -记录此键值COUNTER= 0; -并对计数器清0,准备对此键值计时 ELSEIF COUNTER31 THEN; -当键值保持31个时钟周期不变时NUMOUT=NUMIN; -即确定为有效键值,并输出 COUNTER= 0;ELSECOUNTER=COUNTER+1;END IF;END IF;END IF;END IF;END PROCESS;END;3.3状态机设计3.3.1状态机的6种状态及状态转移本状态机有6种状态,分别是WAITSTATE、ATOB、BTOA、ASCORE、BSCORE和FINALRESULT,其含义如表1所示。表1 状态机的6种状态及含义状 态含 义WAITSTATE等待状态,等待A或B方开球ATOB球从A向B方移动BTOA 球从B向A方移动ASCOREA得一分BSCOREB得一分FINALRESULT比赛结束,在此状态下需要按复位键,才能开始下一轮比赛结合表1,从图6中很清楚地看出乒乓游戏机比赛过程中球的移动情况,及加分方法,还可以初步了解到本状态机设计的基本思路。图6乒乓游戏机状态转移图3.3.2状态机/球台控制程序状态机是种很重要的时序电路,也是本设计的核心部件。状态机属于时序电路范畴,实现一个控制功能更为方便,并提高了控制速度10。本次设计中状态机的符号如图7所示。图7 状态机符号在本设计中,状态机用两个信号表示状态:STATE表示当前状态,TABLESTATE表示下一个状态。此状态机由两个进程构成,状态机的输入/输出引脚的作用如表2所示。其中SCOREAL3.0、SCOREAH3.0、SCOREBL3.0、SCOREBH3.0用七段BCD码译码器显示得分情况,而SCOREA、SCOREB用二进制进行加分,由记分器反馈回来。表2 输入/输出引脚的作用引 脚作 用CLK10Hz的时钟,可由系统时钟分频得到。此时时钟决定了球移动的速度, 可根据实际需要调整。RESET复位键,比赛重新开始,记分器清0STARTA、STARTBA和B双方的开始的开球键HITA、HITB A和B双方的击球键CLEAR 将记分器清0INCREASEA 、INCREASEB分别为A、B双方的加分信号SCOREAL3.0SCOREAH3.0SCOREBL3.0SCOREBH3.0SCOREA、SCOREBA、B双方的分数LIGHT4.0接5个发光二极管AWIN、BWIN分别接发光二极管,表示A或B方胜出状态机的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY STATEMACHINE ISPORTCLK:IN STD_LOGIC;RESET:INSTD_LOGIC;STARTA,HITA, STARTB, HITB:IN STD_LOGIC;SCOREA, SCOREB: IN INTEGERRANGE0 TO 21;CLEAR, INCREASEA, INCREASEB:OUT STD_LOGIC; TABLELIGHT:OUT STD_LOGIC_VECTOR;AWIN, BWIN:OUT STD_LOGIC;END;ARCHITECTURE BEHAVIOR OF STATEMACHINE ISTYPESTATE_TYPEIS;SIGNALSTATE:STATE_TYPE;SIGNAL TABLESTATE:INTEGERRANGE0 TO 4;BEGINPROCESSBEGIN IF RESET=1 THEN -按下复位键,比赛开始STATE=WAITSTATE; -进入等待状态CLEAR=1; -记分器清零AWIN=0;BWIN=0;ELSIF RISING_EDGE THENCASESTATE ISWHEN WAITSTATE=CLEAR=0;INCREASEA=0; INCREASEB=0;IF OR SCOREB=21THEN-如果一方先得到21分STATE=FINALRESULT; -比赛结束 ELSE IF STARTA=1THEN -如果A开球 STATE=ATOB; -球从A向B方移动 TABLESTATE=0; -A方第一个灯点亮ELSEIF STARTB=1THEN -如果B开球A、B开球有-定的优先级区别STATE=BTOA; -球从B向A方移动TABLESTATE=4; -B方第一个灯亮ELSESTATE -球从A向B移动的过程IF HITB=1THEN -如果检测到B方击球IF TABLESTATE=2 THEN -若未过网提前击球STATE=ASCORE; -判为A胜ELSESTATE=BTOA; -若过了网击球,球从B-向A移动END IF;ELSE -若未检测到B方击球IF TABLESTATE=4 THEN -如果离B方最近的灯-已经亮STATE=ASCORE; -判为A胜ELSETABLESTATE -球从B向A移动的过程IF HITA=1THEN -如果检测A方击球IF TABLESTATE=2 THEN -若未过网提前击球STATE=BSCORE; -判为B胜ELSE -若过了网击球,球从ASTATE=ATOB; -向B移动 END IF;ELSE -若未检测到A击球 IF TABLESTATE=0 THEN -如果离A最近的灯亮了STATE=BSCORE; -判为B胜 ELSETABLESTATE -如果A胜INCREASEA=1; -A方加1分STATE -如果B胜INCREASEB=1; -B方加1分STATE -最后结果IF THEN -若A方先达到21分AWIN=1; -表示A方胜出的灯亮ELSEBWIN STATE=WAITSTATE;END CASE; END IF;END PROCESS;PROCESS -此进程控制5个发光二极管的亮灭 BEGINIF FALLING_EDGE THENIFORTHENCASE TABLESTATE ISWHEN 0=TABLELIGHTTABLELIGHTTABLELIGHTTABLELIGHTTABLELIGHTTABLELIGHT=00000;END CASE;ELSETABLELIGHT=00000;END IF;END IF;END PROCESS;END;3.4记分器设计图8 记分器元件符号记分器元件符号如图8所示,本设计中记分器比较简单,只须根据状态机给出的两个信号INCREASEA和INCREASEB对六个分数SCOREAL、SCOREAH和SCOREBL、SCOREBH、SCOREA、SCOREB进行操作,记分器的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER ISPORTCLK:IN STD_LOGIC;CLEAR:IN STD_LOGIC;INCREASEA,INCREASEB:IN STD_LOGIC;SCOREAL,SCOREAH,SCOREBL,SCOREBH:BUFFERSTD_LOGIC_VECTORSCOREA,SCOREB:BUFFERINTRGERRANGE0 TO 21;END;ARCHITECTURE COUNT OF COUNTER ISBEGINPROCESSISBEGINIF CLEAR=1 THEN -清0SCOREAL=0000;SCOREAH=0000;SCOREBL=0000; SCOREBH=0000;SCORES=0; SCOREB=0;ELSIF FALLING_EDGETHENIF INCREASEA=1 THEN -A方加1分 IF SCOREAH0010 THEN -若高位小于2 IF SCOREAL1001 THEN -如果低位小于9SCOREAL=SCOREAL+1; -则低位加1 ELSE SCOREAL=0000; -当低位为9,则清0SCOREAH=SCOREAH+1; -高位加1END IF;ELSIF SCOREAH= 0010 THEN -若高位为2 IF SCOREAL0001 THEN -如果低位小于1SCOREAL=SCOREAL+1; -则低位加1 ELSE SCOREAL=0000; -否则高位、低位都清0 SCOREAH=0000;END IF;END IF;SCOREA=SCOREA+1;ELSIF INCREASEB=1 THENIF SCOREBH2 THEN -若高位小于2IF SCOREBL1001 THEN -如果低位小于9SCOREBL=SCOREBL+1; -则低位加1ELSE SCOREBL=0000; -当低位为9,则清0SCOREBH=SCOREBH+1; -高位加1 END IF;ELSIF SCOREBH=0010 THEN -若高位为2IF SCOREBL0001 THEN -如果低位小于1SCOREBL=SCOREBL+1; -则低位加1ELSE SCOREBL=0000; -否则高位、低位都清0SCOREBH=0000;END IF;END IF;SCOREB=SCOREB+1;END IF;END IF;END PROCESS;END;编写VHDL源程序后,不能将设计文本存入根目录下,本设计都存在文件夹CHENLY中,还要注意设计文本的后缀名一定是.VHD,编写时一定要注意实体名跟设计文件名一致,这些是程序能顺利进行编辑和编译、逻辑综合、逻辑适配、编程下载成功的最重要的前提条件。4系统硬件测试4.1GW48系统的主要性能和特点1GW48系统设有通用的系统编程下载电路,可对Lattice、Xilinx、Vantis、Altera、Atmel和Cypress等世界六大PLD公司各种ISP编程下载方式或现场配置的CPLD/FPGA系列器件进行实验或开发。其主系统板与芯片板都采用接插式结构,动态电路结构自动切换工作方式,含有可自动切换的12种实验电路结构模式。2GW48系统基于电路重构软件配置的设计思想,采用了I/O口可任意定向目标板的智能化电路结构设计方案,利用在系统微控制器对I/O口进行任意定向设置和控制,从而实现了CPLD/FPGA目标芯片I/O口与实验输入/输出资源以各种不同方式连接来构造形式各异的实验电路的目的。3GW48充实丰富的实验资源外,还扩展了A/D、D/A、VGA视频、PS/2接口、RS232通信、单片机独立用户系统编程下载接口、48MHz高频时钟源及在板数字频率计,在其上可完成200多种基于FPGA和CPLD的各类电子设计和数字系统设计实验与开发项目,从而能使实验更接近实际的工程设计8。4.2FPGA目标芯片管脚图设计所用的GW48实验箱中,适配的目标芯片为ALTERA类中FLEX10K系列的EPF10K10,EPF10K10LC84型号的芯片有84个引脚11,如图9所示,本设计中用到的引脚情况如下:CLK:时钟信号,决定球的移动速度,对应实验箱中的输入时钟选择模块中的CLOCK0。对应芯片引脚2。RESET:复位键,对应实验箱的键1,对应芯片的引脚5。STARTA、STARTB:开球键,分别对应实验箱的键4、键7,分别对应芯片的引脚8、11。HITA、HITB:击球键,分别对应实验箱的键5、键8,分别对应芯片的引脚9、16。L0、L1、L2、L3、L4:代表乒乓球台,L2为球网,分别对应发光二极管的D1、D2、D3、D4、D5,分别对应芯片引脚17、18、19、21、22。AWIN、BWIN:表示A、B胜出的标志,分别接二极管D7、D8,哪个先点亮,说明该方已经得里21分,分别对应芯片引脚24、25。AL0、AL1、AL2、AL3:显示A方得分情况中个位上的分值,对应数码管1,分别对应芯片引脚27、28、29、30。AH0、AH1、AH2、AH3:显示A方得分情况中十位上的分值,对应数码管2,分别对应芯片引脚35、36、37、38。BL0、BL1、BL2、BL3:显示B方得分情况中个位上的分值,对应数码管3分别对应芯片引脚39、47、48、49。BH0、BH1、BH2、BH3:显示B方得分情况中十位上的分值,对应数码管4,对应芯片引脚50、51、52、53。图9 目标芯片顶面图4.3系统的编译、综合、适配顶层文件元件连接PINGPANG.GDF,如图10所示,模块STATEMACHINE1是状态机/球台控制,当复位键为低电平时,若A方或B方开始发球,模块LIGHT的发光二极管L0、L1、L2、L3、L4在下降沿来临时正向或反向依次点亮,当有方得分时,将启动加分信号INCREASEA、INCREASEB,同时启动记分器模块COUNTER1,加分情况将通过四个数码管来显示,并将其反馈回状态机模块,当有一方先达到21时,其对应的胜分标志发光二极管将被点亮。在按键与CPLD相连的引脚需要设置下拉电阻3001000即可以便在没有按键按下时将输入也稳定在低电平,否则系统会不稳定。设置顶层文件:在编译系统文件PINGPANG.GDF之前,需要设置该文件为顶层文件Project。选择菜单FileProjectSet Project to Current File,当前的工程,即被设为PINGPANG。首先通过选择MAX+PIUS II Compiler菜单,进入编辑窗。2选择目标器件及锁定引脚:先选择用编程的目标芯片。选择菜单AssignDevice在弹出的对话框中的Device Family下拉栏中选择FLEX10,然后在Devices列表框中选择芯片型号EPF10K10-PLCC84,按OK。选择菜单Assign Pin/Location/Chip弹出一个对话框来设置引脚。在Pin右边的下拉栏中选择芯片引脚号,然后按下Add按钮,就会在下面的子窗口出现引脚设定说明语句,当前的一个引脚设置就加到了列表中。如果是总线形式的引脚名,也应分别写出总线中的每一个信号引脚设定,顶层文件引脚锁定文件为PINGPANG.PPN,如表3所示。图10 乒乓游戏机顶层文件连接图4.4系统的有关仿真1建立仿真波形文件:选择菜单FileNew对话框中选择Waveform Editor file,按OK后将出现波形编辑器子窗口。选择菜单NodeEnter Nodes from SNF,出现选择结点对话框。按右上侧的List按钮,左边的列表框将立即列出所有可以选择的信号结点,然后按中间的=按钮,将左边列表框的结点全部选中到右边的列表框。按OK按钮,选中的信号将出现在波形编辑器中12。其中有全部的输入信号CLK、RESET、STARTA、HITA、STARTB、HITB,输出信号L0、L1、L2、L3、L4、AL0 、AL1、AL2、AL3、AH0、AH1、AH2、AH3、BL0、BL1、BL2、BL3、BH0、BH1、BH2、BH3、AWIN、BWIN。最后通过菜单FileSave在弹出的窗口中将波形文件存在同一个目录下,文件取名为PINGPANG.SCF。2设置输入信号波形:波形观察左排按钮是用于设置输入信号的,使用时只要先用鼠标在输入波形上拖一个需要改变的黑色区域,然后单击左排相应按钮即可。其中0、 1、X、Z、INV、G分别表示低电平、高电平、任意、高电阻、反相和总线数据设置。时钟信号用鼠标点时钟信号的VALUE区域,可以将时钟信号选中。这时时钟信号的波形区域全都变成黑色,按集成环境左边上的时钟按钮,将出现时钟信号设置对话框,按下OK,即可设置时钟信号。按集成环境右边的缩小按钮,可以随小波形显示,以便在仿真时能够浏览波形全貌。根据需要将各输入信号进行设置,并保存。3运行仿真器进行仿真:选择菜单MAX+PIUSSimulator,按下Simulator,出现仿真参数设置与仿真启动窗。这时按一下该窗口中的Start按钮,即进行仿真运算,当仿真结果显示0 errors,0 warnings,表示仿真运算结束。仿真结果可以确认设计正确。本系统含有时钟信号,希望在不改变输入时钟信号周期的条件下,延长运算时间,所以进行下面设置:在波形编辑窗口打开的情况下,选择FileEND Time,在弹出的窗口中设置仿真结束时间,按OK按钮,选择菜单MAX+PLUSSimulator,在Simulator子窗口END Time处设置同一时间长度。然后启动仿真操作,结束后可观察仿真波形。如果在开始没有打开波形观察窗,可选择FileOpen,然后在弹出一名为Open的窗口中选择Waveform Editor file,并在Files窗口弹出的波形文件名PINGPANG.SCF上双击,即可进入波形观察窗,如图11所示。表3PINGPANG.PPN的设计过程设计实体I/O标记设计实体I/O来源/去向插座序号芯片可用资源序号序号RESET键1PIO0I/O05STARTA键4PIO3I/O38HITA键5PIO4I/O49STARTB 键7PI06 I/O611HITB键8PIO7I/O716AL0数码管1PIO16I/O1627AL1数码管1PIO17I/O1728AL2数码管1PIO18I/O1829AL3数码管1PIO19I/O1930AH0数码管2PIO20I/O2035AH1数码管2PIO21I/O2136AH2数码管2PIO22I/O2237AH3数码管2PIO23I/O2338BL0数码管3PIO24I/O2439BL1数码管3PIO25I/O2547BL2数码管3PIO26I/O2648BL3数码管3PIO27I/O2749BH0数码管4PIO28I/O2850BH1数码管4PIO29I/O2951BH2数码管4PIO30I/O3052BH3数码管4PIO31I/O3153L0D1PIO8I/O817L1D2PIO9I/O918L2D3PIO10I/O1019L3D4PIO11I/O1121L4D5PIO12I/O1222AWINBWIND7D8PIO14I/O1424PIO15I/O1525续表3设计实体I/O标记设计实体I/O来源/去向插座序号芯片可用资源序号序号CLKCLOCK0IN12图11 仿真波形图4.5系统的编程配置编程器型号的选择方法是启动Programmer,选菜单OptionHardware Setup,在Hardware Type下拉窗中选ByteBlaster,按OK即可。用鼠标双击编译器子窗口的下载图标,可调出编程器Programmer窗口。在将设计文件编程配置对此FPGA下载称为配置进硬件芯片前,需连接好硬件测试系统。将实验板接好,接好电源,一切准备就绪后,方可按下编程器窗口中的Configure按钮。可将所设计的内容下载到芯片中。下载成功后将在一弹出的窗口中显示Configuration Complete。接下来就可以在实验系统上进行实验验证:按模式选择键,使模式指示显示3,该模式电路结构图如图12所示8,然后按动键1、键4、键5、键7、键8输入相应信号,如果结果和仿真结果不一样,就要根据流程图进行检查并修改,直至验证结果与仿真一致。图12 实验电路结构NO.35结论本文进行乒乓游戏机软件设计,并用GW48实验箱进行验证,目标芯片是FLEX EPF10K10-PLCC84,本设计由状态机/球台控制器、记分器、译码显示器、按键去抖等模块组成。通过实验箱GW48模拟乒乓机,用发光二极管代表乒乓球台,最中间的发光二极管作球网,用点亮的发光二极管按一定方向移动来表示球的运动,用按钮设置发球和接球开关。最终实现乒乓机能模拟乒乓球比赛的基本过程和规则,并能自动裁判和记分。实验箱有8个二极管,本设计只用了5个发光当乒乓球台,还有2个当胜出信号。本设计可以再改进一下,把指示胜利2个发光二极管用数码管来代替,增加两个发光二极管当乒乓球台,这样球台就更大,双方会有更加充足的时间准备接球,这样不仅可以完成之前的功能,而且可以显示比赛的局数。参考文献1 边计年.用VHDL设计电子线路M.北京:清华出版社,2000:2.2 黄任.VHDL入门解惑经典实例经验总结M.北京:北京航天大学出版社,2005:3-5,115.3 尹常永.EDA技术/电子设计实验讲义M.XX:XX电子科技大学出版社,2004:3.4 杨刚.现代电子技术VHDL与数字系统设计M.北京:电子工业出版社, 2004:6.5 甘历.VHDL应用与开发实验M.北京:科学出版社,2003:4.6 侯伯亨.VHDL硬件描述语言与数字逻辑电路设计M.XX:XX电子科技大学出版社,1999:27.7 潭会生,张昌凡.EDA技术及应用M.XX:XX电子科技大学出版社,2004:81,233,256.8 王振红.VHDL数字电路设计与应用实践教程M.北京:机械工业出版社,2005:35,37.9 李宜达.数字逻辑电路设计与实现M.北京:科学出版社,2004:144.10王振红,张常年.综合电子设计与实践M.北京:清华大学出版社,2005:122.11 XX康芯电子.EDA技术实用教程M.北京:科学出版社,2004:17.12朱正伟.EDA技术及应用M.北京:清华大学出版社,2005:21-25.致谢在设计过程中,参考并借鉴了相关的参考文献,同时得到了张文老师和胡仲秋老师的悉心指导,还有蒋猛老师为我完成毕业设计论文提供方便,在此表示衷心的感谢。在整个设计过程中,我学到了很多东西。对MAX+PLUS软件的基础使用方法更加的熟悉,熟练掌握了数码管,GW48 EDA实验开发系统的基础使用方法,并加深对VHDL基本逻辑电路和状态机电路的综合设计应用。通过这次设计,加强了理论知识与实践统一的能力,提高了自己的动手操作能力,这对于我以后的工作和学习都是很有帮助的。由于自身水平有限,如有不足之处,请给予指正。.
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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