乒乓球游戏机设计已审核文档格式.docx
- 文档编号:19822048
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:19
- 大小:726.80KB
乒乓球游戏机设计已审核文档格式.docx
《乒乓球游戏机设计已审核文档格式.docx》由会员分享,可在线阅读,更多相关《乒乓球游戏机设计已审核文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
B击球
允许B击球
允许A击球
第一盏灯亮
第八盏灯亮
球向B移动
球向A移动
准备发球
A得分
B得分
三、选择器件
1、装有QuartusII软件的计算机一台。
2、EDA实验箱一个
(1)7段数码显示管。
(2)8个LED灯。
(3)芯片:
使用Altera公司生产的Cyclone系列芯片,选用EP1C12Q240C8片。
3、下载接口是数字芯片的下载接口(JTAG)主要用于FPGA芯片的数据下载
Cyclone的性能特性:
Cyclone器件的性能足以和业界最快的FPGA进行竞争。
CycloneFPGA内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:
(1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
(3)FPGA内部有丰富的触发器和I/O引脚。
(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
(5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
四、功能模块
(一)控制模块:
是该电路的核心模块有两个功能能
a)是实现整个设计的逻辑功能,当游戏开始时,先通过CLR对整个系统进行清零,在输入CLK上升沿有效的条件下,甲方开始发球,LED灯从距离甲方最近的一个开始闪亮,并依次向乙方移动,过了网后乙方就可以击球,若乙方击球成功,则球按原路返回,再次过网后甲方就可击球,若甲击球成功,则按以上游戏一直进行下去,若有一方击球失败或提前击球则LED灯全部熄灭,对方在记分牌上自动记一分;
当其中的一方记满21分时比赛结束,清零后可开始下一局。
b)是将整数计分转换为十进制数,便于译码显示。
当甲乙双方的记分低位到达9时使低位清零,同时使高位加1,以便正确地在数码管上显示得分。
CLR为乒乓球游戏清零键,af为A方发球控制键,aj接球键;
bf为乙方发球控制键,bj接球键;
CLK为控制乒乓球行进速度的时钟信号,接50MHZ时钟信号源;
SHIFT[7..0]为LED灯显示输出端,接8个LED显示灯;
ah[3..0]为甲方记分的高位,al[3..0]为甲方记分的低位,bh[3..0]为乙方记分的高位,bl[3..0]为乙方记分的低位,以上四位都要经过译码器译码后接8位共阴极数码显示管。
图2控制模块
●VHDL程序
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(clk,clr)
variablea,b:
std_logic;
variableshe:
std_logic_vector(7downto0);
begin
ifclr='
0'
then
a:
='
;
b:
she:
="
00000000"
amark<
=0;
bmark<
elsifclk'
eventandclk='
1'
ifa='
andb='
andaf='
10000000"
elsifa='
andbf='
then
00000001"
then
ifshe>
8then
ifbj='
=amark+1;
else
&
she(7downto1);
endif;
elsifshe=0then
ifshe<
16andshe/=0then
ifaj='
=bmark+1;
=she(6downto0)&
'
shift<
=she;
endprocess;
process(clk,clr,amark,bmark)
variableaha,ala,bha,bla:
std_logic_vector(3downto0);
variabletrap1,tmp1,tmp2:
aha:
0000"
ala:
bha:
bla:
tmp1:
tmp2:
ifamark>
tmp1then
ifala="
1001"
=aha+1;
=trap1+1;
=ala+1;
=tmp1+1;
ifbmark>
tmp2then
ifbla="
=bha+1;
=tmp2+1;
=bla+1;
al<
=ala;
bl<
=bla;
ah<
=aha;
bh<
=bha;
endcom_arc;
●波形仿真
●
波形分析:
CLR的低电平有效,其清零后,在CLK上升沿有效的条件下,甲方af先发球,则LED灯显示十进制数80,即为二进制数10000000,乒乓球灯右移,波形图符合要求。
(二)
图3分频器模块
分频器:
其实是一个计数器。
在此设计中主要功能是用于让乒乓球的移动速度为0.5S移动一位。
端口说明CLK输入OUTCLOK输出。
VHDL程序
LIBRARYieee;
ENTITYdivIS
port(
clk:
instd_logic;
outclk:
outstd_logic);
enddiv;
ARCHITECTUREoneOFdivIS
process(clk)
variablecnt:
integerrange0to15000000;
variabletmp:
begin
if(clk'
)then
ifcnt>
=14999999then
cnt:
tmp:
=nottmp;
=cnt+1;
endif;
outclk<
=tmp;
endone;
波形仿真
●波形分析:
CLK输入50MHZ的脉冲信号,经分频OUTCLK输出2HZ的脉冲式乒乓球以0.5/S的数度运动符合要求。
(三)SEL模块:
片选信号产生模块,用来产生数码管的片选信号。
图4SEL模块
其与数据转换模块的对应关系如下表所示:
表1
接口序号
数据转换模块
SEL2
SEL1
SEL0
选择数据
d2
1
d3
d0
d1
CLK是扫描时钟信号接50MHZ时钟信号源,A[2..0]是代表扫描片选地址信号SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低三位相连。
entityselis
port(clk:
sell:
outstd_logic_vector(2downto0));
endsel;
architecturesel_arcofselis
process(clk)
std_logic_vector(2downto0);
ifclk'
iftmp="
000"
001"
elsiftmp="
100"
101"
sell<
endprocess;
endsel_arc;
波形图
当CLK的上升沿到达时,sell按照十进制数0、1、4、5、0变化,并且向端口外输出片选信号,符合设计模块的要求。
(四)Ch41a模块:
于送出数码管的片选信号。
将十进制的输入信号用七段数码管显示。
图5ch41a模块
数据转换模块在输入片选信号的作用下对核心模块输送过来的数据进行选择,并从输出端口进行输出。
其中sel[2..0]为输入片选信号,d0[3..0]、d1[3..0]、d2[3..0]、d3[3..0]分别为得分记录的数据,分别接甲方记分低位,甲方记分高位,乙方记分低位,乙方记分高位。
q[3..0]为被选中的数据,并向七段译码器输出。
●VHDL程序:
entitych41ais
port(sel:
instd_logic_vector(2downto0);
d0,d1,d2,d3:
instd_logic_vector(3downto0);
q:
endch41a;
architecturech41_arcofch41ais
process(sel)
caseselis
when"
=>
q<
=d0;
=d1;
=d2;
whenothers=>
=d3;
endcase;
endch41_arc;
由上述波形图可以看出:
在输入片选信号的作用下,当sel为0时,q输出d2的数据,sel为5时,q输出d1的数据,sel为其它数时,q输出d3的数据。
波形符合要求。
(五)3—8译码模块
图63—8译码模块
entitydecode3_8is
port(sel:
QQ:
outstd_logic_vector(7downto0));
enddecode3_8;
architectureoneofdecode3_8is
QQ<
11111110"
whensel=0else
"
11111101"
whensel=1else
"
11111011"
whensel=2else
11110111"
whensel=3else
11101111"
whensel=4else
11011111"
whensel=5else
11111111"
●波形分析
当SE为001时输出QQ1,当SEL为010时输出QQ2,SEL为011时输出QQ3,SEL为100时输出QQ4,SEL为101输出QQ5。
(六)非门:
反相器。
是实现逻辑非得逻辑电路。
输入端为高电平,输出端为低电平。
图8非门
真值表:
输入
输出
A
Y
(七)译码显示模块:
用来计分。
图9译码显示模块
显示模块是由七段LED数码管译码和动态扫描显示两部分组成。
采用的是共阴极七段数码管,译码电路将输出的8421BCD妈转换为,数码管需要的逻辑状态此模块为数码管控制模块,功能是控制七段数码管对转换后的数字进行显示,使其完成甲方和乙方各自得分记录显示。
其中d[3..0]接数据转换模块的输出端口,q[6..0]连接七段扫描数码管的段输入a、b、c、d、e、f、g,利用其控制特性在数码管上显示出参加乒乓球游戏的甲乙双方各自得分。
VHDL程序:
entitydispais
port(d:
instd_logic_vector(3downto0);
outstd_logic_vector(6downto0));
enddispa;
architecturedispa_arcofdispais
process(d)
casedis
0111111"
0001"
0000110"
0010"
1011011"
0011"
1001111"
0100"
1100110"
0101"
1101101"
0110"
1111101"
0111"
0100111"
1000"
1111111"
1101111"
enddispa_arc;
由上面仿真图可以看出,译码模块完成了对数据在数码管上正确地显示。
五、总体设计电路图
(1)顶层原理框图
整体工作情况:
clk和clk1分别接扫描时钟信号和时钟信号,其它端口接法如上所述,SEL产生片选信号并作用于数据转换模块CH41A,COMA为核心模块,实现逻辑功能,并且对数据进行数制转换。
CH41A将所选数据送到七段译码器模块DISPA,使得分在数码管上显示。
(2)、管脚分配图:
按照管脚分配图上所示,对各管脚在EDA实验箱上进行连接,clk接IO3时钟信号源,reset为清零控制键,af接按键,aj接按键,bf发按键,bj接按键,clk接时钟信号源,sell[2..0]接扫描SEL0、SEL1、SEL2,shift[7..0]接八个LED显示灯,q[6..0]接数码管a、b、c、d、e、f、g。
在乒乓球游戏开始时,先按reset键对系统进行清零,然后甲或者乙就可以按发球键发球,在LED灯上显示球的行进路径,当过网后另一方就可以击球,数码管设置了两个记分牌,分别来记录甲乙的得分情况。
通过自己的实际操作知道此电路完成了设计任务。
(3)波形仿真
球运动轨迹
结果分析:
由上述仿真波形可以知道,并且通过硬件实现知道整个电路完成了设计要求的任务符合。
(4)硬件连接情况:
af、aj、bf、bj连接EPC12上四位按键PB[0]、PB[1]、PB[2]、PB[3]。
时钟CLK与实验箱上的IO3连。
CLK为EP1C12板上的50MHZ晶振输入。
Rd为EPIC12板上的复位键。
q[0]……q[6]、Q[0]Q[7]与16位数据线连。
Shift[0]……shift{7}与EDA_VI板上的IO9-IO16连接,用于8为LED灯显示。
即乒乓球的运动轨迹。
VGA[3..0]左端8个数码管,低8位为7位端总加小数点选取位,高八位为左端8个数码管COM选取,即如果要选取数码管0,则发送总线值为:
1111111011111111,如果选取数码管1,则发送总线值为1111110111111111.此时所选取数码管7端和DP位将全亮。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乒乓球 游戏机 设计 审核