VHDL的运算符号
VHDL中主要有六类运算符号:
赋值运算、逻辑运算、算术运算、关系运算、连接运算、移位运算;
双目运算时,两个运算量必须类型相同;
VHDL中运算没有左右优先级差别;
算术>关系>逻辑,NOT的优先级别最高;
赋值运算符
<=信号赋值:将右端值赋给左端信号;
:=变量赋值:将右端值赋给左端变量;或用于赋初始值;
=>数组内部分元素赋值;
逻辑运算符
AND(与)、OR(或)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)
和NOT(取反);
适用类型:
STD_LOGIC、STD_LOGIC_VECTOR
BIT、BIT_VECTOR、BOOLEAN;
算术运算:
/(除)、*(乘)、+(加)、-(减)
MOD(求模)、REM(取余)、**(指数)、ABS(绝对值);
适用类型:
INTEGER、REAL、BIT、BIT_VECTOR、TIME;
关系运算:
=>(大于等于)、<=(小于等于)
>(大于)、<(小于)、/=(不等于)、= (等于);
关系运算的结果为boolean类型:false、True;
注意:
小于等于符号与信号赋值符号的写法相同,应注意使用位置和意义;
连接运算:&
适用类型:
bit、bit_vector(位矢量数据类型)、character、string
std_logic(标准位类型)、std_logic_vector(标准逻辑矢量数据类型)
VHDL中库的主要种类:
IEEE库、STD库、ASIC库、
work库、用户定义库;
库说明语句格式
Library 库名;
use 库名.包集合名.范围(或项目名);
例:
IEEE库:
library ieee;
use ieee.std_logic_1164.all;使用标准逻辑量的定义和运算;
use ieee.std_logic_unsigned.all;无符号数算术运算的定义;
use ieee.std_logic_arith.all;使用符号数算术运算的定义;
STD库:
ASIC库:
library altera;
use altera.maxplus2.all;
library lpm;
use lpm.lpm_components.all;
WORK库:
use work.all;
package包集合
数字电路设计中经常使用的包集合:
ieee.std_logic_1164 逻辑量的定义
ieee.std_logic_arith 数据转换,逻辑判断
ieee.std_logic_unsigned 算术运算
std.textio 文本数据输入/输出格式
包的结构与定义:(用户自定义的包集合)
package 包集合名 is
说明语句;(只有名称)
end 包集合名;
包集合体:
package body包集合名 is
说明语句;(完整定义)
end 包集合名;
调用:use work.包集合名.all;
configuration 配置
configuration 配置名 of 实体名 is
for 选择的构造体名
end for;
end 配置名;
含有完整程序结构(包含实体和结构体)的VHDL表述称为设计实体;其程序代码常被称为VHDL的RTL描述;
ENTITY、IS、PORT和END ENTITY都是描述实体的关键词,关键词不分大写和小写
BOOLEAN类型的取值分别是:true(真)和false(伪),分别用'1'和'0'表达true和false;
程序的文件名尽可能与该程序的实体名一致,原则上文件名不分大小写,但推荐使用小写,特别是后缀;
类型STD_LOGIC比BIT包含的内容丰富和完整得多,当然也包含了BIT类型
BIT数据类型定义:TYPE BIT IS('0','1'); --只有两种取值
STD_LOGIC数据类型定义:
TYPE STD_LOGIC IS ('U','X','0','1','Z','W','L','H','-');
STD_LOGIC所定义的9种数据的含义是:'U'表示未初始化的;'X'表示强未知的;'0'表示强逻辑0;'1'表示强逻辑1;'Z'表示高阻态;'W'表示弱未知的;'L'表示弱逻辑0;'H'表示弱逻辑1;'-'表示忽略。
VHDL 标准中规定标准库STD 和工作库WORK 都是默认打开的
VHDL通过以下表式来测定某信号的跳变情况:<信号名>'EVENT
例:CLK'EVENT AND CLK = '1'
不完整的条件语句:即在条件语句中,没有将所有可能发生的条件给出对应的处理方式;
元件例化就是引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引进一个新的低一级的设计层次;
省略赋值操作符(OTHERS=>X)
HDL的文本输入方式、原理图输入方式、状态图输入方式、波形输入方式、MATLAB的模型输入方式,以及混合输入方式