第1章 VHDL基本结构
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.输出(OUT) .输出( ) 输出模式只允许信号离开实体,常用于计数输出、 输出模式只允许信号离开实体,常用于计数输出、单向 数据输出、被设计实体产生的控制其他实体的信号等。注意: 数据输出、被设计实体产生的控制其他实体的信号等。注意: 输出模式不能用于被设计实体的内部反馈, 输出模式不能用于被设计实体的内部反馈,因为输出端口在 实体内不能看做是可读的。 实体内不能看做是可读的。 3.双向模式(INOUT) .双向模式( ) 双向模式允许信号双向传输(既可以进入实体, 双向模式允许信号双向传输(既可以进入实体,也可以离开 实体),双向模式端口允许引入内部反馈。 ),双向模式端口允许引入内部反馈 实体),双向模式端口允许引入内部反馈。
1.1 实体
设计实体是 语言设计的基本单元, 设计实体是VHDL语言设计的基本单元,简单 语言设计的基本单元 的可以是一个与门, 的可以是一个与门,复杂的可以是一个微处理器或 一个数字系统,其结构基本是一致的,都是由 一个数字系统,其结构基本是一致的,都是由实体 说明和结构体两部分组成。 说明和结构体两部分组成。实体说明是对这个设计 实体与外部电路进行接口的描述, 实体与外部电路进行接口的描述,它规定了设计单 元的输入输出接口信号或引脚, 元的输入输出接口信号或引脚,是设计实体对外的 一个通信界面。 一个通信界面。结构体用于描述此设计实体的逻辑 结构和逻辑功能。 结构和逻辑功能。
IN
OUT
INOUT
BUFFER
设计中, 输入信号端口指定为 在VHDL设计中,通常将输入信号端口指定为输 设计中 通常将输入信号端口指定为输 入模式,输出信号端口指定为输出模式, 入模式,输出信号端口指定为输出模式,而双向数 端口指定为输出模式 据通信信号,如计算机 总线的地址 据通信信号,如计算机PCI总线的地址 数据复用总 总线的地址/数据复用总 DMA控制器数据总线等纯双向的信号采用 控制器数据总线等纯双向的信号采用双向 线,DMA控制器数据总线等纯双向的信号采用双向 端口模式。从端口的名称、 端口模式。从端口的名称、模式就能一目了然地指 导信号的用途、性质、来源和去向。 导信号的用途、性质、来源和去向。
VHDL基本结构 第一章 VHDL基本结构
1.1 实体 1.2 结构体 1.3 块、子程序和进程 1.4 库和程序包 1.5 配置
一个完整的VHDL程序,或者说设计实体,通 程序,或者说设计实体, 一个完整的 程序 常要求最低能为VHDL综合器所支持,并能作为 综合器所支持, 常要求最低能为 综合器所支持 一个独立的设计单元, 一个独立的设计单元,即元件的形式而存在的 VHDL程序。在VHDL程序中,通常包含实体 程序。 程序中, 程序 程序中 (ENTITY)、结构体(ARCHITECTURE)、 )、结构体 )、结构体( )、 配置( )、包集合 配置(CONFIGURATION)、包集合 )、 个部分。 (PACKAGE)和库(LIBRARY)5个部分。其 )和库( ) 个部分 实体和结构体这两个基本结构是必需的, 中实体和结构体这两个基本结构是必需的,他们 可以构成最简单的VHDL程序。 程序。 可以构成最简单的 程序
பைடு நூலகம்
4.缓冲(BUFFER) .缓冲( ) 缓冲模式允许信号输出到实体外部, 缓冲模式允许信号输出到实体外部,但同时也可以在实体内部 引用该端口的信号。缓冲端口既能用于输出也能用于反馈。 引用该端口的信号。缓冲端口既能用于输出也能用于反馈。缓冲 模式用于在实体内部建立一个可读的输出端口,例如计数器输出、 模式用于在实体内部建立一个可读的输出端口,例如计数器输出、 计数器的现态用来决定计数器的次态。 计数器的现态用来决定计数器的次态。 端口模式可用图下说明,图中方框代表一个设计实体或模块。 端口模式可用图下说明,图中方框代表一个设计实体或模块。
结构体的语句格式为: 结构体的语句格式为: ARCHITECTURE 结构体名 OF 实体名 IS [定义语句 定义语句] 定义语句 BEGIN [功能描述语句 功能描述语句] 功能描述语句 END 结构体名; 结构体名;
1.2.1 结构体名
结构体名由设计者自行定义, 后面的实体名 结构体名由设计者自行定义,OF后面的实体名 指明了该结构体所对应的是哪个实体。 指明了该结构体所对应的是哪个实体。有些设计实 体有多个结构体,这些结构体的结构体名不可相同, 体有多个结构体,这些结构体的结构体名不可相同, 通常用dataflow(数据流)、 (数据流)、behavior(行为)、 通常用 )、 (行为)、 structural(结构)命名。这3个名称体现了 种不同 (结构)命名。 个名称体现了3种不同 个名称体现了 结构体的描述方式,使得阅读 语言程序时, 结构体的描述方式,使得阅读VHDL语言程序时, 语言程序时 能直接了解设计者采用的描述方式。 能直接了解设计者采用的描述方式。
注意:实体应以语句“ 开始, 注意:实体应以语句“ENTITY 实体名 IS”开始,语 开始 实体名; 结束。 句“END ENTITY 实体名;”结束。 在层次化系统设计中, 在层次化系统设计中,实体说明是整个模块或整个系 统的输入输出( )接口;在一个器件级的设计中, 统的输入输出(I/O)接口;在一个器件级的设计中,实 体说明是一个芯片的输入输出( )。 体说明是一个芯片的输入输出(I/O)。 1.1.1类属参量( 1.1.1类属参量(GENERIC) 类属参量 ) 类属参量是实体说明组织中的可选项,放在端口说明之前, 类属参量是实体说明组织中的可选项,放在端口说明之前, 其一般格式为: 其一般格式为: GENERIC [CONSTANT] 名字表:[IN] 子类型标识 [:= 静 名字表: 态表达式], 态表达式 ,…]
其中端口名是设计者为实体的每一个对外通道所取的 名字,通常为英文字母加数字 名字的定义有一定的惯例 英文字母加数字, 惯例, 名字,通常为英文字母加数字,名字的定义有一定的惯例, 表示时钟, 开头的端口名表示数据 开头的端口名表示数据, 开头的端口 如clk 表示时钟,D开头的端口名表示数据,A开头的端口 名表示地址。端口模式是指这些通道上的数据流动的方式 是指这些通道上的数据流动的方式, 名表示地址。端口模式是指这些通道上的数据流动的方式, 输入或输出等 如输入或输出等。 端口模式有以下几种类型: 端口模式有以下几种类型: 1.输入(IN) .输入( ) 允许信号进入实体,主要用于时钟输入、控制输入( 允许信号进入实体,主要用于时钟输入、控制输入(如 load、reset、enable、clk)和单向的数据输入(如地址数 、 、 、 )和单向的数据输入( 据信号address)等。 据信号 )
结构体一般由两大部分组成: 结构体一般由两大部分组成: 1.对数据类型、常数、信号、子程序和元件等因素进行说 .对数据类型、常数、信号、 明的部分; 明的部分; 2.描述实体的逻辑行为、以各种不同的描述风格表达的功 .描述实体的逻辑行为、 能描述语句,包括各种顺序语句 并行语句。 顺序语句和 能描述语句,包括各种顺序语句和并行语句。
例: GENERIC (trise,tfall:TIME:=1ns; , : Addrwidth:INTEGER:=16); PORT(a0, a1 : IN STD_LOGIC; Add_bus:OUT STD_LOGIC_VECTOR(addrwidth-1 DOWNTO 0);
这里类属参量中参数trise为上升沿宽度,tfall为下 为上升沿宽度, 这里类属参量中参数 为上升沿宽度 为下 降沿宽度,用于仿真模块的设计; 降沿宽度,用于仿真模块的设计;定义地址总线的宽 度为Addrwidth位,类属值 度为 位 类属值Addrwidth的改变将使结构 的改变将使结构 体中所有相关的总线定义同时改变, 体中所有相关的总线定义同时改变,由此使整个设计 实体的硬件结构发生变化。 实体的硬件结构发生变化。
结构体名 例:结构体的信号定义实例。 结构体的信号定义实例。 ARCHITECTURE rtl OF muj IS SIGNAL s1:BIT : 结构体信号定义语句 实体名
SIGNAL s2,s3:STD_LOGIC_VECTOR (0 TO 3); , : ┇ BEGIN ┇ END rtl; ; 功能描述语句
1.2.3 结构体功能描述语句
结构体功能描述语句位于BEGIN和END之间, 和 之间, 结构体功能描述语句位于 之间 具体地描述了构造体的行为及其连接关系。 具体地描述了构造体的行为及其连接关系。结构 体的功能描述语句可以含有5种不同类型的并行 体的功能描述语句可以含有 种不同类型的并行 语句,如图所示。 语句,如图所示。每一语句结构内部可以使用并 行语句,也可以是顺序语句。 行语句,也可以是顺序语句。
1.1.2 端口说明(PORT) 端口说明( ) 端口为设计实体和其外部环境提供动态通信的通道, 端口为设计实体和其外部环境提供动态通信的通道, 是对基本设计单元与外部接口的描述, 是对基本设计单元与外部接口的描述,其功能相当电路图 符号的外部引脚。端口可以被赋值, 符号的外部引脚。 端口可以被赋值, 也可以当做逻辑变量 用在逻辑表达式中。 用在逻辑表达式中。 其一般书写格式为: 其一般书写格式为: PORT (端口名 :端口模式 数据类型; 数据类型; 端口名 :端口模式 数据类型; 数据类型; … …); );
类属参量是一种端口界面常数, 类属参量是一种端口界面常数,常用来规定端口 的大小、实体中子元件的数目及实体的定时特性等。 的大小、实体中子元件的数目及实体的定时特性等。 它和常数不同, 它和常数不同,常数只能从设计实体的内部得到赋值 且不能改变, 且不能改变,而类属参量的值可由设计实体的外部提 供。因此设计者可以从外面通过类属参量的重新设定 而容易的改变一个设计实体或一个元件的内部电路结 构和规模。 构和规模。
实体语句结构如下: 实体语句结构如下:
ENTITY 实体名 IS [GENERIC(类属表);] (类属表) [PORT(端口表);] (端口表) END ENTITY 实体名; 实体名; 例:
ENTITY or2 IS PORT(a,b:IN STD_LOGIC; ( , : C: OUT STD_LOGIC); END ENTITY or2; ;
1.2 结构体
结构体也叫构造体,结构体描述了基本设计单元(实体) 结构体也叫构造体,结构体描述了基本设计单元(实体) 的结构、行为、元件及内部连接关系,也就是说它定义了设 的结构、行为、元件及内部连接关系,也就是说它定义了设 计实体的功能,规定了设计实体的数据流程, 计实体的功能,规定了设计实体的数据流程,制定了实体内 部元件的连接关系。 部元件的连接关系。结构体对其基本设计单元的输入和输出 关系可用以下三种方式进行描述 三种方式进行描述, 行为描述( 关系可用以下三种方式进行描述,即行为描述(基本设计单 元的数学模型描述)、寄存器传输描述(数据流描述) )、寄存器传输描述 元的数学模型描述)、寄存器传输描述(数据流描述)和结 构描述(逻辑元件连接描述)。 构描述(逻辑元件连接描述)。 结构体是对实体功能的具体描述, 结构体是对实体功能的具体描述,因此它一定要跟在实 是对实体功能的具体描述 体的后面 。
1.2.2 结构体信号定义语句
结构体信号定义语句必须放在关键词ARCHITECTURE和 结构体信号定义语句必须放在关键词 和 BEGIN之间,用于对结构体内部将要使用的信号、常数、数 之间, 之间 用于对结构体内部将要使用的信号、常数、 据类型、元件、函数和过程加以说明。 据类型、元件、函数和过程加以说明。需要注意的是实体说明 中定义的信号是外部信号, 中定义的信号是外部信号,而结构体定义的信号为该结构体的 内部信号,它只能用于这个结构体中。 内部信号,它只能用于这个结构体中。 结构体中的信号定义和端口说明一样, 结构体中的信号定义和端口说明一样,应有信号名称和数 据类型定义。因为它是内部连接用的信号 因此不需要方向 内部连接用的信号, 不需要方向说 据类型定义。因为它是内部连接用的信号,因此不需要方向说 明。