5.1 vhdl程序的基本结构 - shandong...

30
1 5.1 VHDL程序的基本结构 设计 外部(称为实体,可视部分) --端口描述 内部(称为结构体,不可视部分)--设计的功能和算法描述 基本结构: 实体说明 描述所设计的系统的外部接口信号 结构体 描述系统内部的结构和行为 程序包 存放各设计模块都能共享的数据类型、常数和子程序等 存放已经编译的实体、构造体、包集合和配置 配置 从库中选取所需要的单元组成系统设计的不同版本

Upload: others

Post on 20-Jul-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

1

5.1 VHDL程序的基本结构

设计外部(称为实体,可视部分) --端口描述

内部(称为结构体,不可视部分)--设计的功能和算法描述{

基本结构:

实体说明描述所设计的系统的外部接口信号

结构体描述系统内部的结构和行为

程序包存放各设计模块都能共享的数据类型、常数和子程序等

库存放已经编译的实体、构造体、包集合和配置

配置从库中选取所需要的单元组成系统设计的不同版本

Page 2: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

2

5.1.1 实体说明

实体说明描述的是一个设计的外貌,即描述实体的外部接口情况以及实体内的类属参数等。

实体(ENTITY)是任意系统的抽象,实体的电路意义相当于器件。

一块电路板、一个芯片、一个电路单元甚至一个门电路等都可看

作一个实体。

对系统进行分层设计时,各层的设计模块都可作为实体。

顶层的系统模块是顶级实体,低层次的设计摸块是低级实体。

描述时,高级实体可将低一级实体当作元件来调用。

Page 3: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

3

【程序5.1.1】ENTITY mux21a ISPORT( a, b : IN BIT ;

s : IN BIT; y : OUT BIT) ;

END ENTITY mux21a ;

ab

sy

mux21a

图5.1.1 2选1数据选择器

例:2选1数据选择器的实体描述

ENTITY <实体名> IS

[端口说明部分];

END [ENTITY] <实体名> ;

实体说明的格式:

[参数说明部分];

实体说明以“ENTITY <实体名> IS” 开始,至 END [ENTITY] <实体名>” 结束。

Page 4: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

4

其中:

ENTITY mux21a IS

PORT( a, b : IN BIT;

s : IN BIT;

y : OUT BIT);

END ENTITY mux21a ;

(2)端口模式:说明信号的方向,有以下几种模式:

IN 输入信号;

OUT 输出信号;

INOUT 双向信号;

BUFFER 输出信号,但可在内部反馈使用(缓冲);

BUFFER是INOUT的子集,但作输入用时,信号不是由外部驱动,而是

从输出反馈得到。

参数说明主要为设计实体指定参数,如端口宽度、器件延迟时间等;

端口说明描述的是设计实体和外部的接口,具体说就是对端口

名称、端口模式和端口数据类型进行说明。

(1)端口名称:输入输出信号的名称,在实体中必须是唯一的。

Page 5: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

5

(3)端口数据类型:端口信号的取值类型

明确地指定和严格地定义端口信号的取值类型是VHDL的重要特点

即所谓的强数据类型,这是学习VHDL应特别注意之处

ENTITY mux21a IS

PORT( a, b : IN BIT ;

s : IN BIT;

y : OUT BIT ) ;

END ENTITY mux21a ;

VHDL中常见的数据类型有以下几种:

BIT 位类型,取值0、l

BIT_VECTOR 位向量类型,是BIT的组合

INTEGER 整数类型,可用作循环的指针或常数

BOOLEAN 布尔类型,取值FALSE、TRUE

STD_LOGIC 工业标准的逻辑类型,取值0、1、X、Z等

STD_LOGIC_VECTOR 工业标准的逻辑向量类型,是STD_ LOGIC的组合

Page 6: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

6

例:用VHDL描述图5.1.2所示实体说明

d[15:0] q1[15:0]

clk q2[15:0]

reset int

oe opt

图5.1.2 example2 实体端口

d[15:0]是16位输人总线; clk、reset、oe是输入信号;

q1[15:O]是16位三态输出总线;q2[15:0]是16位双向总线;

int是输出信号,也反馈到内部使用; opt是三态输出信号。

Page 7: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

7

Example 的实体说明如下:

【程序5.1.2】

ENTITY example2 IS

END example2;

d[15:0] q1[15:0]clk q2[15:0]

reset intoe opt

PORT ( d: IN STD_ LOGIC_VECTOR (15 DOWNTO 0);

clk, reset, oe: IN STD_LOGIC;

q1: OUT STD_LOGIC_VECTOR (15 DOWNTO 0);

q2: INOUT STD_LOGIC_VECTOR(15 DOWNTO 0);

int: BUFFER STD_LOGIC;

opt: OUT STD_LOGIC );

Page 8: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

8

5.1.2 结构体

1.结构体的概念

结构体(Architecture )描述的是实体内部的逻辑功能。

在电路上相当于器件的内部电路结构.

a

bs

ymux21a

例:数据选择器的结构体描述

【程序5.1.3】ARCHITECTURE one OF mux21a IS

BEGIN

y <= a WHEN s = ' 0 ' ELSE

b;

END ARCHITECTURE one;

Page 9: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

9

[结构体说明部分]

(1)OF后的实体名应与实体说明中的实体名一致

结构体的基本格式:

(2)功能描述语句是结构体中的主要部分,用于描述所实现实体的

功能四种不同类型的并行语句:

(3)说明语句是对结构体的功能描述语句中将要用到的信号、数据类型、常数、元件、函数和过程等加以说明

进程语句 信号赋值语句

子程序调用语句 元件例化语句

ARCHITECTURE <结构体名> OF <实体名> IS

<功能描述语句>

END [ARCHITECTURE] <结构体名> ;

BEGIN

【程序4.1.3】

ARCHITECTURE one OF mux21a IS

BEGIN

y <= a WHEN s = ' 0 ' ELSE

b;

END ARCHITECTURE one;

Page 10: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

10

2.结构体的描述方式

(1)行为描述方式:

对设计实体的数学模型的描述,其抽象程度最高。

类似于高级编程语言,无需知道电路的具体结构。

优点是只需描述输入与输出的行为,不关注具体的电路实现。

(2)数据流描述方式:

从信号到信号的数据流动的路径形式进行描述。

设计人员对设计实体的功能实现要有一定的了解,有时还需对电路

的具体结构有清楚的认识。

优点是易于进行逻辑综合,综合效率较高。

在VHDL中,允许设计人员采用不同的描述风格来进行设计实体中结构体的书写,结构体的描述方式通常有三种:行为描述方式、数据流描述方式和结构描述方式。

Page 11: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

11

(3)结构描述方式:

指在多层次的设计中,通过调用库中的元件或是已设计好的模块来完

成实体功能的描述。

结构描述方式只表示元件(或模块)和元件(或模块)之间的互连,

就像网表一样。

优点是可以将已有的设计成果用到当前的设计中去,因而大大提高设

计效率,对于可分解的大型设计,结构描述方式是首选方案。

另外也可以使用上述三种描述方式的组合来进行结构

体的描述,即混合描述方式。

Page 12: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

12

【程序5.1.4】

ENTITY rsf IS

PORT (set, reset: IN BIT;

q,qb : BUFFER BIT);

END rsf;

下面以 RS 触发器为例说明三种描述方式的使用方法

R-S触发器的实体描述:

& &

q qb

set reset

RS触发器set

reset

q

qb

Page 13: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

13

【程序5.1.5】ARCHITECTURE rs_alg OF rsf IS

BEGIN

PROCESS(set, reset) - - 进程

VARIABLE last_state: BIT; - - 给输出q一个状态变量定义

BEGIN

IF set = '1' AND reset = '1' THEN

last_state : = last_state;

ELSIF set = '0' AND reset = '1' THEN

last_state : = '1';

ELSIF set = '1' AND reset = '0' THEN

last_state : = '0';

END IF;

q <= last_state; - - 给输出信号赋值

qb <= NOT (last_state);

END PROCESS;

END rs_alg;

行为描述方式:

进程

敏感信号表

Page 14: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

14

进程语句PROCESS: PROCESS(set, reset)

括号中的set, reset信号称为敏感信号,是该进程的

激活条件.

注意:

进程中的语句是顺序语句,它们之间不是并行关系,执

行时是按书写的先后次序顺序执行的。

行为描述方式描述的是与硬件电路结构无关的算法关系,

所以应该按算法的流程顺序执行。

只要set和reset信号有一个发生变化,该进程中的语句就

会被顺序地执行一遍

Page 15: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

15

数据流描述方式:

【程序5.1.6】ARCHITECTURE rs_behav OF rsf IS

BEGIN

q <= NOT( qb AND set );

qb <= NOT( q AND reset);

END rs_behav;

q和qb两句信号赋值语句之间是并行的关系,即只要

输人set和reset发生了变化,这两个语句就会同时被执行,

产生相应的输出。

和一般程序设计语言的顺序执行的情况不同,这里是和

硬件电路的工作情况是一致的。

& &

q qb

set reset

Page 16: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

16

【程序5.1.7】

ARCHITECTURE rs_struc OF rsf IS

COMPONENT nand2 - - 元件说明

PORT (a,b: IN BIT ;

c: OUT BIT );

END COMPONENT;

BEGIN

u1:nand2 port map(a=>set,b=>qb,c=>q); - - 元件例化语句

u2:nand2 port map(a => reset, b => q, c => qb);

END rs_struc;

结构描述方式:

& &

q qb

set reset

Page 17: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

17

5.1.3 库、程序包

VHDL的基本结构由前述的实体和结构体组成,但实际中

的VHDL程序除上述两个基本部分以外通常还包括另外三个部

分:库、程序包和配置。

程序包:主要用来存放各个设计都能共享的数据类型、

子程序、常数和元件等;

库:主要用来存放已经编译的实体、结构体、程序包等;

Page 18: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

18

VHDL库中的各个设计单元(实体、结构体、程序包和配置)

都可以用作其他设计的资源,一个设计可以使用多个库中的设

计单元。

当一个设计要使用库中的已编译单元时,必须要在每个设

计的VHDL源代码的开头说明要引用的库,然后使用USE子句指明

要使用库中的哪一个设计单元。

(1)库说明语句格式: library <库名>;

以library 开头,后面紧跟着设计中要使用的库的名字。

库说明语句使该库对于设计可见。

(2)USE子句格式: use <库名>.<程序包名>.all;

库名是前面库说明语句中说明的库。

程序包名是设计中要使用的库中的设计单元。

all表示使用程序包中的所有项目。

1. 库

Page 19: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

19

ENTITY example2 IS

PORT (d: IN STD_ LOGIC_VECTER (15 DOWNTO 0);

clk, reset, oe: IN STD_LOGIC;

q1: OUT STD_LOGIC_VECTER (15 DOWNTO 0);

q2: INOUT STD_LOGIC_VECTER (15 DOWNTO 0);

int: BUFFER STD_LOGIC;

opt: OUT STD_LOGIC );

END example2;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

Page 20: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

20

(3)库的种类

VHDL提供的库可以分为两大类:设计库和资源库。

设计库对当前设计是可见的,使用时一般无需进行说明。

资源库是用来存放常规元件和常用模块的库,使用时首先要进行说明。

STD库是VHDL的标准库,该库定义了两个标准程序包:

standard中定义了bit、bit_vector、character和time等数据类型。textio中主要包括了对文本文件进行读写操作的过程和函数

①设计库:包括STD库和WORK库。

WORK库是VHDL的标准工作库,主要用于存放用户设计和定义的一些设计单元和程序包。该库是用户的临时仓库,用户设计项目的半成品、成品以及先期设计的元件都放在该库中。

(该包在使用时应先说明库和包集合名) 。

(无需用LIBRARY声明库,但必须用USE声明程序包)

Page 21: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

21

③ALTERA库:ALTERA公司自己提供的VHDL库

该库主要包括:MEGACORE程序包。

使用时需声明:LIBRARY ALTERA;

USE ALTERA.MEGACORE.ALL;

②资源库:

除STD库和WORK库以外,常见资源库如下:

IEEE库是最常用的资源库,其中含有 std_logic_1164、numeric_bit、 numeric_std等程序包,

还包括std_logic_signed、std_logic_unsigned和std_logic_arith等非IEEE标准的程序包。

④ LPM库: ALTERA公司自己提供的参数化宏单元的VHDL库

该库包括:LPM_COMPONENTS程序包。使用元件例化语句调

用时需声明:LIBRARY LPM;

USE LPM.LPM_COMPONENTS.ALL;

Page 22: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

22

(4)库说明的作用范围:

从一个实体开始,到它所属的结构体和配置为止,或

者从一个程序包的说明开始,到该程序包定义结束为止。

当一个源程序中出现两个以上的实体时,库说明语句

应在每个实体说明语句前重复书写。

Page 23: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

23

在VHDL中,设计的实体说明和结构体中定义的数据类型、子程序说明、属性说明和元件说明等部分只能在该设计实体中使用,而对于其他设计实体是不可见的。为减少重复定义工作,VHDL提出了程序包的概念,用来存放能够共享的数据类型、子程序说明、属性说明和元件说明等。

程序包说明部分:主要对数据类型、子程序、常量和元件等进行说明。PACKAGE 程序包名 IS -- 程序包首

程序包说明语句

END 程序包名;

程序包体部分:用来规定程序包的实际功能。

(1)一个程序包通常由以下两个部分组成:

PACKAGE BODY 程序包名 IS -- 程序包体

程序包体说明语句以及包体内容

END 程序包名;

2.程序包

Page 24: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

24

【程序5.1.9】

- - 程序包说明

PACKAGE example IS

TYPE alu_op IS (add, sub, mul, div, eq, gt, lt); - - 枚举类型

CONSTANT pi: REAL := 3.14159265; - - 常量

delay1: TIME; - - 延时常量

COMPONENT nand2 - - 元件

PORT (a,b:in bit; c: out bit);

END COMPONENT;

FUNCTION mean (a,b,c: real) RETURN REAL; - - 函数

END example;

Page 25: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

25

- - 程序包体

PACKAGE BODY example IS

CONSTANT delay1: TIME:= 15ns; - - 定义延时常量的值

FUNCTION mean (a,b,c: real) RETURN real IS - - 具体的函数

BEGIN

RETURN (a + b +c )/3.0; - - 求平均值

END mean;

END example;

Page 26: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

26

(2)常用的预定义程序包:

库名 程序包名 包中预定义内容

std standard VHDL类型,如bit,bit_vector

ieee Std_logic_1164 定义std_logic,std_logic_vector等

ieee Std_logic_arith 定义有符号(unsigned)与无符号(signed)类型,及该类型的运算

ieee Std_logic_signed 定义基于std_logic与std_logic_vector类型上的有符号的算数运算

ieee Std_logic_unsigned 定义基于std_logic与std_logic_vector类型上的无符号的算数运算

Page 27: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

27

5.1.4 配置

配置可以把特定的

结构体指定给一个确定的实体。

当对实体进行仿真时可为同一实体配置不同的结构体以

比较其差别;为例化的各元件实体配置指定的结构体,从而

形成一个所希望的例化元件层次构成的设计实体。

配置语句的一般格式如下:

CONFIGURATION <配置名> OF <实体名> IS

FOR <选配结构体名>

END FOR;

END [<配置名>];

Page 28: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

28

例 :

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY nand2 IS

PORT (a,b:IN STD_LOGIC;

c:OUT STD_LOGIC);

END ENTITY nand2;

ARCHITECTURE two OF nand2 IS

BEGIN

c<=‘1’WHEN (a=‘0’)AND(b=‘0’)ELSE

‘1’WHEN (a=‘0’)AND(b=‘1’)ELSE

‘1’WHEN (a=‘1’)AND(b=‘0’)ELSE

‘0’WHEN(a =‘1’)AND(b=‘1’)ELSE

‘0’;

END ARCHITECTURE two;

ARCHITECTURE one OF nand2 ISBEGINc <= NOT(a AND b);

END ARCHITECTURE one;

CONFIGRATION second OF nand2 IS

FOR two

END FOR;

END second;

CONFIGRATION first OF nand2 IS

FOR one

END FOR;

END first;

------------------------------------------

-----------------------------------------------------------------------------------

Page 29: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

29

VHDL程序结构

配 置

结 构 体

库、程序包

实 体

Page 30: 5.1 VHDL程序的基本结构 - Shandong Universitycourse.sdu.edu.cn/Download/4255694a-03a8-4078-9661-84d...1.结构体的概念 结构体(Architecture )描述的是实体内部的逻辑功能。在电路上相当于器件的内部电路结构

30

VHDL语法小结VHDL 库: 使用LIBRARY语句打开

常用的有:STD、WORK 、IEEE等

程 序 包:需要时可使用USE语句打开,常用的包括:

STANDARD、TEXTIO、STD_LOGIC_1164、

STD_LOGIC_ARITH、STD_LOGIC_SIGNED、

STD_LOGIC_UNSIGNED 等

实体说明: ENTITY name … END ENTITY name;

结 构 体: ARCHITECTURE name OF entity_name …

END ARCHITECTURE name

三种描述方式:行为描述方式、数据流描述方式、结构描述方式