构造体
VHDL 的构造体基本结构 p.271 表 4-28
architecture arch_name of entity_name is
declarations and definitions; 说明部分
begin
concurrent statement; 语句部分
end arch_name;
构造体语法要点:
每个构造体必须属于一个实体;
每个构造体必须有一个名称:
通常可以根据描述方式起名: str rtl beh
构造体分为两部分:
is---begin 之间: 说明部分
type declarations; 类型说明
signal declarations; 信号说明
constant declarations; 常量说明
component declarations; 元件说明
function definitions; 函数说明
procedure definitions; 过程说明
begin---end 之间: 语句部分 各种并行语句
信号赋值语句 数据流描述
元件例化语句 结构描述
进程语句 行为描述
除了第一句和 begin 句外,其余各句均以分号结束;
在每一部分中,各语句处于并列状态,执行时不分先后次序;
VHDL 的数据对象
signal 信号 constant 常量 variable 变量
每个数据对象必须有特定的名称;
命名规则与实体名相同;
signal 信号
电路中端口、连接线的体现,具有具体物理含义,在构造体
内为全局变量;
信号使用前必须进行说明:
输入/输出信号在实体中说明;
通用信号在包集合中进行说明;
模块内部信号在结构体内说明;
信号说明语句基本格式
signal signal_name : signal_type;
信号名 信号类型
例:signal temp : std_logic;
signal bus_a : std_logic_vector(7 downto 0);
注意:端口(输入/ 输出)信号已在实体中说明,在
结构体中就不再说明;
信号的赋值
在程序中采用“<=”(赋值语句)进行:
信号名 <= 信号值(表达式) ;
例: temp<='1' ;z<=x and not y ;
d<=“0110”;
赋值号两边的信号原则上必须为相同类型;
信号可在构造体内、过程、进程内赋值;
信号不能在函数内赋值;
constant 常量
根据说明所在的位置,可表现为全局或局部常量;
常量在说明时赋值,所赋值与说明的类型必须一致;
常量一旦赋值就不能在程序中通过语句更改;
常量说明语句基本格式:
constant 常量名:常量类型:= 常量值
例:
constant vcc: real:= 5.0;
constant grn: std_logic:= '0';
constant tpd: time:= 5ns;
constant fbus:std_logic_vector:=“0110”;
variable 变量
表达各类运算中间量,通常没有具体物理对应;
变量在函数、过程、进程中进行说明,为局部变量;
变量只在顺序语句中使用;
变量说明语句基本格式:
variable 变量名:变量类型
变量的赋值
采用“:=”符号进行:
变量赋值语句
变量名:= 变量值(表达式) ;
例: va := a ;
te := d+c;
wb := “1001”;
赋值号两边变量必须为相同类型;
注意:变量只在函数、过程、进程等子结构中使用,一旦
子结构执行结束,变量值随即消失;
VHDL 数据对象的类型
VHDL 的重要特点:
每一个数据对象都必须规定其类型;
类型规定影响范围:
数据形式、取值范围、排列顺序、可进行的运算;
任何信号、变量、常量、函数在使用前都必须进行类型说明;
任何代入或赋值必须在类型一致的情况下才能进行;
任何运算符号只对特定的同类型量进行运算;
VHDL 的类型可分为两大类:
预定义类型 (用户)自定义类型
预定义类型
由语言标准预先规定,可以直接使用
常用预定义类型见p.271 表4-29
bit bit_vector boolean character time real
位 位矢量 布尔量 字符 时间 实数
integer natural positive severity_level string
整数 自然数 正整数 错误等级 串
bit 位 bit_vector 位矢量
0 1
可进行逻辑运算
boolean 布尔符号
false true
可进行逻辑运算
关系运算的结果
character 字符 string 字符串
ISO 8 位字符集
(前128 个为ASCⅡ编码符号)
在字符类型中,大写字母和小写字母表达不同含义,可以区
分,例如:`A` 和`a` 分别表达不同的字符。
可通过连接运算将字符组合为字符串: &
integer 整数
-(2
31
-1)— + (2
31
-1)
使用算术运算符号集
考虑到电路综合效率,对于整数类型尽可能限制在最小使用
范围;
例
entity t is
port(a,b: in integer range 0 to 15;
f: out bit);
end t;
architecture d of t is
begin
f<='1' when a=b else '0';
end d;
time 时间
带有单位(ns ms min 等)
例: 50 ns 3 sec 25 hr
可进行算术运算
severity level 错误等级
note warning error failure
关系判断的结果