eda数字逻辑乒乓球比赛游戏机.docx
《eda数字逻辑乒乓球比赛游戏机.docx》由会员分享,可在线阅读,更多相关《eda数字逻辑乒乓球比赛游戏机.docx(14页珍藏版)》请在冰豆网上搜索。
![eda数字逻辑乒乓球比赛游戏机.docx](https://file1.bdocx.com/fileroot1/2022-10/8/3e8ff5e4-47c4-4cdb-97ce-d93e57f12b6a/3e8ff5e4-47c4-4cdb-97ce-d93e57f12b6a1.gif)
eda数字逻辑乒乓球比赛游戏机
湖南涉外经济学院
课程设计报告
课程名称:
EDA技术与应用
报告题目:
乒乓球比赛游戏机的设计
学生姓名:
所在学院:
专业班级:
学生学号:
指导教师:
2016年12月28日
课程设计任务书
报告题目
乒乓球比赛游戏机设计
完成时间
学生姓名
专业班级
指导教师
职称
总体设计要求和技术要点
1.任务及要求:
(1)设计一个由甲、乙双方参赛,有裁判的3人乒乓球游戏机。
(2)用8个LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。
(3)当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
若击中,则球向相反方向移动;若未击中,则对方得1分。
(4)一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。
(5)设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。
(6)甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。
(7)按《湖南涉外经济学院课程设计管理办法》要求提交课程设计报告。
工作内容及时间进度安排
第17周:
周1---周3:
立题、论证方案设计
周4---周5:
预答辩
第18周:
周1---周3:
仿真实验8
周4---周5:
验收答辩
课程设计成果
1.与设计内容对应的软件程序
2.课程设计总结报告
摘要
乒乓球运动是一项受大众非常喜爱的运动,它是一项集健身性,竞技性和娱乐性为一体的运动。
乒乓球是一项非常受大众喜欢的运动,几十年来,乒乓球运动在中国迅速兴起,很重要的原因就是对客观条件要求不高,随时随处就能玩起来。
乒乓球运动越来越多地被作为增强智力、提高工作效率以及保健、医疗和康复的极佳手段而引起各方面的重视。
如今,人们生活太忙碌,很多的人只能通过网络来玩乒乓球游戏,而乒乓球游戏机正好解决了人们的困扰。
它简单易行,只要简简单单几个手指的操作就能达到同样娱乐跟锻炼的效果。
关键字:
数显;频率;分频;计数器;状态机;
一、总体设计思想……………………………………………………………………1
1.基本原理…………………………………………………………2
二、设计步骤与调试过程……………………………………………………………2
1.总体设计电路…………………………………………………………2
2.模块设计与模块程序…………………………………………………………3
3.仿真结果分析………………………………………………………12
三、结论与心得………………………………………………………………………13
四、参考文献……………………………………………………………………13
一、总体设计思想
1.基本原理
用8个(或更多个)LED排成一条直线,以中点为界,两边各代表参赛双方的位置,其中一只点亮的LED指示球的当前位置,点亮的LED依此从左到右,或从右到左,其移动的速度应能调节。
当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。
若击中,则球向相反方向移动;若未击中,则对方得1分。
一方得分时,电路自动响铃3秒,这期间发球无效,等铃声停止后方能继续比赛。
设置自动记分电路,甲、乙双方各用2位数码管进行记分显示,每计满21分为1局。
甲、乙双方各设一个发光二极管,表示拥有发球权,每隔5次自动交换发球权,拥有发球权的一方发球才有效。
2.设计框图
1.1设计流程图
二、设计步骤和调试过程
1、总体设计电路
用8个发光二极管代表乒乓球台,在游戏机的两侧设置两个开关,一个是发球开关,一个是击球开关,甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。
当球过网后,乙方就可击球。
若乙方提前击球或没击中球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛。
使用VHDL进行电路系统设计,利用PLD来实现控制器的硬件电路
1.2乒乓游戏机的电路框图
2、模块设计和相应模块程序
系统各功能模块的实现
1、模块SEL的实现
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityselis
port(clk:
instd_logic;
sell:
outstd_logic_vector(2downto0));
endsel;
architecturesel_arcofselis
begin
process(clk)
variabletmp:
std_logic_vector(2downto0);
begin
if(clk'eventandclk='1')then
if(tmp="000")then
tmp:
="001";
elsiftmp="001"then
tmp:
="100";
elsiftmp="100"then
tmp:
="101";
elsiftmp="101"then
tmp:
="000";
endif;
endif;sell<=tmp;
endprocess;
endsel_arc;
2、模块CORNA的实现
LIBRARYIEEE;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycomais
port(clr,af,aj,bf,bj,clk:
instd_logic;
shift:
outstd_logic_vector(7downto0);
ah,al,bh,bl:
outstd_logic_vector(3downto0));
endcoma;
architecturecom_arcofcomais
signalamark,bmark:
integer;
begin
process(clr,clk)
variablea,b:
std_logic;
variableshe:
std_logic_vector(7downto0);
begin
ifclr='0'then
a:
='0';
b:
='0';
she:
="00000000";
amark<=0;
bmark<=0;
elsifclk'eventandclk='1'then
ifa='0'andb='0'andaf='0'then
a:
='1';
she:
="10000000";
elsifa='0'andb='0'andbf='0'then
b:
='1';
she:
="00000001";
elsifa='1'andb='0'then
ifshe>8then
ifbj='0'then
amark<=amark+1;
a:
='0';
b:
='0';
she:
="00000000";
else
she:
='0'&she(7downto1);
endif;
elsifshe=0then
amark<=amark+1;
a:
='0';
b:
='0';
else
ifbj='0'then
a:
='0';
b:
='1';
else
she:
='0'&she(7downto1);
endif;
endif;
elsifa='0'andb='1'then
ifshe<16andshe/=0then
ifaj='0'then
bmark<=bmark+1;
a:
='0';
b:
='0';
she:
="00000000";
else
she:
=she(6downto0)&'0';
endif;
elsifshe=0then
bmark<=bmark+1;
amark<=0;
bmark<=0;
elsifclk'eventandclk='1'then
ifa='0'andb='0'andaf='0'then
a:
='1';
she:
="10000000";
elsifa='0'andb='0'andbf='0'then
b:
='1';
she:
="00000001";
elsifa='1'andb='0'then
ifshe>8then
ifbj='0'then
amark<=amark+1;
a:
='0';
b:
='0';
she:
="00000000";
else
she:
='0'&she(7downto1);
endif;
elsifshe=0then
amark<=amark+1;
a:
='0';
b:
='0';
else
ifbj='0'then
a:
='0';
b:
='1';
else
she:
='0'&she(7downto1);
endif;
endif;
elsifa='0'andb='1'then
ifshe<16andshe/=0then
ifaj='0'then
bmark<=bmark+1;
a:
='0';
b:
='0';
she:
="00000000";
else
she:
=she(6downto0)&'0';
endif;
elsifshe=0then
bmark<=bmark+1;
endif;
endif;
endif;
al<=ala;
bl<=bla;
ah<=aha;
bh<=bha;
endif;
endprocess;
endcom_arc;
3、模块CH41A的实现
libraryieee;
useieee.std_logic_1164.all;
entitych41ais
port(sel:
instd_logic_vector(2downto0);
d0,d1,d2,d3:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(3downto0));
endch41a;
architecturech41_arcofch41ais
begin
process(sel)
begin
caseselis
when"100"=>q<=d0;
when"101"=>q<=d1;
when"000"=>q<=d2;
whenothers=>q<=d3;
endcase;
endprocess;
endch41_arc;
4、模块DISPA的实现
libraryieee;
useieee.std_logic_1164.all;
entitydispais
port(d:
instd_logic_vector(3downto0);
q:
out