文档介绍:教师:李军 Email:dpi_Lijun@
数据对象
双向和三态电路设计
IF语句概述
进程语句
仿真延时
第5章 VHDL设计进阶
教师:李军 Email:dpi_Lijun@
数据对象:数据对象类似一种容器,接受不同数据类型的赋值。数据对象分为三类:信号、变量和常量。
常量:表示一个恒定不变的值,在程序中不能改变。常量可定义在程序的任何设计单元,使用范围取决于它被定义的位置。
定义格式:CONSTANT 常数名:数据类型:= 表达式;
举例:
CONSTANT FBT : STD_LOGIC_VECTOR := "010110" ; -- 标准位矢类型
CONSTANT DATAIN : INTEGER := 15 ;
1. 数据对象
第五章
数据对象
1
双向和三态电路设计
IF语句概述
2
3
教师:李军 Email:dpi_Lijun@
1. 数据对象
变量:是一个局部量,只能在进程和子程序中使用,变量赋值是立即发生的,不存在延迟,主要用于在进程中临时存储数据。
定义格式:VARIABLE 变量名: 数据类型:= 初始值; 初始值的定义不是必需的,综合器不支持。
定义格式举例:
VARIABLE a : INTEGER RANGE 0 TO 15
VARIABLE d : STD_LOGIC := ‘1’;-
变量赋值格式:目标变量名:= 表达式;要求两端具有相同的数据类型。
变量赋值格式举例:
x:=11
y(0 TO 5):=b(2 TO 7)
第五章
数据对象
1
双向和三态电路设计
IF语句概述
2
3
教师:李军 Email:dpi_Lijun@
1. 数据对象
信号:类似于连接线,主要作为实体中并行语句模块间的信息交流通道。
定义格式:SIGNAL 信号名:数据类型:=初始值;
赋值格式:目标信号名<= 表达式 AFTER 时间量;
信号的特点
信号不必定义数据流动方向,它是双向的,实体的端口是明确规定了数据流动方向的信号。因此实体的端口是隐式的信号。
信号的定义范围是实体、结构体和程序包,在进程和子程序中不允许定义信号。
信号可以列入进程的敏感信号列表,变量不行。
第五章
数据对象
1
双向和三态电路设计
IF语句概述
2
3
教师:李军 Email:dpi_Lijun@
1. 数据对象
信号的赋值既可以出现在进程也可以在结构体的并行语句中,当信号用于进程中,属于顺序信号赋值,允许对同一信号进行多次赋值;当信号用于结构体中,属于并行信号赋值,不允许对同一信号进行多次赋值;
当信号在进程中被多次赋值时,只有最后的赋值语句有效;
进程中的信号与变量赋值
第五章
数据对象
1
双向和三态电路设计
IF语句概述
2
3
教师:李军 Email:dpi_Lijun@
1. 数据对象
信号与变量比较例1:例1和例2综合结果相同
. . .
ARCHITECTURE bhv OF DFF3 IS
BEGIN
PROCESS (CLK)
VARIABLE QQ : STD_LOGIC ;
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
QQ := D1 ;
END IF;
Q1 <= QQ;
END PROCESS ;
END ;
第五章
数据对象
1
双向和三态电路设计
IF语句概述
2
3
教师:李军 Email:dpi_Lijun@
1. 数据对象
信号与变量比较例2
…
ARCHITECTURE bhv OF DFF3 IS
SIGNAL QQ : STD_LOGIC ;
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
QQ <= D1 ;
END IF;
END PROCESS ;
Q1 <= QQ;
END ;
图:例1、2综合后的D触发器电路
第五章
数据对象
1
双向和三态电路设计
IF语句概述
2
3
教师:李军 Email:dpi_Lijun@
1. 数据对象
信号与变量比较例3:采用两个中间信号实现D触发器,有问题。
LIBRARY IEEE ;
USE ;
ENTITY DFF3 IS
PORT ( CLK,D1 : IN STD_LOGIC ;Q1 : OUT STD_LOGIC ) ;
END ;
ARCHITECTURE bhv OF DFF3 IS
SIGNAL A,B : STD_LOGIC ;--A、B定义应改为VARIABLE
BEGIN
PROCESS (CLK)