乒乓球游戏机.docx
- 文档编号:18291942
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:16
- 大小:130.98KB
乒乓球游戏机.docx
《乒乓球游戏机.docx》由会员分享,可在线阅读,更多相关《乒乓球游戏机.docx(16页珍藏版)》请在冰点文库上搜索。
乒乓球游戏机
黑龙江科技学院
课程设计任务书
一、设计题目:
乒乓球游戏机
二、设计的主要内容:
比赛时甲乙双方各在不同的位置发球或击球;根据球的位置发出相应的动作,提前击球或出界均判失分;乒乓球的位置和移动方向有灯亮及依次点亮的方向决定,球移动的速度为0.1~0.5s移动一位;甲乙双方设置各自的记分牌,任何一方先记满21分该方就算胜了此局;当记分牌清零后,又可开始新的一局比赛。
指导教师:
日期:
教师评语:
评阅成绩:
评阅人:
日期:
摘要
VHDL是甚高速集成电路硬件描述语言。
目前,VHDL已成为许多设计自动化工具普遍采用的标准化硬件描述语言。
VHDL语言功能性强,覆盖面广,灵活性高,具有很好的实用性。
本文设计一个基于VHDL的乒乓游戏机,乒乓游戏机由状态机、记分器、译码显示器与按键去抖等部分所组成。
通过对各部分编写VHDL程序,然后进行编译、仿真、逻辑综合、逻辑适配,最后进行编程下载,并通过程序验证结果.
关键词:
VHDL,乒乓游戏机
第1章
乒乓球游戏机概述
1、乒乓球游戏机的总体框图如下图所示:
第2章乒乓球游戏机设计思想
2.1设计思路:
用8~16个发光二极管代表乒乓球台,在游戏机的两侧各设置两个开关,一个是发球开关,一个是击球开关。
甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。
当球过网后,按设计者规定的球位乙方就可以击球。
若乙方提前击球或没有击到球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛。
2.2片选信号产生模块
片选信号产生模块是用来产生数码管的片选信号,将产生的片选信号输送到数据转换模块,以便其对输入数据进行选择。
2.3核心模块
核心模块有两个功能,第一个是实现逻辑功能,即对甲方乙方的发球击球情况进行判断,然后再对双方谁得分进行记录;第二个是将整数得计分转换成十进制数,以便译码显示。
2.4数据转换模块
数据转换模块是将核心模块输送过来的数据通过片选信号对其进行选择,并将符合要求的数据输送出去。
2.5七段译码器
七段译码器用来将输入数据进行翻译,便于数码管显示出数据。
第3章功能模块
1、片选信号产生模块
上面模块为片选信号产生模块,用来产生数码管的片选信号。
CLK是扫描时钟信号接CLK5时钟信号源,A[2..0]是代表扫描片选地址信号SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低三位相连。
其VHDL程序如程序清单:
仿真波形如下所示:
波形分析:
当CLK的上升沿到达时,sell按照十进制数0、1、4、5、0变化,并且向端口外输出片选信号,符合设计模块的要求。
2、核心模块
COMA模块有两个功能,第一个是实现整个设计的逻辑功能,当游戏开始时,先通过CLR对整个系统进行清零,在输入CLK上升沿有效的条件下,甲方开始发球,在LED灯上从距离甲方最近的一个开始闪亮,并依次向乙方移动,再过了网后乙方就可以击球,若乙方击球成功,则球按原路返回,在再次过网后甲方就可击球,若甲击球成功,则按以上游戏一直进行下去,而若有一方击球失败则LED灯全部熄灭,并给对方在记分牌上记一分;倘若有一方发球失败,则给对方也在记分牌上记一分,当其中的一方记满21分时比赛结束,清零后可开始下一局。
第二个是将整数得计分转换为十进制数,便于译码显示。
当甲乙双方的记分低位到达9时使低位清零,同时使高位加1,以便正确地在数码管上显示得分。
CLR为乒乓球游戏清零键,接按键;AF为甲方发球控制键,接按键;AJ为甲方接球控制键,接按键;BF为乙方发球控制键,接按键;BJ为乙方接球控制键,接按键;CLK为控制乒乓球行进速度的时钟信号,接CLK0时钟信号源;SHIFT[7..0]为LED灯显示输出端,接8个LED显示灯;AH[3..0]为甲方记分的高位,AL[3..0]为甲方记分的低位,BH[3..0]为乙方记分的高位,BL[3..0]为乙方记分的低位,以上四位都在经过译码器译码后接8位共阴极数码显示管。
其VHDL程序如程序清单所示:
仿真波形如下:
波形分析:
CLR的低电平有效,其清零后,在CLK上升沿有效的条件下,甲方先发球,则LED灯显示十进制数80,即为二进制数10000000,乒乓球灯右移,波形图符合要求。
3.数据转换模块
数据转换模块在输入片选信号的作用下对核心模块输送过来的数据进行选择,并从输出端口进行输出。
其中sel[2..0]为输入片选信号,d0[3..0]、d1[3..0]、d2[3..0]、d3[3..0]分别为得分记录的数据,分别接甲方记分低位,甲方记分高位,乙方记分低位,乙方记分高位。
q[3..0]为被选中的数据,并向七段译码器输出。
其VHDL程序如程序清单所示:
仿真波形如下所示:
波形分析:
由上述波形图可以看出:
在输入片选信号的作用下,当sel为0时,q输出d2的数据,sel为4时,q输出d0的数据,sel为5时,q输出d1的数据,sel为其它数时,q输出d3的数据。
波形符合要求。
4、译码模块
此模块为数码管控制模块,功能是控制七段数码管对转换后的数字量进行显示,使其完成甲方和乙方各自得分记录显示。
其中D[3..0]接数据转换模块的输出端口,Q[6..0]连接七段扫描数码管的段输入a、b、c、d、e、f、g,利用其控制特性在数码管上显示出参加乒乓球游戏的甲乙双方各自的得分。
其VHDL程序如程序清单:
波形分析:
由上面仿真图可以看出,译码模块完成了对数据在数码管上正确地显示。
波形符合要求。
(注:
系统仿真、综合、下载:
在建立了波形文件、输入信号节点、波形参数、加输入信号激励电平并存盘之后,选择主菜单“MAX+plusII”中的仿真器项“Simulator”,弹出对话框之后单击“Start”进行仿真运算,完成之后就可以看到时序波形。
)
硬件实现:
通过对每一模块的仿真和下载,可以实现各个模块的逻辑功能,验证了各个模块的正确性。
五、总体设计电路图
1、总体电路原理图如下图所示:
2、整体工作情况:
sclk和clk分别接扫描时钟信号和时钟信号,其它端口接法如上所述,SEL产生片选信号并作用于数据转换模块CH41A,COMA为核心模块,实现逻辑功能,并且对数据进行数制转换。
CH41A将所选数据送到七段译码器模块DISPA,使得分在数码管上显示。
3.仿真结果:
结果分析:
由上述仿真波形可以知道,并且通过硬件实现知道整个电路完成了设计要求的任务
第4章程序清单
1、片选信号产生模块
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、核心模块
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;
a:
='0';
b:
='0';
else
ifaj='0'then
a:
='1';
b:
='0';
elseshe:
=she(6downto0)&'0';
endif;
endif;
endif;
endif;
shift<=she;
endprocess;
process(clk,clr,amark,bmark)
variableaha,ala,bha,bla:
std_logic_vector(3downto0);
variabletmp1,tmp2:
integer;
begin
ifclr='0'then
aha:
="0000";
ala:
="0000";
bha:
="0000";
bla:
="0000";
tmp1:
=0;
tmp2:
=0;
elseifclk'eventandclk='1'then
ifamark>tmp1then
ifala="1001"then
ala:
="0000";
aha:
=aha+1;
tmp1:
=tmp1+1;
else
ala:
=ala+1;
tmp1:
=tmp1+1;
endif;
endif;
ifbmark>tmp2then
ifbla="1001"then
bla:
="0000";
bha:
=bha+1;
tmp2:
=tmp2+1;
else
bla:
=bla+1;
tmp2:
=tmp2+1;
endif;
endif;
endif;
al<=ala;
bl<=bla;
ah<=aha;
bh<=bha;
endif;
endprocess;
endcom_arc;
3.数据转换模块
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、译码模块
libraryieee;
useieee.std_logic_1164.all;
entitydispais
port(d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(6downto0));
enddispa;
architecturedispa_arcofdispais
begin
process(d)
begin
casedis
when"0000"=>q<="0111111";
when"0001"=>q<="0000110";
when"0010"=>q<="1011011";
when"0011"=>q<="1001111";
when"0100"=>q<="1100110";
when"0101"=>q<="1101101";
when"0110"=>q<="1111101";
when"0111"=>q<="0100111";
when"1000"=>q<="1111111";
whenothers=>q<="1101111";
endcase;
endprocess;
enddispa_arc;
参考文献
[1]边计年.用VHDL设计电子线路[M].北京:
清华出版社,2000:
2.
[2]黄任.VHDL入门•解惑•经典实例•经验总结[M].北京:
北京航天大学出版社,2005:
3-5,115.
[3]尹常永.EDA技术/电子设计实验讲义[M].西安:
西安电子科技大学出版社,2004:
3.
[4]杨刚.现代电子技术—VHDL与数字系统设计[M].北京:
电子工业出版社,2004:
6.
[5]甘历.VHDL应用与开发实验[M].北京:
科学出版社,2003:
4.
[6]侯伯亨.VHDL硬件描述语言与数字逻辑电路设计[M].西安:
西安电子科技大学出版社,1999:
27.
……………
黑龙江科技学院
课程设计任务书
一、设计题目:
二、设计的主要内容:
指导教师:
日期:
教师评语:
评阅成绩:
评阅人:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乒乓球 游戏机