乒乓说明书
初二 记叙文 6714字 230人浏览 cocododo0525

目录

1 引言.............................................................. 1

1.1 硬件描述语言—VHDL .......................................... 1

1.2 QuartusⅡ简介 ............................................... 1

2 设计题目、内容及要求.............................................. 2

2.1 设计题目 .................................................... 2

2.2 设计内容 .................................................... 2

2.3 设计要求 .................................................... 2

3 系统设计.......................................................... 3

3.1 控制模块的设计 .............................................. 3

3.2 送数据模块的设计 ............................................ 7

3.3 产生数码管片选信号模块的设计 ................................ 8

3.4 7段译码器模块的设计......................................... 8

4 总结............................................................. 10

参考文献........................................................... 11

1 1 引言

1.1 硬件描述语言—VHDL

VHDL 的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language , 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL 的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL 的程序结构特点是将一项工程设计,或称设计实体分成外部(或称可是部分, 及端口) 和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL 系统设计的基本点。应用VHDL 进行工程设计的优点是多方面的。

(1) 与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

(2) VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

(3) VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。

(4)对于用VHDL 完成的一个确定的设计,可以利用EDA 工具进行逻辑综合和优化,并自动的把VHDL 描述设计转变成门级网表。

(5) VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。

1.2 QuartusⅡ简介

QuartusII 是Altera 公司的综合性PLD 开发软件,可以采用多种输入方式,如VHDL 、Verilog HDL、AHDL (Altera Hardware Description Language) 及电路图等。它支持一些比较成熟的模块,如LPM/MegaFunction宏功能模块库等,设计者可以直接调用这些模块,从而使设计的复杂性降低了,设计的速度也加快了。QuartusII 内带有综合器和仿真器,可以完成从设计输入到硬件配置的完整PLD 设计流程,减少了设计者的工作量。QuartusII 是一种综合性的开发平台,在QuartusII 中可以进行系统级设计嵌入式的软件开发和可编程逻辑的设计。QuartusII 越来越受到数字系统设计者的欢迎,是因为QuartusII 拥有强大的设计能力和直观易用的接口,可以在多种平台上使用,如XP 、Linux 以及Unix 等,具有完善的用户图形界面设计方式,运行速度快,功能集中,易学易用等特点。

课程设计说明书

2 2 设计题目、内容及要求

2.1 设计题目

乒乓球游戏机设计

2.2 设计内容

(1)用8个发光二极管表示球,用两个按钮分别表示甲乙两个球员的球拍。

(2)一方发球后,球以固定速度向另一方运动,发光二极管依次点亮,当球达到最后一个发光二极管时,对方击球,按下按钮,球将向相反方向运动。在其他时候击球视为犯规,给对方加1分都犯规,各加1分。

(3)甲乙两方各由数码管计分。

(4)裁判有一按钮可进行系统初始化。

具体原理图如下:

图1-1 乒乓球游戏机原理图

2.3 设计要求

(1)根据任务要求确定电路各功能模块;

(2)写出设计程序;

(3)给出时序仿真结果;

(4)最后要有设计总结;

课程设计说明书

3 3 系统设计

3.1 控制模块的设计

模块pp 分两个进程,第一个进程实现逻辑功能,第二个进程将整数的记分转换为十进制数,便于译码显示。af ,aj ,bf ,bj 分别为a 方发球键和接球键,b 方发球键和接球键,shift 表示球所在的位置。其vhdl 程序描述如下:

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Entity pp 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 pp;

Architecture behave of pp 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'then

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'and bf='0'then

课程设计说明书

4 --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

课程设计说明书

5 --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";

课程设计说明书

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

课程设计说明书

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

3.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;

课程设计说明书

8 End process;

End behave;

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

--产生数码管片选信号模块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;

3.4 7段译码器模块的设计

--7段译码器模块disp 的vhdl 的程序描述如下: Library ieee;

课程设计说明书

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

3.5 系统仿真

图3-1 系统仿真图

课程设计说明书

10 4 总结

通过两周的课设,我们设计出的乒乓球比赛游戏机具备比赛控制、数码管显示、等多种功能。本乒乓球比赛游戏机能够在按下发球键之后,LED 灯依次移动并能在移动到最后一个灯时按下击球键击中球,并且能自动记分显示在两位数码管上。经过这次的课程设计,我收获颇丰,学到很多知识,我学会了如何去完成一个任务,懂得了享受过程。当遇到问题,想办法一点点解决。

虽然这次的课设时间短暂,但却让我得到了多方面的提高:1、查阅参考书的独立思考的能力以及培养非常重要,我们在设计电路时,遇到很多不理解的东西,有的我们通过查阅参考书弄明白,有的通过网络查到,但由于时间和资料有限我们更多的还是独立思考。2、相互讨论共同研究也是很重要的,经常出现一些问题,比如电路设计中的控制器的设计,以及乒乓球游戏机怎样计分等的分析。还使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到了不少棘手的问题,可谓是困难重重,但我们必须要学着自己去找资料、去理解、去解决问题,加强我们独立思考的能力。同时在设计的过程中,我发现了许多自己的不足之处,认识的自己对以前所学过的知识理解得不够深刻,掌握得不够牢固,没有在日常生活中将理论与实际相结合起来,以后要多加努力才行啊!

课程设计说明书

11 参考文献

[1].Voknei A.Pedroni.VHDL数字电路设计教程. 电子工业出版社,2008.5

[2].潘松, 黄继业.EDA 技术实用教程(第二版). 科学出版社,2005.2

[3].焦素敏.EDA 应用技术. 清华大学出版社,2002.4