EDA技术与VHDL设计第6章VHDL结构与要素
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结构体的一般格式
architecture 结构体名 of 实体名 is begin 功能描述(包括并行、进程等)语句; 功能描述(包括并行、进程等)语句; end entity 结构体名; 结构体名;
6.2.1 结构体的命名
结构体名称由设计者自行定义, 结构体名称由设计者自行定义,指明结构 体归属的实体。 体归属的实体。 结构体的命名有一定规则需要遵循, 结构体的命名有一定规则需要遵循,最好 能体现不同的描述方式。 能体现不同的描述方式。
例:使用类属语句表示延迟
entity gate is generic ( delay : time : = 5ns; port ( …); end entity gate ; … out<=in1 and in2 after delay ;
6.1.2 端口说明
端口为设计实体和其外部环境提供动态通 信的通道,功能相当于外部引脚。 信的通道,功能相当于外部引脚。 端口说明语句的一般格式如下: 端口说明语句的一般格式如下:
port ( 端口名 : 端口模式 数据类型; 数据类型; … 端口名 :端口模式 数据类型); 数据类型);
端口名与端口模式
端口名是每个实体外部引脚的名称, 端口名是每个实体外部引脚的名称,通常 用一个或几个英文字母或英文字母加数字 命名, d0、sel、q0等 命名,如d0、sel、q0等。 端口模式用来定义外部引脚的信号方向, 端口模式用来定义外部引脚的信号方向, 模式有4 in(输入)、out(输出)、 )、out 模式有4种:in(输入)、out(输出)、 buffer(缓冲器)、inout(双向)。 buffer(缓冲器)、inout(双向)。 )、inout
6.4.1 程序包组成和格式
由两部分组成:程序包首和程序包体。 由两部分组成:程序包首和程序包体。 程序包的一般格式: 程序包的一般格式:
VHDL标准程序包 6.4.2 VHDL标准程序包
STD_LOGIC_1164:包含一些数据类型、 STD_LOGIC_1164:包含一些数据类型、子类型 和函数定义。 和函数定义。 STD_LOGIC_ARITH:在STD_LOGIC_1164的基础 STD_LOGIC_ARITH: STD_LOGIC_1164的基础 上扩展了三个数据类型UNSIGNED、SIGNED和 上扩展了三个数据类型UNSIGNED、SIGNED和 UNSIGNED SMALL_INT, SMALL_INT,并为其定义了相关的算术运算符和 数据类型转换函数。 数据类型转换函数。
库 实体
结构体
6.1 实体
实体一般格式
entity 实体名 is port (引脚名:引脚属性 类型; 引脚名: 类型; ... 引脚名: 引脚名:引脚属性 类型 ); end entity 实体名; 实体名;
6.1.1 类属参数说明
类属参数是VHDL的一个术语, 类属参数是VHDL的一个术语,用以将信息 VHDL的一个术语 参数传递到实体。 参数传递到实体。 参数传递语句的一般格式如下: 参数传递语句的一般格式如下:
6.5 配置
配置语句描述层与层之间的连接关系, 配置语句描述层与层之间的连接关系,以及实 体与结构体之间的连接关系。 体与结构体之间的连接关系。设计者可以利用 配置语句来选择不同的结构体, 配置语句来选择不同的结构体,使其与要设计 的实体相对应。 的实体相对应。
Biblioteka Baidu
6.5.1 默认配置
是最简单形式的配置, 是最简单形式的配置,不含任何块语句和元器 件的模块用这种配置。 件的模块用这种配置。 默认配置语句的一般格式如下: 默认配置语句的一般格式如下: CONFIGURATION 配置名 OF 实体名 IS FOR 选配结构体名 FOR; END FOR; 配置名; END 配置名;
generic ( [ 常数名:数据类型[ :设定值] 常数名:数据类型[ 设定值] {;常数名:数据类型[:设定值]}); 常数名:数据类型[ 设定值]});
例:在译码器中使用类属语句
entity decoder is generic ( N : positive ; --N表示输入端口的数目 port ( sel : in bit_vector (1 to N ) ; dout : out bit_vector ( 1 to 2**N )); end entity decoder ;
6.3.1 库的种类
当前在VHDL语言中存在的库大致可以归纳 当前在 VHDL语言中存在的库大致可以归纳 VHDL IEEE库 STD库 WORK库和用户自 为 5 种 : IEEE 库 、 STD 库 、 WORK 库和用户自 定义的库。 定义的库。
IEEE库 1. IEEE库
VHDL设计中最为常用的库 包含有IEEE 设计中最为常用的库, IEEE标准 是VHDL设计中最为常用的库,包含有IEEE标准 的程序包和其它一些支持工业标准的程序包。 的程序包和其它一些支持工业标准的程序包。 IEEE库中的标准程序包主要包括 库中的标准程序包主要包括NUMERIC_BIT IEEE库中的标准程序包主要包括NUMERIC_BIT STD_LOGIC_1164等程序包 等程序包。 、STD_LOGIC_1164等程序包。STD_LOGIC_1164 是最重要和最常用的程序包。 是最重要和最常用的程序包。 有些公司也提供一些程序包,虽非IEEE标准, IEEE标准 有些公司也提供一些程序包,虽非IEEE标准, 但由于其已成为事实上的工业标准, 但由于其已成为事实上的工业标准,也都并入 IEEE库 SYNOPSYS的STD_LOGIC_ARITH、 了IEEE库。如SYNOPSYS的STD_LOGIC_ARITH、 STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED。 STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED。
6.2 结构体
结构体也叫构造体, 结构体也叫构造体,描述基本设计单元的 结构、行为、元器件及宁内部连接关系。 结构、行为、元器件及宁内部连接关系。 结构体包括两个组成部分: 结构体包括两个组成部分: 说明部分:对数据类型、常数、信号、 (1)说明部分:对数据类型、常数、信号、 子程序和元器件等要素进行说明。 子程序和元器件等要素进行说明。 (2)描述语句部分:包括各种顺序语句和并 描述语句部分: 行语句。 行语句。
STD_LOGIC_1164.ALL; IEEE. STD_LOGIC_1164.ALL;
VHDL程序包 6.4 VHDL程序包
为了使已定义的常数、数据类型、 为了使已定义的常数、数据类型、元件调用说 明以及子程序等能被更多的其它设计实体方便 地访问和共享,可以将它们收集在一个VHDL程 VHDL程 地访问和共享,可以将它们收集在一个VHDL 序包中。 序包中。 多个程序包可以并入一个VHDL库中, 多个程序包可以并入一个VHDL库中,使之适用 VHDL库中 于更一般的访问和调用范围。 于更一般的访问和调用范围。
VHDL库 6.3 VHDL库
库是经编译后的数据的集合, 库是经编译后的数据的集合,它存放程序 包定义、实体定义、结构体定义和配置定 包定义、实体定义、 义。 库的好处在于使设计者可以共享已经编译 过的设计结果。 过的设计结果。 VHDL语言中可以存在多个不同的库 语言中可以存在多个不同的库, 在VHDL语言中可以存在多个不同的库,但 是库与库之间是独立的,不能相互嵌套。 是库与库之间是独立的,不能相互嵌套。
EDA技术与VHDL EDA技术与VHDL设计 技术与VHDL设计
VHDL结构与要素 第6章 VHDL结构与要素
VHDL结构与要素 VHDL结构与要素
6.1
实体 6.2 结构体
6.3
VHDL库 VHDL库 6.4 VHDL程序包 VHDL程序包
6.5
配置 VHDL文字规则 VHDL文字规则 VHDL数据类型 VHDL数据类型
6.6 6.7 6.8 6.7
VHDL操作符 VHDL操作符 VHDL数据类型 VHDL数据类型
先看一个例子:D触发器 先看一个例子:
library ieee; use ieee.std_logic_1164.all; entity dff is port(clk,clr,d:in std_logic; q:out std_logic); architecture rtl of dff is begin process(clr,clk) begin clr=‘1 q<=‘0 ; if clr= 1’ then q<= 0’; clk’event clk=‘1 elsif clk event and clk= 1’ then q<=d; end if; end process; end rtl;
4. 用户自定义库
用于为自身设计需要所开发的共用程序包和实 体等,也可汇集在一起定义成一个库。 体等,也可汇集在一起定义成一个库。
6.3.2 库的用法
LIBRARY USE 库名 ; 库名. 程序包名.项目名; 库名. 程序包名.项目名;
例如,需要使用IEEE库中的STD_LOGIC_1164程 例如,需要使用IEEE库中的STD_LOGIC_1164程 IEEE库中的STD_LOGIC_1164 序包所有项目,则使用语句为: 序包所有项目,则使用语句为: LIBRARY USE IEEE ;
2. STD库 STD库
VHDL的标准库 库中还包含有称作“TEXTIO” 的标准库, 是VHDL的标准库,库中还包含有称作“TEXTIO 的程序包。在使用“TEXTIO”程序包的数据时 程序包的数据时, 的程序包。在使用“TEXTIO 程序包的数据时, 应说明库和程序包名,然后才可以使用该程序 应说明库和程序包名, 包的数据。例如: 包的数据。例如: LIBRARY USE IEEE ;
6.2.2 结构体信号定义语句
结构体信号定义必须在architecture和 结构体信号定义必须在architecture和 architecture end之间。 end之间。 之间 结构体中定义的信号应有名称和数据类型 但没有属性,这点与端口不同。 ,但没有属性,这点与端口不同。 结构体定义的信号只在本结构体有效, 结构体定义的信号只在本结构体有效,对 于其它结构体则失去作用。 于其它结构体则失去作用。
STD.TEXTIO.ALL ;
WORK库 3. WORK库
是现行作业库。设计者所描述的VHDL VHDL语句不需 是现行作业库。设计者所描述的VHDL语句不需 要任何说明,将都存放在WORK库中。 要任何说明,将都存放在WORK库中。使用该库 WORK库中 时无需进行任何说明。 时无需进行任何说明。 工作库并非文件夹的名称,而是一个逻辑名。 工作库并非文件夹的名称,而是一个逻辑名。 综合器将指向该文件夹的路径。 综合器将指向该文件夹的路径。
VHDL标准程序包 6.4.2 VHDL标准程序包
STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED: STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED:是 SYNOPSYS公司的程序包 重载可用于INTEGER 公司的程序包, INTEGER类 SYNOPSYS公司的程序包,重载可用于INTEGER类 型及STD_LOGIC STD_LOGIC_VECTOR类型混合 STD_LOGIC和 型及STD_LOGIC和STD_LOGIC_VECTOR类型混合 运算的运算符,定义由STD_LOGIC_VECTOR STD_LOGIC_VECTOR到 运算的运算符,定义由STD_LOGIC_VECTOR到 INTEGER型的转换函数 型的转换函数。 INTEGER型的转换函数。 STANDARD和TEXTIO程序包:STANDARD程序包中 STANDARD和TEXTIO程序包:STANDARD程序包中 程序包 定义了许多基本的数据类型、子类型和函数。 定义了许多基本的数据类型、子类型和函数。 TEXTIO程序包定义了支持文件操作的许多类型 TEXTIO程序包定义了支持文件操作的许多类型 和子程序,主要供仿真器使用。 和子程序,主要供仿真器使用。