2.3 VHDL层次化结构模型


2.3.3 配置指定

 1. 配置指定语句
 我们在介绍元件例化语句时已经指出:元件例化语句使例化元件和模板元件发生了对应关系。应当注意:模板元件是元件声明语句所声明的元件,而不是实体声明中所声明的实体。在设计过程的某些步骤上,设计者可能希望进一步把模板元件明确化,即指明该模板元件与哪一个设计库里的哪一个设计实体,以及该设计实体所选择的哪一个结构体相对应。配置指定(configuration specification)用来完成此项任务。
 下面的例子声明配置指定的简单用法,该例含四个库单元,假设其中的每一个库单元在分析后都放在同一个设计库中。这四个库单元是:(1)实体Inverter:(2)设计实体Invercer_user,(3)实体Invercer_user的结构体Invercer_user,(4)实体Invercer_user的结构体Inverter_body.实体Inverter_user中含有元件Inv的元件声明,结构体Invercer_user中含有一个引用Inv的元件例化语句和一个配置指定(在元件例化语句之前)。配置指定将Inv的例化元件与实体Inverter及它的结构体Inverter_body连接起来。
  需要注意的是,VHDL容许在配置指定的连接指示中引用尚未分析过的结构体(1nverter_body)。
 entity Inverter is
  port(I1: Bit; O1:Out Bit);
 end Inverter;


 entity Inverter_user is
 end Inverter_user;


 architecture Inverter_user of Inverter_user is
  signal S: Bit
  signal S_bar: Bit;
  component Inv
   port(In1: in Bit; Out1: out Bit);
  end component;
  for U1:Inv use entity Work.Inverter(Inverter_body)
--配置指定
  port map(I1=>In1,O1=>Out1);
 begin
  U1: Inv port map(S,S_bar);
--元件例化语句
 end Inverter_uscr;


 architecture Inverter_body of Inverter is
 begin
  O1<=not I1 after 5 ns;
 end Inverter_body;
 实体声明在许多方面可以与元件声明不同:实体的名字可以不同于元件的名字;实体声明中的端口可以多于元件声明中的端口;实体声明中的端口名可以不同于元件声明中的端口名。显然,配置指定必须考虑到元件名、端口名以及端口数目等方面的差别。