Aufrufe
vor 5 Jahren

Hardware-Entwurf mit VHDL

Hardware-Entwurf mit VHDL

Hardware-Entwurf mit VHDL Prof. Dr.-Ing. Stefan Wolter Elektrotechnik und Informatik • Umwandlung von Datentypen und expilizite Festlegung des Datentyps von Operanden: - Aufgrund der strengen Typenbindung in VHDL akzeptiert der Compiler keine Kombinationen von verschiedenen Datentypen. Verschiedene Typen müssen daher umgewandelt werden, entweder per Type-Casting oder durch Konvertierungsfunktionen (siehe entsprechende Packages). - In VHDL können zwischen „ähnlichen“ Datentypen Typtransformationen gemacht werden, in dem dem Namen des Datentyps, in den konvertiert werden soll, der zu konvertierende Wert in Klammern eingerahmt folgt (sog. Type-Casting). Beispiel: Type-Casting einer Fließkommazahl in eine ganze Zahl a := 2 ; b := 2.6 ; c := a + integer (b) ; -- c = 5 wegen Aufrundung ab 0.5 (einschließlich) - Eine Möglichkeit zur expliziten Festlegung des Datentyps von Operanden, die mehrere Datentypen haben können, sind sog. qualifizierte Ausrücke (qualified expressions). - Syntax für qualifizierte Ausrücke (qualified expressions): typ_name’(ambiguous_operand) Beispiel: Umwandlung einer Zeichenkette für den selbst definierten Subtyp fourbit SUBTYPE fourbit IS bit_vector(3 DOWNTO 0); SIGNAL a, b, c, d : bit; (a, b, c, d)

Hardware-Entwurf mit VHDL Prof. Dr.-Ing. Stefan Wolter Elektrotechnik und Informatik - Syntax für Vektoren mit unbeschränkter Größe: TYPE array_type_name IS ARRAY ( index_type RANGE ) OF base_type; - base_type bezieht sich auf den Typ der Elemente des Feldes. - index_type bezieht sich auf den Typ der Indizierung der Elemente des Feldes. Der Index-Type muß ein diskreter, kann ansonsten aber ein beliebiger Datentyp sein. Er bestimmt die voreingestellte Indizierung (Default-Indizierung). - Ist das Feld beschränkt und der Index-Typ eindeutig, können bei der Deklaration der Index-Typ und das Schlüsselwort RANGE wegfallen. - Das Zeichen zeigt dabei die unbeschränkte Länge des Vektors im Rahmen des möglichen Bereichs des index_type an. Die Konkretisierung des Bereichs erfolgt erst bei der Deklaration durch die Schlüsselwörter TO bzw. DOWNTO. - Die unbeschränkten Vektortypen string und bit_vector sind im Package standard deklariert. - Beispiele: TYPE my_word IS ARRAY (0 TO 31) OF bit; -- Vektor mit 32 Elementen vom Typ bit TYPE bit_vector IS ARRAY (natural RANGE ) OF bit; -- vorab definierter Typ bit_vector -- Die möglichen Indexwerte sind durch den vorab definierten Typ natural gegeben. SIGNAL lowbyte : bit_vector (7 DOWNTO 0) ; -- Deklaration eines Signals vom Typ bit_vector mit Beschränkung auf 8 Elemente • Mehrdimensionale Felder: - Im mehrdimensionalen Fall muß für jede Dimension der Indexbereich angegeben werden. - Ein Vermischen der drei verschiedenen Indizierungsarten (unbeschränkt, beschränkt mit aufsteigender Indizierung und beschränkt mit abfallender Indizierung) ist erlaubt. - Syntax für mehrdimensionale Felder: TYPE array_type_name IS ARRAY ( [ index_type RANGE ] range_low TO range_high { , further_index } ) OF base_type; TYPE array_type_name IS ARRAY ( [ index_type RANGE ] range_high DOWNTO range_low { , further_index } ) OF base_type; TYPE array_type_name IS ARRAY ( index_type RANGE { , further_index } ) OF base_type; VHDL-GRUNDLAGEN 26

Verification.pdf
VHDL Kompakt - CES
Schaltungsdesign mit VHDL
VHDL Einführung
VHDL Design Guidelines