VHDL语言的基本要素(大全)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 重载=运算符的函数。此重载运算符允许以下的代码段被执行。

相关文档
最新文档