1.实体:其电路意义相当于器件,它相当于电路原理图上的元器件符号。它给出了器件的输入输出引脚。实体又被称为模块。
2.结构体:这个部分会给出实体(或者说模块)的具体实现,指定输入和输出的行为。结构体的begin后面是一组并行语句,它的执行是不以书写顺序为准的。
3.数据对象:
(1)常量一旦赋值就不会发生变化,格式为:
constant 常数名:数据类型:=表达式;
(2)变量声明的示例:
(3)对信号赋值使用<=,允许产生延时。
总结一下,变量只能在进程语句中说明和使用;信号、常量可以在结构体和进程语句中使用,变量、常量用:=赋值,无延时;信号用<=赋值,有延时。
(4)枚举类型(用户自定义)
例如:
type color is (blue, green, yellow, red) ;
编码顺序是默认的,左边的第一个元素编码为0,以后自动加1,每个元素都是位矢量,位矢量的长度由所列元素的个数决定。比如说上面的例子中有四个元素,位矢量的长度就是2.
(5)自定义整数、实数类型:它们是标准实数、整数类型的的子类型。书写格式为:
type 数据类型名称 is integer range 整数范围 ;
type 数据类型名称 is real range 实数范围 ;
(6) 数组类型:
第一种是限定数组,例如:
type stb is array (7 downto 0) of bit ;
variable addend: stb ; – 变量addend定义为stb数组
第二种是非限定数组,例如:
type bit_vector is array (integer range <>) of bit ;
variable my_vector: bit_vector (5 downto -5) ;
–数组的下标排序是从5到-5
(7) 逻辑运算符:
NOT – 取反
AND – 与
OR – 或
NAND – 与非
NOR – 或非
XOR – 异或(不同为1,相同为0)
(8) 算术运算符中,只有加减乘除能编译成逻辑电路,其他的就很困难甚至不可能。
(9)<=在VHDL中有两种可能,一种用来给信号赋值,另一种表示小于等于。
(10)并置运算符用于位或位矢量的连接。例如:
signal a,b,c : bit ;
signal x,y : bit_vector(2 downto 0)
z <= a&b&c ; – z是3位位矢量
w <= x&y ; – w是6位位矢量