VHDL语言的基本要素(大全)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VHDL语言的基本要素
一、数据对象
VHDL语言的主要数据对象有信号,变量,常量。
信号—信号是电路中的物理量,对应于电路的连线、节点;信号说明全局量,用于描述中的构造体(Architecture), 实体(Intity),程序包(package)。
变量—变量是程序运算中的中间量,并不对应电路中的物理量。
变量说明局部量,用于进程语句(process), 函数(Function), 过程(procedure)。
常量—常数也不对应电路中的物理量,当常量说明全局量,在构造体(Architecture), 实体(Intity),程序包(package),进程语句(process), 函数(Function), 过程(procedure)中均可使用。
数据对象的定义格式:
signal 信号名:数据类型,约束条件,表达式
Variable 变量名:数据类型,约束条件:=表达式
Constant 常量名:数据类型,约束条件:=表达式
例如:Variable count:INTEGER RANGE 0 TO 255:=10
Constant Daly:Time:=100ns
信号代入和变量赋值的区别:两者形式不同,操作过程也不相同。
变量赋值符“:=”,信号的代入符“<=”。
在变量的赋值语句中,该语句一当执行,其值立即将赋予变量;而信号的代入,其语句执行后不会立即使信号发生代入,在下条语句
执行时,仍使用原来的信号值,如进程语句中的敏感表的信号代入就是如此。
二、数据类型
VHDL语言中的数据类型,一般而言可分为:标量类型和组合类型。
在实际使用中,也可分成予定义类型和用户定义类型。
VHDL语言是强类型的语言,主要可按如下分类和变换处理。
①标准数据类型
⑴整数⑵实数(浮点数)-1.0E+38~+1.0E38 ⑶位bit
(0,1)
⑷位矢量⑸布尔量,“假”,“真”⑹字符(ASCⅡ)字符
⑺时间
⑻错误等级⑼自然数(大于等于0的整数)⑽字符串
(字符矢量)
②用户定义的数据类型
TYPE 数据类型名{数据类型名} 数据类型定义
⑴枚举类型⑵整数类型⑶实数类型⑷数组类型
⑸存取类型⑹文件类型⑺记录类型⑻时间类型③用户定义子类型
SUBTUPE 子类型名IS 数据类型名[范围]
例:SUBTYPE digit is INTEGER RANGE 0 TO 9
④数据类型转换
数据类型的变换函数通常由“STD_LOGIC_1164”,
“STD_LOGIC_ARITH”,“STD_LOGIC_UNSIGNED”的程序包提供
例如,在STD_LOGIC_1164程序包中,
TO_STD LOGIC VECTOR(A) 由BIT_VECTOR转换为STD_LOGIC_VECTOR
TO_BITVECTOR(A) 由STO_LOGIC_VECTOR转为BIT_VECTOR
TO_STDLOGIC(A) 由BIT转换为STD_LOGIC
TO_BIT(A) 由STD_LOGIC转换成BIT signal a: BIT_VECTOR(11 DOWNTO 0)
signal b: STD_LOGIC_VECTOR(11 DOWNTO 0)
a<=X”A8” 十六进制值可赋予位矢量
b<=X”A8” 语法错,十六进制不能赋予.STD 矢量
b<=TO_STDLOGICVECTOR(X“AF7”)
b<=TO_STDLOGICVECTOR(O“5177”)八进制变换
b<=TO_STDLOGICVECTCR(B“1010_1111_0111”)
下表中也给出一些典型的类型变换函数
三、运算符
运算符的优先级如下表所示:运算符的优先级
例如,并置运算符的使用:
tmp_b<=b AND (en&en&en&en) y <= a & tmp_b
第一个语句表示b 的4位位矢量由en 进行选择 得到一个4位位矢量输出
第二个语句表示4位位矢量a 和4位位矢量b 再 次连接(并置)构成8位的位矢量y 输出 右图所示为并置运算符操作的电路示意。
VHDL 语言程序的基本结构
⑴ 实体(Entity )
实体主要由实体说明和构造体组成;实体说明描述电路的外部特征,
构造体描述的是电路内部的逻辑。
①实体说明主要包括·类属参数说明 ·端口说明
②构造体主要包括 ·名称命名 ·定义语句 ·并行处理语句等 定义语句是对其内部使用的信号、常数、数据类型、函数定义
y(4) en
b(0) b(1) b(2) b(3) y(5) y(6) y(7)
a(0) a(1) a(2) a(3)
实体
实体说明
接口说明
构造体
功能定义entity top is port(
i, j, k: in bit; z: out bit);
end top;
architecture top of top is
signal h: bit;
begin
u1: and2 port map(a=>i, b=>j, x=>h); u2: or2 port map(a=>h, b=>k, y=>z); end;
端口配置中的形参和实参
设计实体与其实体说明、构造体的关系
⑵构造体的子结构
构造体的子结构主要可由如下语句结构组成
·Block语句结构
·Process语句结构过程(procedure)·SUBPROGRAMS结构
函数(Function)
⑶程序包、库、配置
重载运算符(overloaded operators):和其他运算符一样,关系运算符也可以重载。
重载运算符允许多种类型使用运算符(这些运算符不是由IEEE1076标准预定义的)。
运算符可能由用户定义函数重载,但很多重载运算符是由IEEE1164和IEEE1076.3标准所定义。
例如,IEEE 1076标准定义了为类型signed和integer以及unsigned和natural 重载=运算符的函数。
此重载运算符允许以下的代码段被执行。