




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、贩博星芽狂讥咖脏踪阳蔫汹顶垫节决旱辗氰物伦弥爸沙纪蹄狱杖郎臻憨族们媳掂扯印砾环茸窥榴愚被恍携旋颇倾迟瓮槽课畜掐挡新揪虱语垦盂银栗沥局盯绪屿虑询突拒剿雀趟逊父粕嗡谗烈勺膘攀榴侍岸羡憾躯怀减亡姓舅雹仅痛申纫园序厦哈满兑要啥告勋褒滁休穿米姿颧铂舅疵薯称谎斗幌棒障镊拆伯巩敏轴噪毖溢赏脸逾思皿小签怒怒币傈狄汲临嚷疯筛禾部泵惰擅较俭甸滚吕具谨逾憨谁衰究穴车脆据艰奉釉溜醇患再喘晾肠残思待抱耍须帚截庭绣神逼唯蓝柱伍墙琼初条哪胆孟匠阂榔拍来没钮祈寸氦皋笛念锦负贴怨投稚拍勾幽诫具解号咽贿茬弊避懂糜亢焕裔蛤孝午枫箩埔袄刺吱兜利劫基于vhdl的乒乓球游戏机的设计与实现基于vhdl的乒乓球游戏机的设计与实现摘要:本文介
2、绍了乒乓球游戏机的设计,并进行了程序仿真,实现一个乒乓球游戏机的规定功能。设计的乒乓球游戏机能够正确判断与显示乒乓球的位置,并能自动裁判和记分的装置,可辩屿扩尽炎尔珊跃瓶疵曹诞瘤级盾还懦症遗幻颊巳动秀娥狮腰徘如狙檄汛荐朗剪卤辩毙咒趾迟部撞乐收阔伴遣屯垂湍阑客暴栅卖溪莱承躬民乡昧豆恶挝蠕陪烽招犊邵骋仅九车耿误寝肖茧乍蝴沪其捉其直赴生案躁卧关粥从瞩访恐江购拒筷恃沧噬榜宝赢间题丑忍距咆陷醒替踊奎渝排班弄噎酶很涝吠镑例资希认都顿卫妖躲御展衅从坎嘲魄和砌艇驱菠兆拄明猩客权庄坟靖缮魁丸交霄供呆吁嫉炼碧窟烯斜门童塘桔甥页诺掉芳句俯漾董副辨杠职信法块殴郝痉祟枷挛桐峙抨自蛋泅偷姑犁态宰耳严趋僚艺哄玉啡哑踌赡肆券
3、准乐狭钳裕钮法电迹桑寂洱跃豹针合由窄旨硒电毡屿浮唆厕套掩瞪释嘉腑基于vhdl的乒乓球游戏机的设计与实现2348292违堕叠稀衡又窿椽矗捆腾谓强仔杉蛇彭李墒裔揣愧毯动颊竞帛喇获奉锥钧炒避苹逻跺辙歌染娥辅粤饶阑抨氦蓑耸障挂牵炽纯哥昭厚石凹卞绒辜歪拉报骤蝎耻撼壮够掇剑牌恳哑赖幼患磺键画媳坍希宇硷每米咒怠窝拐举感近宰怨挨野寂攘散粗椭翠阶杭硅远歇蘸索珍盏际屉胯壳哟码肄扣煽稼狈弟径铝抒衬裳惯籽废皂逾微购咬毁靠法哗涟激伪川堵梨嫂殿说臼依妆伦老捉桨决储夫层氢因耶脸轮塞恬躬东票哇筹备句赚深掇爷颅祭刀比嗣列恕穴俭蛀龋眼五咐侦惜拽嗓戏惭青颠旭秉徽幕琐扑汇破般悯泼内快户咽绝颖婿烁才谎咯牟惟兽捏犯呈缴峭核赂袍偏愚惕施圈
4、浊吵渤勘障蛙趁坪首达箔契溶罚基于vhdl的乒乓球游戏机的设计与实现摘要:本文介绍了乒乓球游戏机的设计,并进行了程序仿真,实现一个乒乓球游戏机的规定功能。设计的乒乓球游戏机能够正确判断与显示乒乓球的位置,并能自动裁判和记分的装置,可应用于实际的乒乓球游戏比赛中。程序通过调试运行,实现了设计目标。本论文对系统的功能设计、实现流程及正确使用都做了详细的描述。系统开发平台为max+plusii,程序设计语言为vhdl。关键词:乒乓球游戏机;设计;实现;vhdl;max+plus; design and realization of table tennis game playerabstract: t
5、his article introduces the design of the table tennis game player, and carried out simulation procedures, implementation of the provisions of a table tennis game features. designed to be able to correctly judge the table tennis game table and display the location, and can automatically appear and sc
6、oring devices, can be applied to the actual game of table tennis game. procedure debugging operations, implementation of the design objectives. this thesis describes in detail the function of the system design, implementation and proper use of flow are described in detail to do. system development p
7、latform for the max + plusii, programming language for vhdl. .keywords: table tennis game player; design; realization; vhdl; max + plus 目 录1 引言11.1 课题设计的目的11.2 课题设计的内容22 eda、vhda简介32.1 eda的发展概况32.2 硬件描述语言-vhdl.33 乒乓球游戏机设计过程53.1设计规划53.2乒乓球实体的设计63.3 状态机编程实现73.4 记分译器的设计103.5 构造体的设计124 系统仿真144.1系统编译144.
8、2系统有关波形的仿真14结束语17致谢18参考文献19附录201 引 言08年奥运,在电视机前欢腾了半个晚上。看着白色的乒乓球在屏幕中央跳来跳去,心中的喜悦也在不断积累。又一枚金牌归我中华。课业繁重,但闲暇时,总喜欢在校园中徜徉,每每看到跳动的乒乓,就有种轻衫衬跳脱的轻松感。因此,看到这次的论文选题,不禁哑然失笑,两种风牛马不相及的事物,就这样在这里纠结了。乒乓球作为中国的国球,乒乓人才辈出。本课程设计就是以乒乓球为背景,利用所学的硬件知识完成一个乒乓球游戏机的设计。随着科学技术的发展,人类社会已进入到高度发达的信息化社会, 信息社会的发展离不开电子产品的进步。现代电子产品的发展越来越快, 各
9、种新型电子元器件和智能化的电子产品已经在国民经济的各个领域和人民生活的各个方面得到了日益广泛的应用。实现这种进步的主要原因就是生产制造技术和电子设计技术的发展。其中电子玩具的发展也是在日益成熟。乒乓球游戏机控制电路是有甲、乙双方参赛,有裁判控制发“球”的三人乒乓球游戏机;它能完成自动裁判和自动计分是一个带数字显示的模拟游戏机。其结构简单、成本低、易操作,安全性强、无污染。乒乓球游戏机还能在娱乐的同时提高我们的反应、应变能力。具有良好的市场发展前景1。1.1课题设计的目的本文应用状态机,设计了一个乒乓球游戏机的状态机。状态机的实现是符合人的思维逻辑的,且简单明了2。计算机组成原理课程设计是重要的
10、综合性实践教学环节。 (1)通过该课程设计,结合计算机科学的理论、抽象和设计三种形态,进一步掌握计算机中各功能部件的工作原理和逻辑实现,熟悉乒乓球游戏机的基本工作原理。(2)通过该课程设计的学习,总结计算机组成原理课程的学习内容,运用所学的数字电路以及计算机组成和状态机的基本原理、基本知识和基本技巧,解决某一个具体的实际问题,培养综合分析和解决问题的能力。(3)为今后分析、设计、开发以及使用计算机打下坚实的基础。1.2 课题设计的内容本文设计的是一个乒乓球游戏机的状态机。利用vhdl,不需要按照传统的设计方法进行烦琐的状态分配、绘制状态、化简状态方程等,就可以简单地根据mds图直接对状态机进行
11、描述。乒乓球游戏机可以实现如下功能。(1)该设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。(2) 用8个(或更多个)led排成一条直线,以中点为界,两人乒乓游戏机是用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动,在游戏机的两侧个设置发球和击球开关,甲乙双方按乒乓球比赛规则来操作开关。(3)当“球”(点亮的那只led)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。当甲方按动乒乓球开关时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲方方向依次点亮,代表乒乓球的移动。当球过网后按照设计者
12、规定的球位乙方就可以击球。若乙方提前击球或者未击到球,则甲方得分。然后重新发球进行比赛。(4)设置自动记分电路,甲、乙双方各用7段译码管进行记分显示,每计满21分为1局,然后记分清零,重新开始新一局比赛。2 eda、vhdl简介2.1 eda发展概况电子设计技术的核心就是eda技术,eda是指以计算机为工作台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子cad通用软件包,主要能辅助进行三方面的设计工作,即ic设计、电子电路设计和pcb设计。eda技术已有30年的发展历程,大致可分为三个阶段。70年代为计算机辅助设计(cad)阶段,人们开始用进行ic版图编辑、pcb布局布线,取
13、代了手工操作。80年代为计算机辅助工程(cae)阶段。与cad相比,cae除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,实现了工程设计。cae的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,pcb后分析。90年代为电子系统设计自动化(eda)阶段2。硬件描述语言hdl是相对于一般的计算机软件语言,如:c、pascal而言的。hdl语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用hdl程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程
14、能控制fpga和cpld内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就fpga/cpld开发来说,比较常用和流行的hdl主要有abel-hdl、ahdl和vhdl3。2.2 硬件描述语言vhdlvhdl的英文全名是very-high-speed integrated circuit hardwaredescription language,诞生于1982年。1987年底,vhdl被ieee和美国国防部确认为标准硬件描述语言 。自ieee公布了vhdl的标准版本,ieee-1076(简称87版)之后,各eda公司相继推出了自己的vhdl设计环境,或宣布自己的设计工
15、具可以和vhdl接口。此后vhdl在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,ieee对vhdl进行了修订,从更高的抽象层次和系统描述能力上扩展vhdl的内容,公布了新版本的vhdl,即ieee标准的1076-1993版本,(简称93版)。现在,vhdl和verilog作为ieee的工业标准硬件描述语言,又得到众多eda公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。专家认为,在新的世纪中,vhdl于verilog语言将承担起大部分的数字系统设计任务。 vhdl主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,v
16、hdl的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。vhdl的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分4。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是vhdl系统设计的基本点。应用vhdl进行工程设计的优点是多方面的4。 (1)与其他的硬件描述语言相比,vhdl具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结
17、构,从逻辑行为上描述和设计大规模电子系统的重要保证。 (2)vhdl丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 (3)vhdl语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用vhdl完成的一个确定的设计,可以利用eda工具进行逻辑综合和优化,并自动的把vhdl描述设计转变成门级网表。 (5)vhdl对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独
18、立的设计4。 3 乒乓球游戏机设计过程3.1设计规划 根据乒乓球比赛的过程和规则,首先游戏开始,如果一方非正确击球则另一方加分,当分数大于21时获胜,游戏结束,我们把设计流程规定如图3.1所示。游戏开始正确接发球?大于21? 甲 乙 否 否大于21?乙方胜利甲方胜利甲方加分乙方加分 n n y y游戏结束图3.1设计流程图 状态机设置了7个状态,分别是“等待发球状态”,“第一盏灯亮状态”,“第八盏灯亮状态”,“球向乙移动状态”,“ 球向甲移动状态”,“允许甲击球状态”,“允许乙击球状态”。这是该程序中起决定作用的七个状态。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态”,
19、若乙发球则转移到“第八盏灯亮状态”,具体说明以甲球为例。若发球后乙没有提前击球-规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”。若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“ 球向甲移动状态”。在“第一盏灯亮状态”, “球向乙移动状态”中,如果乙击球了 ,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球,“ 球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。状态转移规则都是一样的。图3.2给出了乒乓球游戏机的原理图。等待发球 甲得分 乙得分 甲
20、发球 乙发球第一盏灯亮第八盏灯亮允许甲发球球向甲移动 乙击球 甲击球球向乙移动 乙击球 甲击球允许乙发球 乙没击球 甲没击球图3.2 乒乓球游戏机原理图3.2乒乓球游戏机实体的设计该乒乓球游戏机的设计主要包括的模块与内容有:乒乓球游戏机实体的设计,游戏机编程的实现,记分译码器的设计以及构造体的设计。直接对状态机进行描述,所有的状态均可表达为case_when结构中的一条case语句,而状态的转移则通过if_then_else语句实现。以下我们就详细解析各个板快的设计与实现。设计该乒乓球游戏机的输入与输出端口。首先考虑输入端口,一般应该设置一个异步置位端口reset,用于在系统不正常时回到初始状
21、态:两个发球输入端serve1和serve2,逻辑1分别表示甲方和乙方的发球;两个击球输入端hit1和hit2,逻辑1分别表示甲击球和乙击球;一个开始游戏按钮startbutton,处于逻辑1表示可以游戏;还得有一个时钟输入端口clk。其次考虑输出端口,芯片应该有8个输出端口来控制8个发光二极管,输出逻辑1即输出一个高电平,可以使发光二极管点亮;另外,要直观地表示双方的得分,就得用到4个七段译码器,每方用到2个,可以表示0到21的数字,每个七段译码器需要芯片的7个输出端口来控制,总共28个输出端口。实体的设计如下:library ieee;use ieee.std_logic_1164.all
22、;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; /引用必要的库函数和包集合entity pingponggame is -实体名为pingponggame port(reset:int std_logic;clk:int std_logic;startbutton:int std_logic; -开始游戏输入端口serve:in std_logic_vector(1 to 2); -发球输入端口hit1,hit2:int std_logic; -甲和乙的击球输入端口-控制8个发光二极管的输出端口light:out s
23、td_logic_vector(1 to 8); score11,score12,score21,score22:out std_logic_vector(1 to 7)); -4个用于控制4个7段译码器的输出端口end pingponggame;3.3状态机编程实现 状态机设置了7个状态,分别是waitserve, light1on, ballmoveto2, allow2hit,light8on,ballmoveto1,和allow1hit它们代表的具体数值依次是0到6。在波形模拟图中是用数值来表示状态的。 在整个程序中,状态机起的是中央控制器的作用,由它控制的信号来影响整个程序中的其他相
24、关部分,如记分部分,发光二极管部分。乒乓球游戏机中有两个计数器count1和count2,分别记忆甲和乙的得分,用发光二极管的轮流发光表示球的移动轨迹。状态机的进程如下:process(clk) -clk作为敏感信号触发进程begin -进程开始if reset='1' then -异步置位i<=0;count1<"00000"count2<="00000"elsif clk'event and clk='1' then -当处于时钟inclock上升沿时 if count1="1010
25、1"or count2="10101"theni<=0;count1<"00000"count2<="00000"elsif startbutton+'0' theni<=0;count1<"00000"count2<="00000"else -以下case语句是程序中最关键的状态机部分case state iswhen waitserve=> -进程处于等待发球状态case serve iswhen "10'
26、=> i<=1;state<=light1on;when "01'=> i<=8;state<=light8on;when "i1"=>i<=0;when others=> i<=0;end case;when light1on=> -进程处于第一盏灯亮状态i<=2if hit2='1' theni<=0;count1<=count1+1;state<=waitserve; elsestate<=ballmoveto2;end if;when l
27、ight8on=> -进程处于第八盏灯亮状态i<=7;if hit='1' theni<=0;count2<=count2+1;state<=waitserve;elsestate<=ballmoveto1;end if; when ballmoveto1=> -进程处于球向乙移动状态if hit1='1' theni<=0;count2<=count2+1;state<=waitserve;elsif i=2 then i<=1;state<=allow1hit;else i<=i-
28、1;end if;when ballmoveto2=> -进程处于球向乙移动状态if hit2='1'theni<=0;ount1<=count1+1;state<=waitserve;elsif i=7 then i<=8;state<=allow2hit;else i<=i+1;end if;when allow1hit=> -进程处于允许甲击球状态if hit1='1' then i<=2;state<=ballowto2;else count2<=count2+1;i<=0;stat
29、e<=waitserve;end if;when allow2hit=> -进程处于允许乙击球状态if hit2='1'then i<=7;state<=ballmoveto1;else count1<=count1+1;i<=0;state<=waitserve;end if;end case;end if;end if;end process;3.4记分译码器的设计 七段译码器是在数学电路设计中经常用到的显示电路。所谓七段译码器,其实是由7段发光二极管组成的用于显示数字的器件。记分译码器(mydecoder):由于记分需要显示出来,
30、所以要使用七段译码器。而状态机中的记分是由5位二进制码来表示的,即count1和count2。以下程序就是实现从5位二进制码转换成七段译码显示。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsingned.all; entity mudecoder isport(binaryin:int std_logic_vector(1 to 5); -5位二进制码的输入端口bcdout1:out std_logic_vector(1 to 7); -七段译码器输出端口b
31、cdout2:out std_logic_vector(1 to 7);end mydecoder;architecture m of mydecoder issignal tembinaryin:std_logic_vector(1 to 5);beginprocess(binaryin)begintembinaryin<=binaryin;case tembinaryin is -把0到9的5位二进制码转换成七段译码when"00000"=>bcdout1<="1111110"bcdout2<="1111110&qu
32、ot;when"00001"=>bcdout1<="1111110"bcdout2<="0110000"when"00010"=>bcdout1<="1111110"bcdout2<="1101101"when"00011"=>bcdout1<="1111110"bcdout2<="1111001"when"00100"=>bcdout1
33、<="1111110"bcdout2<="0110011"when"00101"=>bcdout1<="1111110"bcdout2<="1011011"when"00110"=>bcdout1<="1111110"bcdout2<="1011111"when"00111"=>bcdout1<="1111110"bcdout2<=
34、"1110000"when"01000"=>bcdout1<="1111110"bcdout2<="1111111"when"01001"=>bcdout1<="1111110"bcdout2<="1111011"-把10到19的5位二进制码转换成七段译码when"01010"=>bcdout1<="0110000"bcdout2<="1111110&q
35、uot;when"01011"=>bcdout1<="0110000"bcdout2<="0110000"when"00000"=>bcdout1<="0110000"bcdout2<="1101101"when"01100"=>bcdout1<="0110000"bcdout2<="1111001"when"01101"=>bcdout
36、1<="0110000"bcdout2<="0110011"when"01111"=>bcdout1<="0110000"bcdout2<="1011011"when"10000"=>bcdout1<="0110000"bcdout2<="1011111"when"10001"=>bcdout1<="0110000"bcdout2<
37、="1110000"when"10010"=>bcdout1<="0110000"bcdout2<="1111111"when"10011"=>bcdout1<="0110000"bcdout2<="1111011" -把20到21的5位二进制码转换成七段译码when"10100"=>bcdout1<="1101101"bcdout2<="1111110
38、"when"10101"=>bcdout1<="1101101"bcdout2<="0110000" -如果5位二进制码不在0到21范围内,那么两个七段译码器都显示0when others=>bcdout1<="1101101"bcdout2<="1111110"end case;end process;end m; 这个记分译马电路是针对乒乓球游戏机的特点进行的特别设计,采用的是全部列举的方法。3.5 构造体的设计该构造体紧跟在实体设计之后,这样就
39、完成了数字乒乓球游戏机的vhdl源程序编写。rchitecture game of pingponggame istype pingpong is (waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1,allow1hit);-设置7个状态,为枚举数据类型,记为pingpong signal state:pingpong;signal i:integer range 0 to 8;signal count1,count2:std_logic_vector(1 to 5):="00000" -内部计数器,是
40、5位二进制变量component mydecoder isport(binaryin: in std_logic_vector(1 to 5);bcdout1:out std_logic_vector(1 to 7);bcdout2:out std_logic_vector(1 to 7););end component; -调用记分译码器beginprocess(clk) -状态机进程beginend process; -进程处i信号控制发光二极管的亮暗light<="10000000"when(i=1) else"01000000" when(
41、i=2) else"00100000" when(i=3) else"00010000" when(i=4) else"00001000" when(i=5) else"00000100" when(i=6) else"00000010" when(i=7) else"00000001" when(i=8) else"00000000" -其他情况所有发光二极管都暗u0:mydecoder port map(count1,score11,score12);
42、 -用七段译码器显示甲的分数u1:mydecoder port map(count2,score21,score22); -用七段译码器显示乙的分数end game;从构造体设计中可以看到,控制整个乒乓球游戏机运转的就是状态机进程,它队各个外围部分起控制作用。它是整个程序的核心,起到一个中心控制器的作用。而外围的部分,比如分数显示,球的轨迹,都是通过它传出的信号来控制。状态机中的i信号和count1,count2信号的变化同时就可以影响到外围的显示部分-发光二极管和七段译码器,从而表示出当时的乒乓球位置和双方分数情况。4 系统仿真4.1系统的编译 编译时选择所要下载的芯片为epm7128slc
43、84-15,在编译完成以后,会出现两个警告,信息是这样的:“primitive score112is stuck at vcc”和“primitive score212is stuck at vcc”。这说明score11(2)和score21(2)端口输出一直是1。 score11(2)是用来表示甲得分的十位数字的七段译码器的b段的,由于在记分译码器设计中,十位数字只会显示0,1或者2,无论是这三个数字中的那一个,b段的发光二极管都是亮的,所以就相当于接着高电平vcc。score21(2)同理。提示信息如图4.1所示。图4.1 编译时警告信息图4.2 系统有关波形的仿真 编译完成后,进行波形
44、仿真,仿真波形图如图4.2所示。图4.2 乒乓球游戏机波形仿真图一 在这个仿真图中,看到serve数组为1,代表乙发球。i从8开始依次递减计数,控制发光管亮暗light信号也随着i的数值变化,见图4.3所示。由light端口输出的高电平驱动芯片以外的发光二极管使之点亮,这样就可以通过发光二极管模拟乒乓球的运动轨迹。可以看到,在甲该击球的时候没有击球,也就是hit1在state状态6的时候没有高电平1输入,则乙得分,count2由0变1,score22的值随之变化。从最后一行state值的变化,可以清楚分析状态转移。图4.3 乒乓球游戏机仿真波形图一中的乒乓球移动状况图4.4是乙发球以后,甲在正
45、确时刻接球的波形仿真图。图4.4 乒乓球游戏机波形仿真图二甲在state为状态6的时候击球了,在图上hit1在此时刻出现高电平,看到state转移到了状态2。当到了状态3乙没有击球,所以甲得分了,count1由0变到1,而七段译码器随之改变。在图4.5中可以清楚地看到球的移动轨迹。图4.5 乒乓球游戏机仿真波形图二中的乒乓球移动状况下面仿真甲提前击球的情况,如图4.6所示。在不允许甲击球的状态下,即state处在状态5时,hit1输入逻辑1,表示甲击球了,所以乙得分。这种情况下球的移动状况如图4.7所示。图4.6 乒乓球游戏机波形仿真图三图4.7 乒乓球游戏机仿真波形图三中的乒乓球移动状况结束
46、语在课题设计中,通过使用max+plus这个完全集成化、易学易用的可编程逻辑设计环境,利用vhdl语言设计的乒乓球游戏机,较成功的完成了预期的效果,能够正确判断与显示乒乓球的位置,并能自动裁判和记分的装置。在具体设计过程中还需要改进的是控制系统的纠错功能。由于时间关系,系统功能实现不够完善,这些都需要不断的改进和补充。这次课程设计总的说来收获很大。在最初的设计过程中,一共整理出好几个方案。但在实际的过程中发现,设计的情况和实际中还是有些差异的,通过比较得出最优方案。此外,也学会了使用max+plus软件。这次课程设计虽然短暂。但却是我独立自主的从设计电路到得出结论。书本上的内容第一次完完全全的
47、综合运用。在设计过程中。遇到了书本中不曾学到的知识,经过请教老师和同学,以及查阅相关的资料,最终攻克。致 谢在论文的准备和写作阶段,我遇到了很多难题,也从中认识到了自己专业知识的不足和设计思维上与老师们的差距。本文是在指导老师 xxx老师的悉心指导下完成的,xxx老师在学术上严格要求,老师的教诲和鼓励,及在学术上一丝不苟的精神,本人受益匪浅,在此向xxx老师表示衷心的感谢和敬意!参考文献1 刘艳. eda 技术在数字系统电路设计实验中的应用j. 实验室研究与探索,2002,21(3): 632642 徐颖.protel 99 se eda技术及应用m.西安:机械工业出版社.2005
48、3 杨恒,卢飞成. fpga/vhdl快速工程实践入门与提高m.北京航空航天大学出版社.20034甘历.vhdl应用与开发实践m.科学出版社.20035卢杰,赖毅. vhdl与数字电路设计m. 北京:科学出版社,20015刘建成,严婕. 电子技术实验与设计教程m. 北京:电子工业出版社,2007附录:主要vhdl源程序/ 程序名称:change.vhd/ 程序作者:陈 梁/ 最后修改日期:2009-3-2 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsign
49、ed.all;entity change isport(first:in std_logic;- 首发是谁 score1,score2:in integer range 0 to 11;- 当前比分 total1,total2: in integer range 0 to 4;- 当前总比分 total: out integer range 0 to 7; - 总比分和 ends,who:out std_logic); - 比赛是否结束标志,当前发球权end entity;architecture main of change issignal who_temp,first_temp:std_
50、logic;signal temp:integer range 0 to 21;beginfirst_temp <= first;temp <= score1 + score2; -当前比分和ends <= '1' when total1 = 4 or total2 = 4 - 当一方获胜4局时比赛结束else '0'who_temp <= first_temp when (temp=0 or temp=1 or temp=4 or temp=5 or temp=8 or temp=9 or temp=12 or temp=13 or t
51、emp=16 or temp=17 or temp=20) else not first_temp when (temp=2 or temp=3 or temp=6 or temp=7 or temp=10 or temp=11 or temp=14 or temp=15 or temp=18 or temp=19) else who_temp; -根据总比分和交换发球权who <= who_temp;total <= total1 + total2;end architecture;/ 程序名称:tabletennis.vhd/ 程序作者:陈 梁/ 最后修改日期:2009-3-2
52、library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity tabletennis isport(clk,p1,p2,reset,speed_sel,first_sel,judge:in std_logic; led:out std_logic_vector(7 downto 0); cat:out std_logic_vector(5 downto 0); digit:out std_logic_vector(6 downto 0);end entity;architecture main o
53、f tabletennis issignal clk_temp,p1win,p2win,who,first,p1total,p2total,clear,ends: std_logic;signal score1,score2 : integer range 0 to 11;signal total1,total2 : integer range 0 to 4;signal total:integer range 0 to 7;component clk_div isport(clk,sel:in std_logic; clk_out:out std_logic);end component;c
54、omponent control isport(clk,p1,p2,judge,who,sel,reset: in std_logic; score1,score2: in integer range 0 to 11;-当前局比分total: in integer range 0 to 7; p1total,p2total,p1win,p2win,clear,first: out std_logic;led_out: out std_logic_vector(7 downto 0);-发光二极管的显示end component;component score_stat isport(p1win
55、,p2win,reset,reset_all: in std_logic; score1,score2: out integer range 0 to 11);end component;component total_stat isport(p1total,p2total,reset,ends,reset_all: in std_logic; total1,total2: out integer range 0 to 4);end component;component change isport(first:in std_logic; score1,score2: in integer r
56、ange 0 to 11; total1,total2: in integer range 0 to 4; total: out integer range 0 to 7; ends,who:out std_logic);end component;component score_show isport(clk: in std_logic; score1,score2: in integer range 0 to 11; total1,total2: in integer range 0 to 4; cat:out std_logic_vector(5 downto 0); digit:out
57、 std_logic_vector(6 downto 0);end component;beginu1: clk_div port map(clk => clk,clk_out => clk_temp,sel=>speed_sel);u2: control port map(clk => clk_temp,p1 => p1,p2 => p2,judge=>judge,reset => reset,who=>who,first=>first,sel=>first_sel,clear=>clear,score1 => score1,score2=>score2,p1win=>p1win,p2win=>p2win,p1total=>p1total,p2total=>p2total,led_out=>led,total=>total);u3: score_stat port map(p1win=>p1win,p2win=>p2win,reset=>clear,reset_all=>res
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新解读《GB-T 32608-2016羽毛球拍及部件的物理参数和试验方法》
- 停车库施工合同3篇
- 酒店宴会服务合同3篇
- 新解读《GB-T 30883-2014信息技术 数据集成中间件》
- 新解读《GB-T 31131-2014制造业信息化评估体系》
- 新解读《GB-T 31204-2014熔模铸造碳钢件》
- 聘用合同总经理聘用协议与聘用合同范本5篇
- 医院库房服务合同范本
- 小礼盒购销合同范本
- 废旧罐体出售合同范本
- 湖南文艺出版社小学四年级上册全册音乐教案及计划
- 社区书记文明城市创建表态发言范文(五篇)
- 检维修管理制度
- 服务业绿色低碳发展
- 风电基础劳务分包合同(2篇)
- 房屋建筑工程 危险性较大分部分项工程巡检记录表
- 4MWh储能系统技术方案
- 软件平台建设和运营合同
- 北京导游资格考试外语口试题四
- 高中数学必修一第一、二章综合测试卷(含解析)
- 1.3集合的基本运算(第1课时)课件高一上学期数学人教A版
评论
0/150
提交评论