VHDL 硬件描述语言一

上传人:我*** 文档编号:136518774 上传时间:2020-06-28 格式:PPT 页数:41 大小:165KB
返回 下载 相关 举报
VHDL 硬件描述语言一_第1页
第1页 / 共41页
VHDL 硬件描述语言一_第2页
第2页 / 共41页
VHDL 硬件描述语言一_第3页
第3页 / 共41页
VHDL 硬件描述语言一_第4页
第4页 / 共41页
VHDL 硬件描述语言一_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《VHDL 硬件描述语言一》由会员分享,可在线阅读,更多相关《VHDL 硬件描述语言一(41页珍藏版)》请在金锄头文库上搜索。

1、3.6 VHDL 硬件描述语言,VHDL(Very-High-Speed Integrated Circuit Hardware Description Language),诞生于1982年。 1987年底,VHDL被IEEE美国国防部确认为标准硬件描述语言。,3.6 VHDL 硬件描述语言,VHDL主要用于描述数字系统的结构、行为、功能和接口。 除了含有许多硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VHDL的主要优点是:,VHDL的优点,1) 与其它硬件描述语言相比,VHDL具有更强的行为描述能力。 2)VHDL丰富的仿真语句和库函数,使得在任何大系

2、统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。 3)VHDL的移植性很强。因为它是一种标准语言,所以它的设计描述可以被不同的工具所支持。 4)VHDL本身的生命周期长。因为VHDL的硬件描述与工艺技术无关,不会因工艺变化而使描述过时。,看两个例子: LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY half_adder IS PORT (a,b : IN bit; s,c : OUT bit); END half_adder; ARCHITECTURE aa OF

3、 half_adder IS BEGIN s=a xor b; c=a and b; END ;,library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity adder1 is port( a,b:in std_logic; ci:in std_logic; sum:out std_logic; co: out std_logic ); end adder1; architecture Behavioral of adder1 i

4、s begin sum=a xor b xor ci; co=(a and b) or (a xor b) and ci); end Behavioral;,3.6.1 VHDL的模型结构,完整的VHDL语言程序通常包含: 实体(Entity) 结构体(Architecture) 配置(Configuration) 包集合(Package) 库(Library),实体用于描述所设计的系统的外部接口信号; 结构体用于描述系统内部的结构和行为; 配置用于从库中选取所需单元来组成系统; 包集合存放各设计模块能共享的数据类型、常数、程序等; 库用于存放已编译的实体、构造体、包集合、配置。,1.实体(E

5、NTITY),实体是设计的基本模块和设计的初级单元. 在分层次设计中,顶层有顶层实体,含在顶层实体中的较低层次的描述为低层实体。依靠配置把顶层实体和底层实体连接起来。,实体的一般格式,ENTITY 实体名 IS GENERIC (类属表); PORT (端口表); END,端口信息和类属信息,端口信息表示该设计单元与其它设计单元相连接的端口名、端口模式和信号取值的类型; 类属信息表示该设计单元的默认类属参数值,例如规定端口的大小、实体中子元件的数目、实体的定时特性等参数。下面举几个简单的实体设计例子加以说明。,实体设计例题,例:如图所示半加器的VHDL描述(只有端口说明的实体描述) ENTIT

6、Y half_adder IS PORT(a,b:IN Bit; s,c:OUT Bit); END half_adder;,半加器,a,b,s,c,说明:,实体类似于原理图中的模块符(Symbol),它并不描述模块的具体功能。 端口名:在实体中必须是唯一的. 端口模式:是用来说明数据传输通过该端口的方向。 端口类型:是端口所采用的数据类型.,端口模式的类型,输入(IN):输入模式仅允许数据流入端口。 输出(OUT ):输出模式仅允许数据流从内部流向实体输出端口。 缓冲(Buffer ):缓冲用于有内部反馈需求时。缓冲模式不允许用作双向端口使用 。 双向(Inout ):对于双向信号,设计时必

7、须定义端口为双向模式。,端口类型,布尔型(Boolean):布尔类型可以取值“TRUE”(真)或“FALSE”(假) 。 位(Bit ):位可以取值“0”或“1” 。 位矢量(Bit_Vector ):位矢量由IEEE库中的标准包Numeric_Bit支持。该程序包中定义的基本元素类型为Bit类型,而不是Std_logic类型 。,整数(Integer):整数可以用作循环的指针或常数,通常不用于I/O信号 。 非标准逻辑(Std_ulogic)和标准逻辑(Std_logic):非标准逻辑和标准逻辑由IEEE.std_logic_1164支持。程序包预先在IEEE库中编译,该程序包中定义的数据类

8、型包括Std_ulogic,Std_ulogic_vector,Std_logic,Std_logic_vector。包中还定义了一些转换函数。访问IEEE.std_logic_1164程序包中的项目需要由LIBRARY子句和USE子句. Library ieee; Use ieee.std_logic_1164.all;,Std_logic:工业标准的逻辑类型,取值如下: 0(强0);1(强1);Z(高阻态) X(强未知); W(弱未知); L(弱0);H(弱1) -(忽略); U(未初始化的); 其中只有前4种取值具有实际物理意义,其他的是为了和模拟环境相容才保留的。,用户自定义类型,用户

9、自定义类型是VHDL语言的一大特色,是普通编程语言所不具备的。语法如下: TYPE 数据类型名 ,数据类型名 数据类型定义 例: TYPE BYTE IS array( 7 downto 0) of bit; Variable adder : BYTE ;,实体的表述方法,例331 对335所示3位全加器的实体描述。,实体的表述方法,例331 如图335所示3位全加器的实体描述。 Library ieee; Use ieee.std_logic_1164.all; Entity adder3 is port( ); End adder3;,a,b:in std_logic_vector(2 d

10、ownto 0); Ci:in std_logic; S i:out std_logic_vector(2 downto 0); Ci+1:out std_logic,类属声明语法如下: Generic( 常数名称:类型:=值 ; 常数名称:类型:=值 ); 例:定义一个名为COMP的实体,它有两个Nbit输入和一个布尔型输出。 Entity COMP is generic(N: INTEGER :=8); port (X, Y : BIT_VECTOR(0 TO N-1); EQUQL: OUT BOOLEAN ); End COMP;,2.结构体(Architecture ),结构体描述主

11、要用来描述实体的内部结构,即描述一个实体的功能。一般格式: ARCHITECTURE (结构体名) OF (实体名) IS 常量定义 信号定义 类型定义 元件定义 子程序定义 BEGIN 并行信号赋值语句 进程语句 生成语句 元件例化语句 END 结构体名;,VHDL允许采用3种描述格式:,行为描述:描述该设计单元的功能,即该硬件能做什么,主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送。 结构描述:描述该设计单元的硬件结构,即该硬件是如何构成的。主要使用配置指定语句及元件例化语句描述元件的类型和元件的互连关系 。 数据流:主要使用并行的信号赋值语句,既显式表示了该设计单元的行为,

12、也隐式表示了该设计单元的结构。,例:一个一位等值比较器的设计,实体描述: library ieee; use ieee.std_logic_1164.all; entity eqcomp is port(a,b:in std_logic; equals:out std_logic); end;,行为描述方式:,architecture behavioral of eqcomp is begin comp:process(a,b) begin if a=b then equals=1; else equals=0; end if; end process comp; end behavioral

13、;,进程语句(process),顺序语句(if),结构描述方式:,architecture struct of eqcomp is component xnor2 port(a,b:in std_logic; equals:out std_logic); end component; begin u0:xnor2 port map (a,b,equals); end struct;,根据以上代码可以看出结构描述是采用元件例化语句来描述元件的类型及元件的互连关系。,数据流描述方式:,architecture dataflow of eqcomp is begin equals=1when (a=

14、b) else 0; end dataflow;,根据以上给出的VHDL代码可知,数据流描述是采用并行的信号赋值语句来描述它的功能的,3.6.2 VHDL语言要素,标识符(Identifier) 数据对象(Data Objects ) 保留字及运算符,1.标识符(Identifier ),标识符由英文字母“a”“z”、“A”“Z”、数字“0”“9”以及下划线“_”组成。使用时应注意以下几点: VHDL不区分大小写; 标识符一定要以字母开头 ; 下划线不能放在结尾 ; 下划线不能连用,如:a_h_1、show_new_state、COUNTER_A a%h_1、show-new-state、CO

15、UNTER_、T_ _1,有效标识符,无效标识符,2.数据对象,VHDL的数据对象包括信号、常量、变量和文件4类。 信号 常量 变量,1)信号,信号代表连线,也可内连元件。端口也是信号。格式如下 : SIGNAL signal_name:signal type:=initial_value 例子如下: (1)signal count: bit_vector(3 downto 0); (2)signal enable,clk:bit:0;,2)常量,常量是指那些设计描述中不会变化的值,这个值通常用来赋值,而且只能赋值一次。 说明格式为 : CONSTANT constant_name,const

16、ant_name:type_name:=value,(1) constant fifo_width:integer:8; (2) constant delay1,delay2:Time:10ns; (3) constant add:std_logic_vector(2 downto 0):“000” ;,3)变量,变量用于进程语句和子程序(函数和过程)中作局部数据存储。 和信号不同,分配给信号的值必须经过一段时间延迟后才能成为当前值,而分配给变量的值则立即成为当前值;信号与硬件中的“连线”相对应,而变量不能表达连线或存储元件。,变量的说明格式为: VARIABLE variable_name,variable_name:variable_type:

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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