qjfun

VHDL学习

0
阅读(2138)

一直使用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):略。

Baidu
map