vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构

上传人:tian****1990 文档编号:81573241 上传时间:2019-02-21 格式:PPT 页数:56 大小:938KB
返回 下载 相关 举报
vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构_第1页
第1页 / 共56页
vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构_第2页
第2页 / 共56页
vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构_第3页
第3页 / 共56页
vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构_第4页
第4页 / 共56页
vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构_第5页
第5页 / 共56页
点击查看更多>>
资源描述

《vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构》由会员分享,可在线阅读,更多相关《vhdl硬件描述语言课件-第3章-vhdl语言程序的基本结构(56页珍藏版)》请在金锄头文库上搜索。

1、第三章 VHDL语言程序的基本结构,VHDL语言程序的五个组成部分,库说明,包集合说明,实体说明,构造体描述,配置语句,库存放已编译的实体、构造体、包集合、和配置。相当于书库。,包集合存放各设计模块能共享的数据类型、常数和子程序。相当于书架。,实体用于说明所设计的系统的外部接口信号。,构造体用于描述系统内部的结构和行为。,配置用于从库中选取所需单元来组成系统设计的不同版本。,基 本 单 元,3.1 VHDL语言设计的基本单元及其构成,VHDL语言设计的基本单元(Design Entity),就是VHDL语言的一个基本设计实体。,设计的基本单元,实体说明,构造体,设计的基本单元举例,ENTITY

2、 mux IS GENERIC(m:TIME:=1ns); PORT(d0,d1,sel:IN BIT; q:OUT BIT); END ENTITY mux; ARCHITECTURE connect OF mux IS SIGNAL tmp:BIT; BEGIN cale:PROCESS(d0,d1,sel) IS VARIABLE tmp1,tmp2,tmp3:BIT; BEGIN tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp3:=tmp1 OR tmp2; tmp=tmp3; q=tmp AFTER m; END PROCESS cale;

3、 END ARCHITECTURE connect;,下面的程序是二选一电路的VHDL描述,我们可以把它看成是一个设计的基本单元。,实体说明,构造体,实体说明是二选一器件外部引脚的定义,构造体描述了二选一器件的逻辑电路和逻辑关系,2.1.1 实体说明,任何一个基本设计单元的实体说明都具有如下的结构:,ENTITY 实体名 IS 类属参数说明; 端口说明; END ENTITY实体名;,一个基本设计单元的实体说明以“ENTITTY 实体名 IS”开始至“END ENTITTY实体名”结束。这里大写字母表示实体说明的框架,即每个实体说明都应该这样书写,是不可缺少和省略的部分。实际上,对VHDL而言

4、,大写或小写都一视同仁,不加区分。这里仅仅是为了阅读方便而加以区分的。,1、类属参数说明,ENTITY mux IS GENERIC(m:TIME:=1ns); PORT(d0,d1,sel:IN BIT; q:OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp:BIT; BEGIN cale:PROCESS(d0,d1,sel) VARIABLE tmp1,tmp2,tmp3:BIT; BEGIN tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp3:=tmp1 OR tmp2; t

5、mp=tmp3; q=tmp AFTER m; END PROCESS; END ENTITY connect;,该语句指定了构造体内m的值为1ns。,在本例中,GENERIC利用类属参数为tmp建立一个延迟值。,类属说明必须放在端口说明之前,用于指定参数。通过该参数可改变内部电路结构和规模。,2、端口说明,端口说明是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称、数据类型和输入、输出方向的描述。其一般书写格式如下:,PORT(端口名,端口名:方向 数据类型名; 端口名,端口名:方向 数据类型名);,(1) 端口名,端口名是赋予每个外部引脚的名称,通常用一个或几个英文字

6、母,或者用英文字母加数字命名之。,ENTITY mux IS GENERIC(m:TIME:=1ns); PORT(d0,d1,sel:IN BIT; q:OUT BIT); END ENTITY mux; ARCHITECTURE connect OF mux IS SIGNAL tmp:BIT; BEGIN cale:PROCESS(d0,d1,sel) IS VARIABLE tmp1,tmp2,tmp3:BIT; BEGIN tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp3:=tmp1 OR tmp2; tmp=tmp3; q=tmp AFT

7、ER m; END PROCESS cale; END ARCHITECTURE connect;,此例中的外部引脚为d0,d1,sel,q 。,(2) 端口方向,端口方向用来定义外部引脚的信号方向是输入还是输出。,凡是用“IN”进行方向说明的端口,其信号自端口输入到构造体,而构造体内部的信号不能从该端口输出。相反,凡是用“OUT”进行方向说明的端口,其信号将从构造体内经端口输出,而不能通过该端口向构造体输入信号。,另外,“INOUT”用以说明该端口是双向的,可以输入也可以输出;“BUFFER”用以说明该端口可以输出信号,且在构造体内部也可以利用该输出信号。,(2) 端口方向(续),端口方向说

8、明,OUT与BUFFER在定义输出端口时的区别,在(a)中,锁存器的输出端口被说明为“OUT”,而在(b)中,锁存器的输出被说明为“BUFFER”。从图中可以看到,如果构造体内部要使用该信号,那么锁存器的输出端必须说明为“BUFFER”,而不能用“OUT”说明。,(3) 数据类型,在VHDL语言中有10种数据类型,但是在逻辑电路设计中只用到两种:BIT和BIT_VECTOR。,当端口被说明为BIT数据类型时,该端口的信号取值只可能是“1”或“0”。注意,这里的“1”和“0”是指逻辑值。所以BIT数据类型是位逻辑数据类型,其取值只能是两个逻辑值(“1”和“0”)中的一个。,当端口被说明为BIT_

9、VECTOR数据类型时,该端口的取值可能是一组二进制位的值。例如,某一数据总线输出端口,具有8位的总线宽度。那么这样的总线端口的数据类型可以被说明成BIT_VECTOR。总线端口上的值由8位二进制位的值所确定。,(4) 端口说明举例1,PORT(d0,d1,sel:IN BIT; q:OUT BIT; bus:OUT BIT_VECTOR(7 DOWNTO 0);,该例中d0,d1,sel,q都是BIT数据类型,而bus是BIT_VECTOR类型,(7 DOWNTO 0)表示该bus端口是一个8位端口,由B7B0 8位构成。位矢量长度为8位。,(5) 端口说明举例2,LIBRARY IEEE;

10、 USE IEEE.STD_LOGIC_1164.ALL; ENTITY mu IS PORT(d0,d1,sel:IN STD_LOGIC; q:OUT STD_LOGIC; bus:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END ENTITY mu;,该例中BIT类型用STD_LOGIC说明,而bus则用STD_LOGIC_VECTOR(7 DOWNTO 0)说明。 在用STD_LOGIC和STD_LOGIC_VECTOR说明时,在实体说明以前必须增加例中所示的两个语句,以便在对VHDL语言程序编译时,从指定库的包集合中寻找数据类型的定义。,2.1.2 构造体,

11、构造体是一个基本设计单元的实体,它具体地指明了该基本设计单元的行为、元件及内部的连接关系,也就是说它定义了设计单元具体的功能。构造体对其基本设计单元的输入输出关系可以用3种方式进行描述,即行为描述(基本设计单元的数学模型描述)、寄存器传输描述(数据流描述)和结构描述(逻辑元件连接描述)。不同的描述方式,只体现在描述语句上,而构造体的结构是完全一样的。,由于构造体是对实体功能的具体描述,因此它一定要跟在实体的后面。通常,先编译实体之后才能对构造体进行编译。如果实体需要重新编译,那么相应构造体也应重新进行编译。,实体与构造体的关系:,设计实体,构造体1,构造体2,构造体3,构造体n,。 。 。,一

12、个设计实体可有多个构造体,代表实体的多种实现方式。各个构造体的地位相同。,构造体的具体结构,ARCHITECTURE 构造体名 OF 实体名 IS 定义语句 内部信号,常数,数据类型,函数等的定义; BEGIN 并行处理语句; END ARCHITECTURE 构造体名;,一个构造体从“ARCHITECTURE 构造体名 OF 实体名 IS”开始,至“END ARCHITECTURE 构造体名”结束。下面对构造体的有关内容和书写方法作一说明。,1、构造体名称的命名,构造体的名称是对本构造体的命名,它是该构造体的唯一名称。OF后面紧跟的实体名表明了该构造体所对应的是哪一个实体。用IS来结束构造体

13、的命名。,构造体的名称可以由设计者自由命名。但是在大多数的文献和资料中,通常把构造体的名称命名为behavioral(行为),dataflow(数据流)或者structural(结构)。如前所述,这3个名称实际上是3种构造体描述方式的名称。当设计者用某一种描述方式来描述构造体时,该构造体的名称就命名为那一个名称。这样,使得阅读VHDL语言程序的人能直接了解设计者所采用的描述方式。例如,使用结构描述方式来描述二选一电路,那么二选一电路的构造体就可以这样命名: ARCHITECTURE structural OF mux IS,2、 定义语句,定义语句位于ARCHITECTURE和BEGIN之间,

14、用于对构造体内部所使用的信号、常数、数据类型和函数等进行定义。例如:,ARCHITECTURE behav OF mux IS SIGNAL nes1:BIT; BEGIN END ARCHITECTURE behav;,信号定义和端口说明的语句一样,应有信号名和数据类型的说明。因它是内部连接用的信号,故没有也不需要有方向说明。,3、 并行处理语句,并行处理语句处于语句BEGIN和END之间,这些语句具体地描述了构造体的行为及其连接关系。例如,二选一的数据流方式描述可以写为:,ENTITY mux IS PORT(d0,d1:IN BIT; sel:IN BIT; q:OUT BIT); EN

15、D mux; ARCHITECTURE dataflow OF mux IS SIGNAL s1,s2:BIT; BEGIN s1=d0 AND sel ; s2=NOT sel AND d1; q=s1 OR s2; END ARCHITECTURE dataflow;,并行处理语句,在构造体中的语句都是可以并行执行的,也就是说,语句的执行不以书写的语句顺序为执行顺序。,2.2 构造体的子结构描述,在规模较大的电路设计中,全部电路都用唯一的一个模块来描述是非常不方便的。为此,电路设计者总希望将整个电路分成若干个相对比较独立的模块来进行电路的描述。这样,一个构造体可以用几个子结构,即相对比较独

16、立的几个模块来构成。VHDL语言可以有以下3种形式的子结构描述语句:,* BLOCK语句结构 * PROCESS语句结构 * SUBPROGRAMS结构,2.2.1 BLOCK语句的结构,采用BLOCK语句描述局部电路的书写格式如下所示:,块结构名: BLOCK BEGIN END BLOCK 块结构名;,1、BLOCK语句的结构举例,采用BLOCK语句来描述二选一电路如下:,ENTITY mux IS PORT(d0,d1,sel:IN BIT; q:OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp1,tmp2,tmp3:BIT; BEGIN cale: BLOCK BEGIN tmp1=d0 AND sel; tmp2=d1 AND (NOT sel); tmp3=tmp1 OR tmp2; q=tmp3; END BLOCK cale; END connect;,该程序的构造体中只有一个BLOCK块,如果电路较

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号