乒乓球游戏机EDA课程设计完整版本.docx

上传人:b****2 文档编号:1365579 上传时间:2022-10-21 格式:DOCX 页数:15 大小:172.47KB
下载 相关 举报
乒乓球游戏机EDA课程设计完整版本.docx_第1页
第1页 / 共15页
乒乓球游戏机EDA课程设计完整版本.docx_第2页
第2页 / 共15页
乒乓球游戏机EDA课程设计完整版本.docx_第3页
第3页 / 共15页
乒乓球游戏机EDA课程设计完整版本.docx_第4页
第4页 / 共15页
乒乓球游戏机EDA课程设计完整版本.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

乒乓球游戏机EDA课程设计完整版本.docx

《乒乓球游戏机EDA课程设计完整版本.docx》由会员分享,可在线阅读,更多相关《乒乓球游戏机EDA课程设计完整版本.docx(15页珍藏版)》请在冰豆网上搜索。

乒乓球游戏机EDA课程设计完整版本.docx

乒乓球游戏机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<=””;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1