Komponenten-Konfiguration

Konfigurationsanweisungen – Komponenten-Konfiguration

ENTITY halfadder IS
PORT (sum_a, sum_b : IN bit;
sum, carry : OUT bit );
END halfadder;

--------------------------------------------

ARCHITECTURE structural OF halfadder IS

-- Komponentendeklarationen
COMPONENT xor2
PORT (c1, c2 : IN bit; c3 : OUT bit);
END COMPONENT ;

COMPONENT and2
PORT (c4, c5 : IN bit; c6 : OUT bit);
END COMPONENT ;

BEGIN

-- Komponenteninstantiierungen
xor_instance : xor2
PORT MAP (sum_a,sum_b,sum);
and_instance : and2
PORT MAP (sum_a,sum_b,carry);

END structural;

--------------------------------------------

CONFIGURATION ha_config OF halfadder IS
FOR structural
FOR xor_instance : xor2
USE ENTITY work.exor (behavioral)
PORT MAP (c1,c2,c3) ;
END FOR ;

FOR and_instance : and2
USE CONFIGURATION work.and2_config
PORT MAP (a => c4, b => c5, y => c6) ;
END FOR ;


END FOR ;
END ha_config ;
Die Komponentenkonfiguration stellt den Zusammenhang zwischen den instantiierten Komponenten einer strukturalen Architektur und den dafür verwendeten Modellen her.

Die Komponentenkonfiguration kann auf verschiedene Arten erfolgen:

  • Zugreifen auf Konfiguration der Komponente selbst (USE CONFIGURATION c_name , siehe Beispiel and2)
  • explizite Auswahl von ENTITY und ARCHITECTURE ( USE ENTITY e_name (a_name) , siehe Beispiel xor2)
In beiden Fällen kann dabei eine von den Defaulteinstellungen (siehe weiter unten) abweichende Definition von PORT-Verknüpfung (PORT MAP) und der GENERIC-Definition (GENERIC MAP) angegeben werden. Hier gelten die Regeln der ''positional association'' (Angabe nach Reihenfolge) oder der ''named association'' (explizites Mappen mit ''=>'').
  • Schließlich kann noch die Default-Konfiguration (siehe weiter unten) Verwendung finden.
CONFIGURATION ha_config2 OF halfadder IS
FOR structural
FOR ALL : xor2
USE ENTITY work.exor (behavioral)
PORT MAP (c1,c2,c3) ;
END FOR ;

FOR OTHERS : and2
USE CONFIGURATION work.and2_config
PORT MAP (a => c4, b => c5, y => c6) ;
END FOR ;


END FOR ;
END ha_config2 ;
Um die zu konfigurierende Komponente auszuwählen gibt es neben der exakten Angabe von Instanzname und COMPONENT-Name (siehe erstes Beispiel) auch die Möglichkeit, mehrere Instanzen zusammenzufassen und damit gleich zu konfigurieren:
  • Das Schlüsselwort ALL wählt alle Instanzen einer COMPONENT aus.
  • Das Schlüsselwort OTHERS wählt alle bis dahin noch nicht explizit konfigurierten Instanzen einer COMPONENT aus.
ENTITY xor2 IS
PORT (c1, c2 : IN bit; c3 : OUT bit);
END xor2;

ENTITY and2 IS
PORT (c4, c5 : IN bit; c6 : OUT bit);
END and2;


....
....
....


CONFIGURATION ha_config3 OF halfadder IS
FOR structural

-- Default-Konfiguration aller Instanzen
-- aufgrund von Namensgleichheit zwischen
-- COMPONENT und ENTITY, Namens-, Typen-
-- und Richtungsgleichheit aller PORTS
-- und Existenz einer gueltigen
-- (zuletzt compilierten) Architektur.



END FOR ;
END ha_config3 ;
Die einfachste Art einer Konfiguration ist die Default-Konfiguration:

PORT MAP : Es werden PORTS der Entity und der COMPONENT auch ohne explizite PORT MAP verknüpft, wenn Namen, Richtung und Typ übereinstimmen.

GENERIC MAP : Entsprechendes (Verknüpfung nach Typ und Namen) gilt für die GENERICs. Werden allerdings in der COMPONENT keine GENERICs verwendet, so gelten die Defaultwerte aus der ENTITY.

Architektur : Fehlt die Angabe der Architektur, so wird die zuletzt compilierte Architektur benutzt.

Konfiguration : Fehlt die komplette Komponentenkonfiguration, so wird diejenige ENTITY verwendet, deren Namen mit der COMPONENT übereinstimmt. Es gelten hier Regeln fü Default-Architektur, -PORT MAP und -GENERIC MAP.

Im nebenstehenden Beispiel existieren Modelle, deren Schnittstellen mit denen der COMPONENTs aus dem ersten Beispiel übereinstimmen. Es kann deshalb die Komponentenkonfiguration entfallen.