欢迎来到天天文库
浏览记录
ID:32399296
大小:30.50 KB
页数:3页
时间:2019-02-04
《generic类属说明语句》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、GENERIC类属说明语句类属GENERIC参量是一种端口界面常数常以一种说明的形式放在实体或块结构体前的说明部分类属为所说明的环境提供了一种静态信息通道类属与常数不同常数只能从设计实体的内部得到赋值且不能再改变而类属的值可以由设计实体外部提供因此设计者可以从外面通过类属参量的重新设定而容易地改变一个设计实体或一个元件的内部电路结构和规模类属说明的一般书写格式如下GENERIC([常数名数据类型[:设定值]{常数名数据类型[:设定值]}) 类属参量以关键词GENERIC引导一个类属参量表在表中提供时间参数或
2、总线宽度等静态信息类属表说明用于设计实体和其外部环境通信的参数传递静态的信息类属在所定义的环境中的地位与常数十分接近但却能从环境如设计实体外部动态地接受赋值其行为又有点类似于端口PORT因此常如以上的实体定义语句那样将类属说明放在其中且放在端口说明语句的前面在一个实体中定义的来自外部赋入类属的值可以在实体内部或与之相应的结构体中读到对于同一个设计实体可以通过GENERIC参数类属的说明为它创建多个行为不同的逻辑结构比较常见的情况是利用类属来动态规定一个实体的端口的大小或设计实体的物理特性或结构体中的总线宽度
3、或设计实体中底层中同种元件的例化数量等等一般在结构体中类属的应用与常数是一样的例如当用实体例化一个设计实体的器件时可以用类属表中的参数项定制这个器件如可以将一个实体的传输延迟上升和下降延时等参数加到类属参数表中然后根据这些参数进行定制这对于系统仿真控制是十分方便的其中的常数名是由设计者确定的类属常数名数据类型通常取INTEGER或TIME等类型设定值即为常数名所代表的数值但需注意VHDL综合器仅支持数据类型为整数的类属值程序3-2和3-3是两个使用了类属说明的实例描述 程序3-2 ENTITYmcu1I
4、SGENERIC(addrwidth:INTEGER:=16);PORT( add_bus:OUTSTD_LOGIC_VECTOR(addrwidth-1DOWNTO0)); ...在这里GENERIC语句对实体mcu1作为地址总线的端口add_bus的数据类型和宽度作了定义即定义add_bus为一个16位的标准位矢量定义addrwidth的数据类型是整数INTEGER其中常数名addrwidth减1即为15所以这类似于将上例端口表写成PORT(add_bus:OUTSTD_LOGIC_VECT
5、OR(15DOWNTO0));由程序3-2可见对于类属值addrwidth的改变将对结构体中所有相关的总线的定义同时作了改变由此将改变整个设计实体的硬件结构程序3-32输入与门的实体描述VHDL实用教程22ENTITYPGAND2IS GENERIC( trise:TIME:=1ns; tfall:TIME:=1ns); PORT( a1:INSTD_LOGIC; a0:INSTD_LOGIC; z0:OUTSTD_L
6、OGIC);ENDENTITYPGAND2;这是一个准备作为2输入与门的设计实体的实体描述在类属说明中定义参数trise为上沿宽度tfall为下沿宽度它们分别为1ns这两个参数用于仿真模块的设计 以下的程序3-5是一个顶层设计文件它在例化语句中调用了程序3-4读者应注意到在程序3-4中的类属变量n并没有如程序3-2那样明确规定了它的取值n的具体取值是在程序3-5中的类属映射语句GENERICMAP()中指定的并在两个不同的类属映射语句中作了不同的赋值 程序3-4和3-5给出了类属语句的一种典型应用显
7、然类属语句的应用为方便而迅速地改变电路的结构和规模提供了极便利的条件 程序3-4 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL;ENTITYandnIS GENERIC(n:INTEGER); PORT(a:INSTD_LOGIC_VECTOR(n-1DOWNTO0); c:OUTSTD_LOGIC);END;ARCHITECTUREbehavOFandnIS BEGIN PROCESS(a) VARI
8、ABLEint:STD_LOGIC;BEGIN int:='1'; FORiINa'LENGTH-1DOWNTO0LOOP IFa(i)='0'THEN int:='0'; ENDIF;ENDLOOP;c<=int;ENDPROCESS;END;程序3-5 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL;ENTITYexnIS PORT(d1,d
此文档下载收益归作者所有