FPGA学习笔记05-VHDL语法基础-类属语句(GENERIC)
一、概述
类属参量是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分。
类属为所说明的环境提供了一种静态信息通道。
类属与常数不同,常数只能从设计实体的内部得到赋值,且不能再改变,而类属的值可以由设计实体外部提供。
使用GENERIC 语句易于模块化和通用化。有些模块的逻辑关系是明确的,但是由于半导体工艺、半导体材料的不同,而使器件具有不同的延迟。
为了简化设计,对该模块进行通用设计,参数根据不同材料、工艺待定。
因此,设计者可以从外面通过类属参量的重新设定而容易地改变一个设计实体或元件地内部电路结构和规模。
二、书写格式
GENERIC(常数名 数据类型 := 设定值);
三、应用实例
- 定义实体的端口大小;
- 设计实体的物理特征;传输延迟,上升和下降延迟等;
- 结构体的总线宽度;
- 设计实体中底层中同种原件的例化数量;
四、程序与仿真
1 entity and2 is 2 generic (rise,fall:TIME); 3 port(a,b:IN bit;c:OUT bit); 4 end and2; 5 6 architecture generic_example of and2 is 7 signal internal_signal : BIT; 8 begin 9 internal_signal <= a and b; 10 c <= internal_signal AFTER(rise) when internal_signal = '1' ELSE internal_signal AFTER(fall); 11 end architecture generic_example;
激励文件程序:
1 library ieee; 2 use ieee.std_logic_1164.all; 3 use ieee.std_logic_arith.all; 4 use ieee.std_logic_unsigned.all; 5 6 entity tb_and2 is 7 end entity; 8 9 architecture a of tb_and2 is 10 component and2 is 11 generic (rise,fall:TIME); 12 port(a,b:IN bit;c:OUT bit); 13 end component; 14 15 signal a_t : bit; 16 signal b_t : bit; 17 signal c_t : bit; 18 19 begin 20 a_t <= '0','1' after 10 ns; 21 b_t <= '0','1' after 10 ns; 22 u0: and2 23 generic map(5 ns,7 ns) 24 port map 25 ( a => a_t, 26 b => b_t, 27 c => c_t 28 ); 29 end a;
仿真:
说明:10ns时,internal_signal已经拉高,但是c要延迟5 ns再拉高,即为参数说明的示例结果。