标签:-o 类型 例子 for reset 有符号数 赋值运算符 buffer isp
2.3.3.2 RTL(寄存器传输级)描述, 又称数据流描述
3.3 数据类型
3.3.1 标准定义的数据类型
3.3.2 IEEE预定义的标准逻辑位与矢量
3.3.3 用户自定义的数据类型
3.4 运算符
3.4.1 算术运算符
3.4.2 关系运算符
3.4.3 逻辑运算符
3.4.4 赋值运算符
3.4.5 关联运算符
3.4.6 其他运算符
3.4.7 运算符优先级
3.4.8 运算符表格速览
4 VHDL语句
4.1 并行语句
4.1.1 并行语句的特点
4.1.2 并行语句的格式
4.1.3 并行语句的种类
4.1.3.1 并行信号赋值语句
4.1.3.2 条件信号赋值语句
4.1.3.3
4.2 顺序语句
VHDL的全称为VHSIC硬件描述语言(VHSIC Hardware Description Language),VHSIC: Very High Speed Integrated Circuit
1980 – 美国国防部设立一个基金,在VHSIC项目之下开设了一个子课题,研究标准的硬件描述语言,1982诞生VHDL。
1987 – IEEE 将其修正为 IEEE 标准:1076
1993 – 修正了VHDL语言,升级至IEEE 1076-1993
为什么使用VHDL ?原理图图形化设计缺点?
答:
大型设计,原理图连接太复杂,检查错误太困难
通过使用高级语言对你的设计做描述,可以分析语法错误,综合后效率可能更高,时间成本更好。
VHDL的基本设计单元结构:程序包说明、实体说明、结构体说明三部分。
-- 库、程序包的说明调用 Library IEEE; use IEEE.Std_Logic_1164.ALL; -- 实体声明 Entity FreDevider is port ( Clock: IN Std_logic; Clkout: OUT Std_logic ); END; -- 结构体定义 Architecture Behavior Of FreDevider is signal Clk:Std_Logic; -- 中间临时变量 begin process(Clock) begin IF rising_edge(Clock) THEN Clk <= NOT Clk; END IF; END process; Clkout <= Clk; END
库是专门用于存放预先编译好的程序包的地方,对应一个文件目录,程序包的文件就放在此目录中,其功能相当于共享资源的仓库,所有已完成的设计资源只有存入某个“库”内才可以被其他实体共享。库的说明总是放在设计单元的最前面,表示该库资源对以下的设计单元开放。库语句格式如下:
常用的库有IEEE库、STD库和WORK库:
库的作用范围:
库说明语句的作用范围从一个实体说明开始到它所属的构造体、配置为止。当一个源程序中出现两个以上的实体时,两条作为使用库的说明语句应在每个实体说明语句前重复书写。
程序包是用VHDL语言编写的一段程序,可以供其他设计单元调用和共享,相当于公用的“工具箱”,各种数据类型、子程序等一旦放入了程序包,就成为共享的“工具”,类似于C语言的头文件,使用它可以减少代码的输入量,使程序结构清晰。在一个设计中,实体部分所定义的数据类型、常量和子程序可以在相应的结构体中使用,但在一个实体的声明部分和结构体部分中定义的数据类型、常量及子程序却不能被其他设计单元使用。因此,程序包的作用是可以使一组数据类型、常量和子程序能够被多个设计单元使用。
程序包分为包头和包体两部分。包头(也称程序包说明)是对包中使用的数据类型、元件、函数和子程序进行定义,其形式与实体定义类似。包体规定了程序包的实际功能,存放函数和过程的程序体,而且还允许建立内部的子程序、内部变量和数据类型。包头、包体均以关键字PACKAGE开头。程序包格式如下:
实体描述了设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。
类属说明的书写格式是:
其他
类属 GENERIC 参量是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分。比较常见的情况是利用类属来动态规定一个实体的端口的大小,或设计实体的物理特性,或结构体中的总线宽度,或设计实体中底层中同种元件的例化数量等等。一般在结构体中,类属的应用与常数是一样的,其中的常数名是由设计者确定的类属常数名,数据类型通常取 INTEGER 或TIME 等类型,设定值即为常数名所代表的数值,但需注意 VHDL 综合器仅支持数据类型为整数的类属值。例如:
结构体的任务是:定义结构体中的各项内部使用元素,如数据类型(TYPE),常数(CONSTAND),信号(SIGNAL),元件(COMPONENT),过程(POCEDURE),变量(VARIABLE)和进程(PROCESS)等。通过VHDL语句描述实体所要求的具体行为和逻辑功能。描述各元件之间的连接。
结构化描述、数据流描述、行为描述、混合。
原件和内联,通过低级器件的内联实现。
特点:
描述数据在系统中的流动过程,数据流使用一系列的并发语句实现逻辑,数据流的描述是在控制逻辑函数已经获得的条件下实现,数据流代码亦称为并发代码。
注意:并发语句在编译中被同时评估,因此语句的顺序无关紧要。
特点:
举例:
顺序和并发语句,通过输入输出响应描述。
特点:
举例:
用行为描述方式设计的全加器
能被主程序反复调用并能将处理结果传送到主程序的程序模块,子程序分为过程语句(Procedure)和函数(Functure)两种。子程序中的参数说明是局部的,只能在子程序体内起作用。
标识符用来定义常数、变量、信号、端口、子程序或者参数的名字。由字母(A~Z, a~z)、数组(0~9)和下划线(_)字符组成。
关键字(keyboard)是VHDL中具有特别含义的单词,只能作为固定的用途,用户不能用其做为标识符。
为全局变量,在程序包说明、实体说明、结构体描述中使用,用于声明内部信号,而非外部信号(外部信号为IN、OUT、INOUT、BUFFER),其在元件之间起互联作用,可以赋值给外部信号。
定义格式:
赋值格式:
常在结构体中用赋值语句完成对信号赋初值的任务,因为综合器往往忽略信号声名时所赋的值。
只在给定的进程(process)中用于声明局部值或用于子程序中,变量的赋值符号为“:=”,和信号不同,信号是实际的,是内部的一个存储元件(SIGNAL)或者是外部输入(IN、OUT、INOUT、BUFFER),而变量是虚的,仅是为了书写方便而引入的一个名称,常用在实现某种算法的赋值语句当中。
定义格式:
变量赋值符号":=",变量赋值立刻更新。
在结构体描述、程序包说明、实体说明、过程说明、函数调用说明和进程说明中使用,在设计中描述某一规定类型的特定值不变,如利用它可设计不同模值的计数器,模值存于一常量中,对不同的设计,改变模值仅需改变此常量即可,就如上一章所说的参数化元件。
定义格式:
信号与变量最大的不同在于,如果在一个进程中多次为一个信号赋值,只有最后一个值会起作用,而当为变量赋值时,变量的值改变是立即发生的。
VHDL是一种强类型语言,对于每一个常数、变量、信号、函数及设定的各种参量的数据类型(DATA TYPES)都有严格要求,相同数据类型的变量才能互相传递和作用,标准定义的数据类型都在VHDL标准程序表STD中定义,实际使用中,不需要用USE语句以显式调用。
VHDL常用的数据类型有三种:
Type BOOLEAN IS (FALSE, TRUE);
取值为FALSE和TRUE,不是数值,不能运算,一般用于关系运算符
TYPE BIT IS (‘0‘, ‘1‘);
取值为0和1,用于逻辑运算
TYPE BIT_VECTOR IS ARRAY(Natural range<>) OF BIT;
基于Bit类型的数组,用于逻辑运算
SIGNAL a: Bit_Vector (0 to 7); Signal a: Bit_Vector (7 to 0);
TYPE CHARACTER IS (NUL, SOH, STX, ..., ‘‘, ‘!‘, ...);
通常用‘‘引号引起来,区分大小写
通常用""双引号引起来,区分大小写
VARIABLE string_var: STING (1 to 7);
string_var := "ABCD"
取值范围,可用32位的有符号的二进制数表示
VARIABLE a: INTEGER -63 to 63
在实际应用中,VHDL仿真器将ITEGER作为有符号数处理,而VHDL综合器将Integer作为无符号数处理
要求用range子句为所定义的数限定范围,以便根据范围来决定表示此信号或变量的二进制的位数。
实数类型仅能在VHDL仿真器中使用,综合器不支持
取值范围
物理量数据,包括整数和单位两个部分
时间类型仅能在VHDL仿真器中使用,综合器不支持
范围从
表达方法包含数字、(空格)单位两部分,如(10 PS)
常用单位:fs,ps,ns,us,ms,sec,min,hr
表示系统状态
该类型仅能在VHDL仿真器中使用,综合器不支持
TYPE severity_lever IS (NOTE, WARNING, ERROR, FAILURE)
STD_LOGIC
:工业标准的逻辑类型,取值为‘0’(强制为高)、‘1’(强制为低)、‘Z’(高阻态)、‘X’(强未知)、‘W’(弱未知;弱信号不定)、‘L’(弱0;弱低)、‘H’(弱1;若高)、‘-’(忽略;不关心)、‘U’(未初始化),只有前四种具有实际物理意义,其他的是为了与模拟环境相容才保留的。STD_LOGIC_VECTOR
:工业标准的逻辑类型集,STD_LOGIC的组合。TYPE 数据类型名 IS (枚举文字,枚举文字,. . . .)
TYPE 数据类型名 IS RANGE 约束范围;(如-10到+10)
TYPE 数据类型名 IS ARRAY(下限 TO 上限) OF 类型名称
关于运算符的分类暂不详究。。。
顺序语句和并行语句是VHDL程序设计中两大基本描述语句系列。顺序语句(Sequential Statements)用来实现模型的算法描述;并行语句(Concurrent Statements)用来表示各模型算法描述之间的连接关系,这些语句从多侧面完整地描述数字系统的硬件结构和基本逻辑功能,其中包括通信的方式、信号的赋值、多层次的元件例化以及系统行为等。
标签:-o 类型 例子 for reset 有符号数 赋值运算符 buffer isp
原文地址:https://www.cnblogs.com/uhanhi/p/13185337.html