构造体 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 关系判断的结果