VHDL学习
0赞一直使用Verilog HDL编程,VHDL仅仅偶尔看过,并未系统学习,趁此空隙学习下~
一、VHDL程序的基本结构
1. 库的引用
library 库名
use 库名.库中程序包.程序包中的项
2.实体声明
entity 实体名 is
generic(参数名:数据类型:=值);
port(端口名:端口模式 数据类型)
end 实体名;
3.结构体的声明
4.结构体的定义
architecture 结构体名 of 实体名 is
结构体说明语句
begin
结构体描述语句;
end 结构体名;
5.配置;
二、VHDL操作符
1.赋值操作符
<= 信号赋值操作符
:= 变量赋值操作符
>= 矢量型数据对象的部分赋值
2.逻辑操作符
not 非门
and 与门
or 或门
nand 与非门
nor 或非门
xor 异或门
nxor 同或门
3.算术操作符
+ 和 可综合
- 差/负可综合
* 乘可综合
/ 除 一般不可综合,2的整数幂可综合
** 指数运算
abs 绝对值
mod 取模
rem 取余
4.关系操作符
= 相等
/= 不等
< 小于
> 大于
<= 小于等于
>= 大于等于
5.移位操作符
sll 逻辑左移 0填充
srl 逻辑右移 0填充
sla 算术左移 最右边值填充
sra 算术右移 最左边值填充
rol 循环左移 最左边值填充
ror 循环右移 最右边值填充
6.连接操作符
& 连接
7.操作符重载(略)
三、VHDL的平行语句
1.端口映射语句
用于模块调用,例化模块时用于传递类属性参数和端口连接;
2.信号赋值语句
信号 <= 表达式;
3.when条件选择语句
信号 <= 表达式1 when 条件1 else
表达式2 when 条件2 else
表达式3 when 条件3 else
。。。
表达式n;
4.generate语句
5.进程语句
【标号:】process(敏感信号列表)
声明语句;
begin
顺序语句1;
顺序语句2;
。。。
end process
6.过程调用语句
7.块语句
四、VHDL的数据对象
1.标识符
基本字符集组成;下划线不能为最后一个字符;字母不区分大小写。
保留字。
2.常量
constant 常量名:常量的数据类型:=值
3.变量
variable 变量名:数据类型:=初始值
4.信号
signal 信号名:数据类型:=初始值
信号既可以表示内部连线又可以表示寄存器。
信号可赋予属性。
(信号赋值“ <= ”,变量赋值“ := ”)
5.别名
alias 别名名称:别名的数据类型 is 数据对象
6.常量、变量和信号的比较
常量相当于恒定电平,变量和信号相当于组合电路中门与门间的连接及连线上的信号值。
信号/变量,区别:
--信号赋值需要delta延时,变量赋值无延时;
--信号除当前值外有许多相关的信息,如历史信息,而变量只有当前值;
--进程对信号敏感而对变量不敏感;
--信号可以是多个进程的全局信号,而变量值在定义他们的顺序域可见;
--信号可对应硬件描述,变量无对应。
信号具有更多的硬件属性,实际使用较多。
五、VHDL的数据类型
1.标量(scalar):一个存储单元,有具体的数值大小,包括枚举类型、整数类型、物理类型和浮点类型;
2.复合(composite):由相同类型的元素(数组)或不同类型的元素(记录类型)组成;
3.存取(access):略;
4.文件(file):略。