vhdl 程序的基本结构 vhdl程序一般由5个部分组成

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例: Generic(delay:time:=10ns);
实体说明--端口说明
端口为设计实体和外部环境通讯的动态通信提供通道
port ([signal]端口名:[模式]子类型标识[:=静态表达式]; …); 模式: in, out, inout, buffer
Inout和buffer都是双向端口,但buffer只能有一个驱动源
块语句
块标号:BLOCK[保护表达式] [类属子句;] [端口子句;] [块说明部分;] BEGIN
<块语句部分;>
; END BLOCK 块标号
类属子句用于参数的定义;端口子句用于信号的定义; 块说明部分对该块要用到的信号、常数、元件和子程序 等进行说明;块语句部分对该块的功能进行描述,块语 句部分的语句是并行执行的,和书写顺序无关。
进程语句
[进程标号:]PROCESS[敏感信号表][IS] [进程语句说明部分;] BEGIN
<进程语句部分;>
END PROCESS [进程标号];
敏感信号表列出进程对其敏感的所有信号,每当其中的 一个或多个信号发生变化时,就会启动进程的执行;进 程语句说明部分对该进程要用到的变量、子程序等进行 说明;进程语句部分对该进程的功能进行描述,进程语 句部分的语句是顺序执行的,和书写顺序有关。
---END count_255; ARCHITECTURE count_64k OF counter IS
---END count_64k;
CONFIGURATION small_count OF counter IS FOR count_255 END FOR;
END small_count; CONFIGURATION big_count OF counter IS
[类属说明;] [端口说明;]
[实体说明部分;] [实体语句部分;] End [entity]<实体名>;
最简单的例: entity nothing is end nothing;
实体说明--类属说明
类属为设计实体和外部环境通讯的静态通信提供通道。可以定
义端口大小、元件数目及定时特性等
Generic ([constant]参数名:[in]子类型标识[:=静态表达式]; …);
例: Port (a, b: in bit; q: out bit);
实体说明--实体说明部分
用于定义设计实体接口中的公共信息,如定 义新的数据类型和常量等
例:定义新的数据类型color Type color is array (6 downto 0) of std_logic;
实体说明--实体语句部分
VHDL 程序的基本结构
VHDL程序一般由5个部分组成:
Library(程序库) Package(程序包)
Entity(实体) Architecture(构造体) Configuration(配置)
库和程序包
库 :存放已编译过的实体、构造体、 程序包和配置
程序包:由一组对外可见的信号、常量、 数据类型、子程序、属性等组成 的程序集合
子程序调用语句 过程名(参数表);
子程序调用语句若位于 “构造体” 或 “块语句” 中,它就是并发语句; 若位于 “进程语句” 或 另一个“子 程序”中,它就是顺序语句;
设计实体
实体说明 构造体1 构造体2 …… 构造体n
配置
有多个构造体的设计实体的组成
配置
一个实体可以拥有多个不同的构造体,而每个构造体在 实体中的地位是相同的。可以利用配置语句为实体指定 一个构造体。
常用库及其程序包
Std: VHDL的标准库 standard:定义了 bit, bit_vector, character, time 等数据类型 textio:包含了对文本文件进行读写操 作的过程和函数
缺省说明: library std; use std.standard.all;
常用库及其程序包
含义 输入 输出 双向
具有读功能的输出模块
ห้องสมุดไป่ตู้
只读
只写,可有多个驱动 可读、可写
可读写,仅1个驱动
在实际的数字集成电路中,IN相当于只可输入的引脚, OUT相当于只可输出的引脚,BUFFER相当于带输出缓冲 器并可回读的引脚,INOUT相当于双向引脚。
PACKAGE
已在设计实体中定义的数据类型、子程序或数据对象对于其 它的实体是不可用的,或者说是不可见的。为了使其能被更 多的实体访问和共享,可以将它们收集在一个程序包中。
构造体-构造体说明语句
定义本构造体内部使用的信号、常数、数据类型 和函数
因为它们仅限于内部使用,所以没有也不需要有 方向的说明
构造体-功能描述语句
具体描述构造体的行为和结构。
功能描述语句是并行执行的,并不以语句 的书写顺序为执行顺序。
有5种类型的功能描述语句: 信号赋值语句、块语句、进程语句、 子程序调用语句、元件例化语句。
Entity(实体) Architecture(构造体) Configuration(配置)
设计实体
实体说明 构造体
设计实体的组成
设计实体
实体说明 构造体1 构造体2 …… 构造体n
配置 有多个构造体的设计实体的组成
设计实体
实体说明
构造体
设计实体的组成
实体说明
Entity <实体名> is
CONFIGURATION 配置名 OF 实体名 IS [语句说明];
END 配置名;
最简单的缺省配置格式结构
CONFIGURATION 配置名 OF 实体名 IS FOR 构造体名 END FOR;
END 配置名;
配置例
ENTITY counter IS ----
END counter; ARCHITECTURE count_255 OF counter IS
END upac;
电子线路的设计与仿真
2020/3/20 34
PACKAGE 程序包名 IS [说明语句];
END 程序包名;
} 程序包首
} PACKAGE BODY 程序包名 IS [说明语句];
程序包体
END 程序包名;
电子线路的设计与仿真
2020/3/20 32
PACKAGE
package PROJECT_PACK is -- constants -- data types -- components -- sub routines
VHDL 语言
刘书桂
天津大学精密仪器与光电子工程学院 精密测试技术及仪器国家重点实验室
电话:27404779 Email:sgliu@tju.edu.cn
电子线路的设计与仿真
2020/3/20
VHDL 程序的基本结构
VHDL程序一般由5个部分组成: Library(程序库) Package(程序包) Entity(实体) Architecture(构造体) Configuration(配置)
end PROJECT_PACK;
use work.PROJECT_PACK.all;
Entity A
EntityB
Entity C
电子线路的设计与仿真
2020/3/20 33
PACKAGE
程序包首: 程序包首的说明语句可收集多个VHDL设计所需的公 共信息,包括数据类型说明,信号说明,子程序说明 以及元件说明等。
是设计实体接口的共同部分。只能由并行断 言语句、并行过程调用语句、被动进程语 句组成,且不能在语句中给信号赋值。
设计实体
实体说明
构造体
设计实体的组成
构造体
architecture <构造体名> of <实体名> is
[构造体说明语句;]
Begin
<功能描述语句;>
End [architecture]<构造体名>;
IEEE: IEEE认可的标准库 std_logic_1164:定义了 std_logic, std_logic_vector, std_ulogic, std_ulogic_vector 等数据类型
VHDL 程序的基本结构
VHDL程序一般由5个部分组成: Library(库) Package(程序包)
并行信号赋值语句
1、简单赋值语句 目标信号 <= 表达式;
2、条件信号赋值语句 目标信号 <= 表达式1 when 条件1 else 表达式2 when 条件2 else …… 表达式n-1 when 条件n-1 else 表达式n;
3、选择信号赋值语句 with 条件表达式 select 目标信号 <= 表达式1 when 条件1 , 表达式2 when 条件2 , …… 表达式n when 条件n;
FOR count_64K END FOR; END big_count;
现场演示4选1数据选择器
Entity mux4 is End mux4;
Architecture rtl of mux4 is Begin End rtl;
现场演示4比特可逆计数器
端口方向说明
方向定义 IN
OUT INOUT BUFFER
库和程序包的使用
Library <库名列表>; Use <库名>.<程序包名>.<项目名>;
例: Library ieee; Use ieee.std_logic_1164.all;
常用库
Std VHDL的标准库 ieee IEEE认可的标准库 Work 现行作业库 Vital 面向ASIC的库 用户自定义库
程序包可以只由程序包首组成。
PACKAGE upac IS CONSTANT k: INTEGER:=4; TYPE instruction IS(add,sub,adc,inc,srf,slf); SUBTYPE cpu_bus IS STD_LOGIC_VECTOR(k-1 DOWNTO 0);
相关文档
最新文档