乒乓球游戏机EDA课程设计完整版本.docx
- 文档编号:1365579
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:15
- 大小:172.47KB
乒乓球游戏机EDA课程设计完整版本.docx
《乒乓球游戏机EDA课程设计完整版本.docx》由会员分享,可在线阅读,更多相关《乒乓球游戏机EDA课程设计完整版本.docx(15页珍藏版)》请在冰豆网上搜索。
乒乓球游戏机EDA课程设计完整版本
1设计目的1
2设计要求和任务1
2.1设计任务1
2.2设计要求1
3总体设计思路及原理描述1
4分层次方案设计及代码描述2
4.1控制模块的设计2
4.1.1cornal模块分析2
4.1.2cornal模块VHDL程序描述3
4.2送数据模块的设计7
4.2.1ch41a模块分析7
4.2.2ch41a模块VHDL程序描述7
4.3产生数码管片选信号模块的设计8
4.3.1sel模块分析8
4.3.2sel模块VHDL程序描述9
4.4七段译码器模块的设计10
4.4.1disp模块分析10
4.4.2disp模块VHDL程序描述10
4.5顶层原理图设计11
5各模块的时序仿真图12
6总结14
7参考文献14
乒乓游戏机
1设计目的
掌握熟悉的使用QuartusII9.1软件的原理图绘制,程序的编写,编译以及仿真。
体会使用EDA综合过程中电路设计方法和设计思路的不同。
掌握使用EDA工具设计乒乓游戏机的的设计思路和设计方法。
2设计要求和任务
2.1设计任务
设计一个乒乓球游戏机,该机模拟乒乓球比赛的基本过程和规则,并能自动裁判和几分。
2.2设计要求
(1)甲乙双方各在不同的位置发球或击球。
(2)乒乓球的位置和移动方向由灯亮及依次点亮的方向决定,球移动的速度为0.1-0.5秒移动一位。
(3)11分为一局,甲乙双方都应设置各自的几分牌,任何一方先记满11分,该方胜出。
当记分牌清零后,重新开始。
3总体设计思路及原理描述
由乒乓游戏机功能,用原理图作为顶层模块,再将底层划分成四个小模块来实现:
(1)cornal模块:
整个程序的核心,它实现了整个系统的全部逻辑功能;
(2)ch41a模块:
在数码的片选信号时,送出相应的数据;
(3)sel模块:
产生数码管的片选信号;
(4)disp模块:
7段译码器。
图3.1结构层次图
4分层次方案设计及代码描述
4.1控制模块的设计
4.1.1cornal模块分析
a发球
一、在范围内
1、b没有接到球,a加1分,将灯光清零00000000
2、b接到了球,则灯光为0&【7位】
二、在b方出界了
1、如果b没有接到球,则a加分
2、如果b接到了球,则灯光为0&【7位】
b发球
一、在范围内
1、a没有接到球,b加1分,并将灯光清零00000000
2、a接到了球,则灯光计分为【7位】&0
二、在a方出界了
1、a没有接到球,则b加分
2、a接到了球,则灯光计分为【7位】&0
af,aj,bf,bj分别为a方发球键和接球键,b方发球键和接球键,shift表示球所在的位置。
图4.1conal模块原理图
4.1.2cornal模块VHDL程序描述
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_unsigned.all;
Entitycornalis
Port(clr,af,aj,bf,bj,clk:
instd_logic;
Shift:
outstd_logic_vector(7downto0);
Ah,al,bh,bl:
outstd_logic_vector(3downto0);
Awin,bwin:
outstd_logic);
Endcornal;
Architecturebahaveofcornalis
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:
=””
amark<=0;
bmark<=0;
elsifclk’eventandclk=’1’then
ifa=’0’andb=’0’andaf=’0’then--a方发球
a:
=’1’;
she;=””;
elsifa=’0’andb=’0’thenbf=’0’then--b方发球
b:
=’1’;
she:
=””;
elsifa=’1’andb=’0’then--a方发球后
ifshe>8then
ifbj=’0’then--b方过网击球
amark<=amark+1;--a方加一分
a:
=’0’;
b:
=’0’;
she:
=””;
else
she:
=’0’&she(7downto1);--b方没有击球
endif;
elsifshe=0then--球从b方出界
amark<=amark+1;--a方加一分
a:
=’0’;
b:
=’0’;
else
ifbj=’0’then--b方正常击球
a:
=’0’;
b:
=’1’;
else
she:
=’0’&she(7downto1);--b方没有击球
endif;
endif;
elsifa=’0’andb=’1’then--b方发球
ifshe<16andshe/=0then
ifaj=’0’then
bmark<=bmark+1;
a:
=’0’;
b:
=’0’;
she:
=””;
else
she:
=she(6downto0)&’0’;
endif;
elsifshe=0then
bmark<=bmark+1;
a:
=’0’;
b:
=’0’;
else
ifaj=’0’then
a:
=’1’;
b:
=’0’;
else
she:
=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;
variablet1,t2:
std_logic;
begin
ifclr=’0’then--清零
aha:
=”0000”;
ala:
=”0000”;
bha:
=”0000”;
bla:
=”0000”;
tmp1:
=0;
tmp2:
=0;
t1:
=’0’;
t2:
=’0’;
elsifclk’eventandclk=’1’then
ifaha=”0001”andala=”0001”then--a方得分达到11分,则保持
aha:
=”0001”;
ala:
=”0001”;
t1:
=’1’;
elsifbha=”0001”andbla=”0001”then--b方得分达到11分,则保持
bha:
=”0001”;
bla:
=”0001”;
t2:
=’1’;
elsifamark>tmp1then
ifala=”1001”then
ala:
=”0000”;
aha:
=aha+1;
tmp1:
=tmp1+1;
else
ala:
=ala+1;
tmp1:
=tmp1+1;
endif;
elsifbmark>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;
awin<=t1;
bwin<=t2;
endprocess;
endbehave;
4.2送数据模块的设计
4.2.1ch41a模块分析
图4.2ch41a模块分析及原理图
4.2.2ch41a模块VHDL程序描述
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;
Architecturebehaveofch41ais
Begin
Process(sel)
Begin
Caseselis
When”100”=>q<=d0;
When”101”=>q<=d1;
When”000”=>q<=d2;
Whenothers=>q<=d3;
Endcase;
Endprocess;
Endbehave;
4.3产生数码管片选信号模块的设计
4.3.1sel模块分析
图4.3sel模块分析及原理图
4.3.2sel模块VHDL程序描述
Libraryieee;
Useieee.std_logic_1164.all;
Useieee.std_logic_unsigned.all;
Entityselis
Port(clk:
instd_logic;
Sell:
outstd_logic_vector(2downto0));
Endsel;
Architecturebehaveofselis
Begin
Process(clk)
Variabletmp:
std_logic_vector(2downto0);
Begin
Ifclk’eventandclk=’1’then
Iftmp=”000”then
Tmp:
=”001”;
Elsiftmp=”001”then
Tmp:
=”100”;
ElsifTmp=”100”then
Tmp:
=”101”;
Elsiftmp=”101”then
Tmp:
=”000”;
Endif;
Endif;
Sell<=tmp;
Endprocess;
Endbehave;
4.4七段译码器模块的设计
4.4.1disp模块分析
图4.4disp模块分析及原理
4.4.2disp模块VHDL程序描述
Libraryieee;
Useieee.std_logic_1164.all;
Entitydispis
Port(d:
instd_logic_vector(3downto0);
Q:
outstd_logic_vector(6downto0));
Enddisp;
Architecturebehaveofdispis
Begin
Process(d)
Begin
Casedis
When”0000”=>q<=””;
When”0001”=>q<=””;
When”0010”=>q<=””;
When”0011”=>q<=””;
When”0100”=>q<=””;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乒乓球 游戏机 EDA 课程设计 完整 版本