赞
踩
标识符主要用来为端口、信号、变量、子程序、常数和参数等命名。
其规则如下:
5
678
0
156E2(=15600)
45_234_287 (=45234287)
1.335
88_670_551.453_909(=88670551.453909)
1.0
44.99E-2(=0.4499)
用这种方式表示的数由五部分组成:基 # 整数 # [指数]
10#170# (170)
16#FE# (254)
2#1111_1110# (254)
8#376# (254)
16#E#1 (224)
一般情况下VHDL对字母的大小写不敏感,但对字符的大小写是敏感的,
例:‘A’ 和 ‘a’ 是不同的。
在VHDL中字符串常用来作为说明文字出现。
例:“it is time out”, “ ERROR ”,“Both S and Q equal to 1”
注意:“a” 和 ‘a’是不同的
位串是用双引号括起来的数字序列,数字序列前面加上一个基数说明符:
B | 二进制基数符号,可以省略 |
---|---|
0 | 八进制基数符号 |
X | 十六进制基数符号(0~F) |
采用位串的优点是为了增加源代码的可读性
B"1_1101_1110" -- 二进制数数组,位矢数组长度是9
O"15" -- 八进制数数组,位矢数组长度是6
X"AD0" -- 十六进制数数组,位矢数组长度是12
"101_010_101_010" -- 二进制数数组,位矢数组长度是12
"0AD0" -- 表达错误,缺X
VHDL是一种硬件描述语言,硬件电路的工作过程实际上是信号的传输和存储的过程,所以VHDL最基本的描述对象是信号。为了便于描述,还定义了另外三类数据对象:变量、常量和文件。
常量是指在设计实体中不会发生变化的值
constant 常量名:数据类型 := 表达式 ;
注:
变量主要用于对暂时数据进行存储,它不能将信息带出对它作出定义的当前单元。
VARIABLE 变量名:数据类型 [:= 初始值];
变量赋值格式:变量名 := 表达式;
例如:
a := “1010101” ; ------位矢量赋值
b := ‘0’ ; ------------位赋值
x := 100.0 ; ----------实数赋值
注:
信号是描述硬件系统的基本数据对象,它是设计实体中并行语句模块间动态交换数据的段。在物理上信号对应着硬件设计中的一条连接线。
信号与端口都描述了电路中实际存在的节点(Node),只是信号描述的是实体内部的节点,而端口则描述实体与外界的接口。在语法上,信号的声明与端口的声明很相似。
SIGNAL 信号名: 数据类型 [:= 初始值] ;
信号赋值采用如下格式: 信号名 <= 表达式;
例如:
x <= 9;
y <= x;`
注:
变量VARIABLE
信号SIGNAL
对于VHDL的每一个数据对象来说,都要指定其数据类型,因此,VHDL需要提供用来指定对象的数据类型。
VHDL的强类型特性,使得VHDL在进行硬件描述时具有很高的灵活性。
VHDL的强类型特性主要体现在以下几个方面:
上述五大类数据类型又可分成在现成程序包中可以随时获得的预定义数据类型和用户自定义数据类型两类。
预定义数据类型是VHDL中最常用、最基本的数据类型,这些数据类型都已在VHDL的标准程序包Standard和std_logic_1164及其它的标准程序包中作了定义,可在设计中随时调用。
library ieee; use ieee.std_logic_1164.all;
U | 未初始化状态 |
---|---|
X | 不定态 |
0 | 逻辑0 |
1 | 逻辑1 |
Z | 高阻态 |
W | 弱不定态 |
L | 弱0 |
H | 弱1 |
- | 无关态 |
除标准的预定义数据类型外,VHDL还允许用户自行定义新的数据类型,由用户定义的数据类型可以有多种,如枚举类型、整数类型、实数类型、数组类型、记录类型和时间类型等
TYPE 数据类型名 IS 数据类型定义 [OF 基本数据类型] ;
注:
TYPE 数组名 IS ARRAY (数组范围) OF 数据类型 ;
type st1 is array (0 to 15) of std_logic;
TYPE 枚举名 IS (枚举内容)
如:在状态机描述中,使用枚举类型为每个状态命名,增加程序可读性。
type State_type is (Start,Step1,Step2,Final);
signal State : State_type;
SUBTYPE 子类型名 IS 基本数据类型 range 约束范围;
注:
例:
subtype dig is integer range 0 to 9;
VHDL中共有四类操作符:逻辑操作符、关系操作符、算术操作符和连接操作符
操作符 | 功能 | 操作数类型 |
---|---|---|
AND | 与 | std_logic、 bit、 boolean |
OR | 或 | std_logic、 bit、 boolean |
NOT | 取反 | std_logic、 bit、 boolean |
NAND | 与非 | std_logic、 bit、 boolean |
NOR | 或非 | std_logic、 bit、 boolean |
XOR | 异或 | std_logic、 bit、 boolean |
XNOR | 同或 | std_logic、 bit、 boolean |
操作符 | 功能 | 操作数类型 |
---|---|---|
+ | 加法 | 整数 |
- | 减法 | 整数 |
* | 乘法 | 整数和实数 |
SLL等 | 移位 | bit或布尔类型的一维数组 |
操作符 | 功能 | 操作数类型 |
---|---|---|
= | 等于 | 任何数据类型 |
/= | 不等于 | 任何数据类型 |
< | 小于 | integer、real、 bit、 std_logic等及其一维向量 |
<= | 小于等于 | integer、real、 bit、 std_logic等及其一维向量 |
> | 大于 | integer、real、 bit、 std_logic等及其一维向量 |
>= | 大于等于 | integer、real、 bit、 std_logic等及其一维向量 |
注:
并置运算符又称连接运算符,其符号为:&
功能是进行位的连接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。