第1节 VHDL的基本语法结构(1)
第1节 VHDL的基本语法结构(1)
数据对象
- 在VHDL中,凡是可以被赋予一个值的客体就叫做数据对象,主要包括四种类型:
--常量:规定的常数。
--信号:对应物理设计中的硬件连线
--变量:局部数据的暂时缓存
--文件:作为参数向子函数传递 - 对象说明格式:
--对象类型 标志符表:类型标识[:=表达式];
--Constant Width : Integer : = 8;
数据对象—常量
- 指在设计描述中不发生变化的值。
- 改善代码可读性,便于代码修改。
- 必须在程序包、实体、结构体或进程的说明区域进行说明(注意作用范围)
- 一般要赋一初始值
- 保留字:CONSTANT
CONSTANT Width : Integer :=8
- 在程序包中说明的常量,可以由所含
的任何实体、结构体所引用; - 在实体说明中说明的常量,只能被该
实体的结构体所引用; - 在结构体中说明的常量,只可以被该
结构体内部的语句所引用; - 在进程中说明的常量,只能在本进程
中进行引用。
数据对象—信号
- 信号起着电路中“连线”的作用,将实体与实体、元件与元件连接起来构成系统。
- 在程序包、实体说明、结构体中都可以对信号进行说明。(信号的作用范围)
- 保留字——SIGNAL
- <=用来给信号赋值
SIGNAL Count: Bit_Vector(3 downto 0);
IF Rising_Edge(clk) THEN Count<=Count+1; END IF;
- 在程序包中说明的信号,可由所含的
任何实体和结构体引用; - 在实体说明中定义的信号,只能在本
设计实体中使用; - 在结构体中说明的信号,只能被该结
结构体内部的语句所引用。
信号举例

信号赋值

信号的延迟
- 对某一信号进行赋值的时刻和信号得到值的时刻之间总有一个延迟存在,即从发生到生效的时间间隔。
- 惯性延迟
--当电流增加或减少时,由于电容的存在,电路中的节点电压不可能瞬时发生变化,节点电压经过阈值之后晶体管状态才发生变化。这种时间上的滞后称为惯性延迟。 - 传输延迟:
--连线、总线、PCB板上信号输入到输出的延迟。 - 仿真与综合
--仿真:惯性延迟、传输延迟、δ延迟
--综合:不支持VHDL中的延迟设定
数据对象—变量
- 变量的作用:对暂时数据进行局部存储;不能表达真实物理信号。
- 变量是一个局部量,只能在进程、过程、函数中调用;只能在进程、过程、函数的说明区域中加以说明。
- 保留字——VARIABLE VARIABLE tmp : Bit :=‘0’; tmp:=‘1’;
- VHDL-93支持共享变量(shared variable),可在过程、进程、函数之外定义,可在结构体、块语句、程序包中定义。
变量赋值

信号和变量的作用范围

信号和变量的区别

数据对象—文件
- VHDL-93中新增的数据对象,是一种传输大量数据的载体。
- 不能通过赋值来更新文件内容。可作为参数向子程序传递,并通过子程序对文件进行读写。程序包textio中定义了很多对文本文件进行读写操作的过程和函数。
- 一般在写测试文件时用来读取激励信号和写数据输出,以及在输出或显示测试结果时从文件中读取结果信息。
- 保留字:FILE
别名
- 标志一个以存在的数据对象
- 引用别名等效于引用原始数据对象
- 给别名赋值等效于给原始数据赋值
- 保留字:
ALIAS ALIAS Bank:Bit_Vector(3 downto 0) IS Address(27 downto 24);


