资源描述:
《eda课程设计-基于vhd语言的乒乓球游戏机设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、目录1项目名称、内容与要求………………………………………04页1.1设计内容…………………………………………………04页1.2具体要求…………………………………………………04页2系统整体架构(ArchitectureDescription)……………04页2.1设计思路…………………………………………………04页2.2系统原理(包含:框图等阐述与设计说明等内容)…04页3系统设计(含HDL或原理图输入设计)………………………05页3.1HDL代码…………………………………………………05页3.2系统整体电路图(或RTL级
2、电路图)…………………12页4系统仿真(SimulationWaveform)…………………………13页5FPGA实现(FPGAImplementation)………………………14页6总结(Closing)………………………………………………16页参考书目(Reference):…………………………………………16页一、项目名称、内容与要求二、系统整体架构(ArchitectureDescription)2.1设计思路根据系统设计的要求,乒乓球比赛游戏机的电路原理框图如下:三、系统设计(含HDL或原理图输入设计)3.1VH
3、DL代码比赛模块libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;--引用必要的库函数和包集合entitycompeteis--实体名为pingpongport(reset:instd_logic;clk_1:instd_logic;startbutton:instd_logic;--开始游戏输入端口serve:instd_logic_vector(1downto0);--发球输
4、入端口hit1,hit2,hit11,hit22:instd_logic;--甲和乙的击球输入端口light:outstd_logic_vector(1to8);sound:outstd_logic;--控制8个发光二极管的输出端口music_begin:outstd_logic;--控制音乐开始的输出端口counta,countb,countc,countd,counte,countf:outstd_logic_vector(3downto0));--2个用于控制4个7段译码器的输出端口endcompete;archit
5、ectureoneofcompeteistypepingpongis(waitserve,light1on,ballmoveto2,allow2hit,light8on,ballmoveto1,allow1hit);---设置7个状态,为枚举数据类型,记为pingpongsignalstate:pingpong;signali:integerrange0to8;signalcount1,count2,count3,count4,count5,count6:std_logic_vector(3downto0):="0000"
6、;---内部计数器,是4位二进制变量beginprocess(clk_1)beginif(clk_1'eventandclk_1='1')thenifcount1=1andcount5=1orcount2=1andcount6=1thenmusic_begin<='1';endif;if(reset='1')thenmusic_begin<='0';endif;endif;endprocess;process(clk_1)--状态机进程--clk_1作为敏感信号触发进程begin--进程开始ifreset='1'then-
7、-异步置位i<=0;count1<=0;count2<=0;count5<=0;count6<=0;elsifclk_1'eventandclk_1='1'then--当处于时钟inclock上升沿时ifcount1=10thencount1<=0;count5<=1;elsifcount1=1andcount5=1theni<=0;count1<=0;count5<=0;count3<=count3+1;count2<=0;count6<=0;elsifcount2=10thencount2<=0;count6<=1;e
8、lsifcount2=1andcount6=1theni<=0;count1<=0;count2<=0;count4<=count4+1;count5<=0;count6<=0;elsifcount3=4orcount4=4theni<=9;music_begin<=1;startbutton=’0’;