1、2系统整体架构2.1设计思路 根据系统设计的要求,乒乓球比赛游戏机的电路原理框图如下:图1乒乓球游戏机原理图3系统设计 3.1 系统整体电路图图2系统整体电路图3.2 VHDL 代码比赛模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; -引用必要的库函数和包集合entity compete is -实体名为pingpong port(reset:in std_logic; clk_1: startbutton: -开始游戏输入端口 se
2、rve:in std_logic_vector(1 downto 0); -发球输入端口 hit1,hit2: -甲和乙的击球输入端口 light:out std_logic_vector(1 to 8); -控制8个发光二极管的输出端口 music_begin:out std_logic;-控制音乐开始的输出端口 counta,countb:out std_logic_vector(3 downto 0); -2个用于控制4个7段译码器的输出端口end compete;architecture one of compete istype pingpong is (waitserve,ligh
3、t1on,ballmoveto2,allow2hit,light8on,ballmoveto1,allow1hit);-设置7个状态,为枚举数据类型,记为pingpong signal state:pingpong;signal i:integer range 0 to 8;signal count1,count2,count3,count4:std_logic_vector(3 downto 0):=0000; -内部计数器,是4位二进制变量begin process(clk_1) begin if(clk_1event and clk_1=1) then if count3=0001 or
4、 count4= then music_begin= end if; if(reset=)then 0 end if; end process; process(clk_1) -状态机进程 -clk_1作为敏感信号触发进程 begin -进程开始 if reset= then -异步置位 i=0;count1count2count3count4 -进程处于等待发球状态 case serve is when 01= i=1;state=light1on;10=8;=light8on;11i end case; when light1on= -进程处于第一盏灯亮状态 i=2; if hit2= i
5、 count1=count1+1;=waitserve; else state -进程处于第八盏灯亮状态=7; if hit1= count2 -进程处于球向乙移动状态 elsif i=2 then i=allow1hit; else ithen elsif i=7 then i -进程处于允许甲击球状态 then i else count2 -进程处于允许乙击球状态then i else count1 end case;end process;counta=count1;countb=count2; -进程处i信号控制发光二极管的亮暗light10000000when(i=1) else01
6、000000 when(i=2) else00100000 when(i=3) else00010000 when(i=4) else00001000 when(i=5) else00000100 when(i=6) else00000010 when(i=7) else00000001 when(i=8) else00000000 -其他情况所有发光二极管都暗end one;分频模块library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity division16 isport( cp: clk
7、_4:out std_logic );end division16;architecture division_body of division16 issignal count:std_logic_vector(3 downto 0);process(cp)if(cpevent and cp=if(count=1111)thencount);else=count+1;end if;clk_4end division_body;译码器部分 entity disp is port(d:in std_logic_vector(3 downto 0);q:out std_logic_vector(6
8、 downto 0);end disp; architecture disp_arc of disp is begin process(d) case d is when q0000000end case;end disp_arc;数码管选择LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux2 IS PORT(a,b: IN STD_LOGIC_VECTOR(6 downto 0);sel: IN STD_LOGIC;c:OUT STD_LOGIC_VECTOR(6 downto 0);END mux2;ARCHITECTURE exampl
9、e OF mux2 IS BEGIN PROCESS(sel)IF(SEL=)THEN c=a;ELSE=b;END IF;END PROCESS;END example;音乐模块(两只老虎)entity music is port ( music_begin: clk: music_out:end music;architecture music_body of music is constant m1:integer:=637;-955; constant m2:=587;-851; constant m3:=505;-758; constant m4:=468;-716; constan
10、t m5:=425;-639; constant m6:=379;-569; constant m7:=330;-506; constant m0: signal counter:integer range 0 to 67; signal count:integer range 0 to 1000; signal sub: signal carrier:std_logic; signal pat,pat1,pat2: process(clk) if(clkevent and clk= if(carrier= sub=count; else =sub-1; process(sub) if(sub
11、=0) then pat else carrier=pat; pat1 process(pat1) if(pat1event and pat1= pat2= not pat2; music_out=pat2; process(clk_4) if(clk_4event and clk_4= if(music_begin= counter=m0; when 1=m1; when 2= when 3=m2; when 4= when 5=m3; when 6= when 7= when 8= when 9= when 10= when 11= when 12= when 13= when 14= w
12、hen 15= when 16= when 17= when 18=m4; when 19=m4; when 20=m5; when 21= when 22= when 23= when 24= when 25= when 26= when 27= when 28= when 29= when 30= when 31= when 32= when 33=m6; when 34= when 35= when 36= when 37= when 38= when 39= when 40= when 41= when 42= when 43= when 44= when 45= when 46= w
13、hen 47= when 48= when 49= when 50= when 51= when 52= when 53= when 54= when 55= when 56= when 57= when 58= when 59= when 60= when 61= when 62= when 63= when 64= when 65= when 66= when 67= end case;end music_body;4系统仿真图3功能仿真波形图图4时序仿真波形图5结论及心得体会在大三第一学期课程即将接近尾声的时候,学院最后为我们安排了EDA课程设计,通过这次课程设计使我懂得了理论与实际相结
14、合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。总的来说,这次设计的数还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的
15、认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢!致 谢通过这一周的忙碌和学习,本次课程设计设计已接近尾声,作为一个大三的学生,由于经验的匮乏,难免有许多考虑不周全的地方,在这里衷心感谢指导老师的督促指导,以及一起学习的同学们的支持,让我按时完成了这次课程设计。在课程设计过程中,我遇到了许许多多的困难。在此我要感谢我的指导老师颜鲁薪老师给我悉心的帮助和对我耐心而细致的指导,我的课程设计较为复杂烦琐,但是颜鲁薪老师仍然细心地纠正图中的错误。除了敬佩颜鲁薪老师的专业水平以外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作,我才得以解决课程设计中遇到的种种问题。最后,再次向我的指导老师致以衷心的感谢!参考文献1 吴延海.EDA技术及应用. 西安:西安电子科技大学出版社,20122 罗映红.电子技术.北京:中国电力出版社,2010