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

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

目录

1 设计目的 (1)

2 设计要求和任务 (1)

2.1设计任务 (1)

2.2设计要求 (1)

3 总体设计思路及原理描述 (1)

4 分层次方案设计及代码描述 (2)

4.1控制模块的设计 (2)

4.1.1 cornal模块分析 (2)

4.1.2 cornal模块VHDL程序描述 (3)

4.2送数据模块的设计 (7)

4.2.1 ch41a模块分析 (7)

4.2.2 ch41a模块VHDL程序描述 (7)

4.3产生数码管片选信号模块的设计 (8)

4.3.1 sel模块分析 (8)

4.3.2 sel模块VHDL程序描述 (9)

4.4 七段译码器模块的设计 (10)

4.4.1 disp模块分析 (10)

4.4.2 disp模块VHDL程序描述 (10)

4.5 顶层原理图设计 (11)

5 各模块的时序仿真图 (12)

6 总结 (14)

7 参考文献 (14)

乒乓游戏机

1 设计目的

掌握熟悉的使用Quartus II 9.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.1 cornal模块分析

a发球

一、在范围内

1、b没有接到球,a加1分,将灯光清零000 00 000

2、b接到了球,则灯光为0 &【7位】

二、在b方出界了

1、如果b没有接到球,则a加分

2、如果b接到了球,则灯光为0 &【7位】

b发球

一、在范围内

1、a没有接到球,b加1分,并将灯光清零000 00 000

2、a接到了球,则灯光计分为【7位】& 0

二、在a方出界了

1、a没有接到球,则b加分

2、a接到了球,则灯光计分为【7位】& 0

af,aj,bf,bj分别为a方发球键和接球键,b方发球键和接球键,shift表示球所在的位置。

图4.1 conal模块原理图4.1.2 cornal模块VHDL程序描述

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Entity cornal is

Port(clr,af,aj,bf,bj,clk:in std_logic;

Shift:out std_logic_vector(7 downto 0);

Ah,al,bh,bl:out std_logic_vector(3 downto 0);

Awin,bwin:out std_logic);

End cornal;

Architecture bahave of cornal is

Signal amark,bmark:integer;

Begin

Process(clr,clk)

Variable a,b:std_logic;

Variable she:std_logic_vector(7 downto 0);

Begin

If clr=’0’ t hen

a:=’0’;

b:=’0’;

she:=”00000000”

amark<=0;

bmark<=0;

elsif clk’event and clk=’1’ then

if a=’0’ and b=’0’ and af=’0’ then --a方发球 a:=’1’;

she;=”10000000”;

elsif a=’0’ and b=’0’ then bf=’0’ then --b方发球 b:=’1’;

she:=”00000001”;

elsif a=’1’ and b=’0’ then --a方发球后

if she>8 then

if bj=’0’ then --b方过网击球

amark<=amark+1; --a方加一分

a:=’0’;

b:=’0’;

she:=”00000000”;

else

she:=’0’&she(7 downto 1); --b方没有击球

end if;

elsif she=0 then --球从b方出界

amark<=amark+1; --a方加一分

a:=’0’;

b:=’0’;

else

if bj=’0’ then --b方正常击球

a:=’0’;

b:=’1’;

else

she:=’0’&she(7 downto 1); --b方没有击球

end if;

end if;

elsif a=’0’ and b=’1’then --b方发球

if she<16 and she/=0 then

if aj=’0’ then

bmark<=bmark+1;

a:=’0’;

b:=’0’;

she:=”00000000”;

else

she:=she(6 downto 0)&’0’;

end if;

elsif she=0 then

bmark<=bmark+1;

a:=’0’;

b:=’0’;

else

if aj=’0’then

a:=’1’;

b:=’0’;

else

she:=she(6 downto 0)&’0’;

end if;

end if;

end if;

end if;

shift<=she;

end process;

process(clk,clr,amark,bmark)

variable aha,ala,bha,bla:std_logic_vector(3 downto 0); variable tmp1,tmp2:integer;

variable t1,t2:std_logic;

begin

if clr=’0’then --清零

aha:=”0000”;

ala:=”0000”;

bha:=”0000”;

bla:=”0000”;

tmp1:=0;

tmp2:=0;

t1:=’0’;

t2:=’0’;

elsif clk’event and clk=’1’ then

if aha=”0001” and ala=”0001” then --a方得分达到11分,则保持 aha:=”0001”;

ala:=”0001”;

t1:=’1’;

elsif bha=”0001”and bla=”0001” then --b方得分达到11分,则保持 bha:=”0001”;

bla:=”0001”;

t2:=’1’;

elsif amark>tmp1 then

if ala=”1001” then

ala:=”0000”;

aha:=aha+1;

tmp1:=tmp1+1;

else

ala:=ala+1;

tmp1:=tmp1+1;

end if;

elsif bmark>tmp2 then

if bla=”1001” then

bla:=”0000”;

bha:=bha+1;

tmp2:=tmp2+1;

else

bla:=bla+1;

tmp2:=tmp2+1;

end if;

end if;

end if;

al<=ala;

bl<=bla;

ah<=aha;

bh<=bha;

awin<=t1;

bwin<=t2;

end process;

end behave;

4.2送数据模块的设计

4.2.1 ch41a模块分析

图4.2 ch41a模块分析及原理图4.2.2 ch41a模块VHDL程序描述

Library IEEE;

Use IEEE.std_logic_1164.all;

Entity ch41a is

Port(sel:in std_logic_vector(2 downto 0);

D0,d1,d2,d3:in std_logic_vector(3 downto 0);

Q:out std_logic_vector(3 downto 0));

End ch41a;

Architecture behave of ch41a is

Begin

Process(sel)

Begin

Case sel is

When”100”=>q<=d0;

When”101”=>q<=d1;

When”000”=>q<=d2;

When others=>q<=d3;

End case;

End process;

End behave;

4.3产生数码管片选信号模块的设计

4.3.1 sel模块分析

图4.3 sel模块分析及原理图

4.3.2 sel模块VHDL程序描述

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Entity sel is

Port(clk:in std_logic;

Sell:out std_logic_vector(2 downto 0)); End sel;

Architecture behave of sel is

Begin

Process(clk)

Variable tmp:std_logic_vector(2 downto 0); Begin

If clk’event and clk=’1’ then

If tmp=”000” then

Tmp:=”001”;

Elsif tmp=”001” then

Tmp:=”100”;

Elsif Tmp=”100” then

Tmp:=”101”;

Elsif tmp=”101” then

Tmp:=”000”;

End if;

End if;

Sell<=tmp;

End process;

End behave;

4.4 七段译码器模块的设计

4.4.1 disp模块分析

图4.4 disp模块分析及原理4.4.2 disp模块VHDL程序描述

Library ieee;

Use ieee.std_logic_1164.all;

Entity disp is

Port(d:in std_logic_vector(3 downto 0);

Q:out std_logic_vector(6 downto 0));

End disp;

Architecture behave of disp is

Begin

Process(d)

Begin

Case d is

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”;

When others=>q<=”1101111”;

End case;

End process;

End behave;

4.5顶层原理图设计

图4.5 顶层模块原理图

5 各模块的时序仿真图

图5.1为A方两次发球,B方没有接到球,A方得到2分的仿真波形图

图5.1 仿真波形图

图5.2所示为A方发球,B方提前击球的情况,此时,A方得一分。图中还显示了A 方发球,B方在规定的时刻没有接到球的情况,此时,A方又得一分。

图5.2 仿真波形图

图5.3所示为A方发球,在恰当的时候B方接到球,当球回到A方时,A方又接到球,但B方再也没有接到球的仿真波形。

图5.3仿真波形图

图5.4所示为A方得分增加到11分的情况,此时awin输出高电平,输出分数保持不变。当清零信号按下时,得分清为零,awin输出恢复低电平,又可以开始新的一局比赛。

图5.4仿真波形图

6 总结

当知道我做的这个设计是乒乓游戏机的时候,我完全没有了头绪,不知道这到底会是一个怎样的设计,后来经过在网上参考了许许多多的资料,才知道这到底是怎么一回事,过了一个假期,许多软件上的操作都忘记了许多,当开始课程设计的时候,才发现原来安装好了的软件试用期到了,然后又得重装软件,重装又不成功,反复弄了几次才成功,总是急出一身的汗。当软件安装好之后,开始将设计的VHDL程序输入到里面编译,最后设计顶层程序的时候,一直出现错误,是说不能使用两个脉冲时钟,于是又重新学画了原理图的设计,才最终成功。

通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当每一个子模块编写调试成功时,心里特别的开心。但是在编写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。

这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

7 参考文献

[1]邹彦主编.EDA技术与数字系统设计.电子工业出版社.2012

[2]朱正伟主编.EDA技术及应用.清华大学出版社.2005

[3]黄智伟等主编.FPGA系统设计与实践.电子工业出版社.2004

[4张亦华等主编.数字逻辑设计实验技术与EDA工具.北京邮电大学出版社.2003

[5]谭会生等主编.EDA技术及应用.西安电子科技大学出版社.2001

相关主题
相关文档
最新文档