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.
|