VHDL-Kurs

[ASICs]  [Chip Typen]  [Chip Aufbau]  [Entwicklung ]  [Schnittstellen]  [Glossar]
 
     [Modellierung]  [Strategie]  [Synthese]  [ASIC Test]  [VHDL-Kurs] [Beispiel]
 
        
[VHDL-Typen]  [VHDL-Libraries]  [VHDL-Hierarchie]  [VHDL-Struktur]

VHDL-Kurs, Hierarchische Sprachelemente

Mit den folgenden Sprachelementen erfolgt in einem VHDL-Code die hierarchische Strukturierung.

package package_name is
  [Deklarationen, z.B. constant, component,
   function, procedure, resolution function, ...]
end package_name;

package body package_name is
  [Spezifikationen, z.B. function, procedure,
  resolution function]
end package_name;

In einem Package werden Definitionen eines Systems oder eines Designs zusammengefaßt, auf das alle Teile einen gemeinsamen Zugriff haben sollen. Dieses sind im Allgemeinen globale Konstanten und selbst definierte Typen, es können hier aber auch Prozeduren und Funktionen (z.B. Resolution Functions) aufgeführt werden. In dem package body befinden sich die Ausführungsteile der Prozeduren und Funktionen, während sich in der oberen Package Deklaration nur die entsprechenden Prozedur- und Funktionsaufrufe befinden, z.B.
procedure write_byte (addr, data : in integer);
 

entity entity_name is
  port (
sig_1_name : in sig_1_typename;
           sig_2_name : out sig_2_typename;
         ...
         b0, b1, b2   : in  b_typename;
         sig_n_name : inout sig_n_typename);

Die Entity beschreibt den Designnamen und die Schnittstellen des Designs. Der spätere Zugriff in anderen Teilen des Codes erfolgt über den Designnamen (hier: entity_name). Die Ports sind Signale, die in der architecture (s.u.) automatisch zur Verfügung stehen. Diese können die Option in, out oder inout haben, je nachdem ob das Signal ein Eingangs-, Ausgangs- oder ein bidirektionales Signal ist. Durch eine Entity wird kein Verhalten des Designs definiert.
 

architecture arch_name of entity_name is
  [Deklarationen, z.B. constant, signal, component, function, procedure, ]
  begin
   ...
  end
architecture_name;

Das Verhalten eines Designs (entity_name) wird in der architecture beschrieben. In VHDL ist es durchaus möglich, einem Design mehrere Verhalten zuzuordnen, z.B. ein Verhaltensmodell und eine Gattermodell. Die Zuordnung erfolgt über den arch_name und dem entity_name. In dem Deklarationsteil der architecture werden lokale Konstanten, Signale, Komponenten, usw. deklariert, die nur innerhalb dieser architecture bekannt sind.
 

component component_name
  port (sig_1_name : in sig_1_typename;
           sig_2_name : out sig_2_typename;
           ...
           sig_n_name : inout sig_n_typename); end component;

inst_name : component_name
  port map (archsig_1, archsig_2, ...
                   archsig_n);

Mit einer component kann in eine architecture ein anderes Element über seine entity eingebaut werden. Die Deklaration (links oben) erfolgt im Deklarationsteil einer architecture, die Einbindung innerhalb der architecture durch:
instance_name : comp_name port map (...);
In der port map werden die ports der Komponente mit den Signalen der jeweiligen architecture verbunden. Eine von zwei möglichen Methoden ist das Aufführen der Signale in der Reihenfolge der Port-Deklaration.
 

configuration conf_name of entity_name is
  for architecture_name
   ...
   for comp_inst_name : comp_name
     use entity
       lib_name.comp_name(arch_comp_name);
   end for;
   ...
  end for;
end conf_name;

 

 

 

 

 

configuration conf_name of entity_name is
end
conf_name;

Mit der configuration wird für eine Simulation die Struktur und Zuordnung der Entities und der jeweiligen Architekturen des obersten Designs (entity_name) festgelegt.
In der Konfiguration mit Namen conf_name wird dem Design entity_name die Architektur architecture_name zugewiesen. Diese wiederum enthält in diesem Beispiel eine oder mehrere Komponenten (entity), deren architecture wiederum auf gleiche Weise ausgewählt wird.
In dem Beispiel links befindet sich in der Architektur architecture_name eine Instantiierung der Komponente comp_name (Name in der Deklaration) mit dem Namen comp_inst_name. Dieser Instanz wird die Architektur arch_comp_name aus der Library lib_name zugewiesen wird.

... ist alles etwas kompliziert, aber sehr flexibel!

Gibt es pro entity nur eine architecture, kann bei vielen VHDL-Kompilern die vereinfachte configuration Version benutzt werden: Der Kompiler sucht sich so selbst die passende und einzig mögliche Konfiguration.
 



top

[Home] [ASICs] [Selbstmanagement] [Inselmeer] [Spiele]
[Ich über mich] [Links] [SiteMap] [Disclaimer]