VHDL - Objekte und Typen Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2007/2008 VHDL - Objekte und Typen 1/23 2007-08-24
Inhalt Typen Aufzähltypen Numerische Typen Physikalische Typen Abgeleitete Typen Felder IEEE 1164-Logik Objekte Konstanten Variablen Signale Besonderheiten bei Feldern VHDL - Objekte und Typen 2/23 2007-08-24
Typisierung Typenkonzept Beispiel Strenge Typisierung, nur sehr wenige vordefinierte Typen (z.b. real oder integer ), vielfältige Möglichkeiten, neue Datentypen zu definieren. TYPE a u g e n z a h l IS RANGE 1 TO 6 ; VARIABLE w u e f e l : a u g e n z a h l ; VHDL - Objekte und Typen 3/23 2007-08-24
Aufzähltypen Eigenschaften Beispiele Endliche Zahl möglicher Werte, Werte sind Bezeichner oder Einzelzeichen ( character), Reihenfolge der Werte bei Deklaration gibt Ordnung vor. B e z e i c h n e r : TYPE zustand IS ( i n i t i a l, running, stopped ) ; Zeichen : TYPE l o g i k 3 IS ( 0, 1, Z ) ; VHDL - Objekte und Typen 4/23 2007-08-24
Aufzähltypen (2) Vordefinierte Typen TYPE boolean IS ( f a l s e, t r u e ) ; TYPE b i t IS ( 0, 1 ) ; TYPE c h a r a c t e r IS (... ) ; 256 Zeichen TYPE s e v e r i t y _ l e v e l IS ( note, warning, e r r o r, f a i l u r e ) ; VHDL - Objekte und Typen 5/23 2007-08-24
Numerische Typen Eigenschaften Beispiele Je ein anonymer Basistyp für ganzzahlige und Fließkommatypen, Deklaration durch Angabe der Unter- und Obergrenze, Übernahme des Wertebereichs von anderem Typ möglich. TYPE my_int IS RANGE 0 TO 1 1 ; TYPE my_real IS RANGE 4 2. 0 DOWNTO 42.0; TYPE d e r _ i n t IS RANGE my_int RANGE; VHDL - Objekte und Typen 6/23 2007-08-24
Numerische Typen (2) Vordefinierte Typen TYPE i n t e g e r IS RANGE.. TO.. ; TYPE r e a l IS RANGE.. TO.. ; Besonderheiten Wertebereiche sind Systemabhängig, Mindestbereiche gemäß Standard: integer : von 2147483647 bis +2147483647, real : von 1.0E38 bis +1.0E38. VHDL - Objekte und Typen 7/23 2007-08-24
Physikalische Typen Eigenschaften Beispiel ganzzahliger oder reeller Wertebereich, Basis-Einheit und abgeleitete Einheiten. TYPE l e n g t h IS RANGE 1E9 TO 1E9 UNITS mm; cm = 10 mm; dm = 10 cm ; m = 10 dm; km = 1E3 m; END UNITS; VHDL - Objekte und Typen 8/23 2007-08-24
Physikalische Typen (2) Vordefinierter Typ TYPE time IS RANGE... systemabhaengig UNITS f s ; ps = 1000 f s ; ns = 1000 ps ; us = 1000 ns ; ms = 1000 us ; s e c = 1000 ms ; min = 60 s e c ; hr = 60 min ; END UNITS; VHDL - Objekte und Typen 9/23 2007-08-24
Abgeleitete Typen Eigenschaften Von bereits deklarierten Typen abgeleitet, im Wertebereich weiter eingeschränkt, nur eine Ableitungsebene möglich, Verknüpfungen mit Basistyp oder anderem abgeleiteten Typ vom selben Basistyp möglich. VHDL - Objekte und Typen 10/23 2007-08-24
Abgeleitete Typen (2) Beispiele TYPE a d d r e s s 1 IS RANGE 0 TO 6 3 ; TYPE a d d r e s s 2 IS RANGE 0 TO 127; SUBTYPE add1 IS i n t e g e r RANGE 0 TO 6 3 ; SUBTYPE add2 IS i n t e g e r RANGE 0 TO 127; VARIABLE ta : a d d r e s s 1 ; VARIABLE tb, t c : a d d r e s s 2 ; VARIABLE sa : add1 ; VARIABLE sb, s c : add2 ;... sc := sa + sb ; l e g a l t c := ta + tb ; i l l e g a l!!! VHDL - Objekte und Typen 11/23 2007-08-24
Abgeleitete Typen (3) Vordefinierte Typen SUBTYPE n a t u r a l IS i n t e g e r RANGE 0 TO i n t e g e r HIGH ; SUBTYPE p o s i t i v e IS i n t e g e r RANGE 1 TO i n t e g e r HIGH ; SUBTYPE d e l a y _ l e n g t h IS time RANGE 0 f s TO time HIGH ; Das Typenattribut HIGH liefert die obere Grenze des Wertebereichs, LOW analog dazu die untere Grenze. VHDL - Objekte und Typen 12/23 2007-08-24
Feldtypen Eigenschaften Beispiele beliebige (?) Dimensionen möglich, aus skalaren Basistypen oder Feldern, mit beschränkter oder unbeschränkter Größe. TYPE c o l o r IS ( y e l l o w, red, green, b l u e ) ; TYPE i v e c 1 IS ARRAY ( c o l o r RANGE <>) OF i n t e g e r ; TYPE i v e c 2 IS ARRAY ( red TO b l u e ) OF i n t e g e r ; TYPE i v e c 3 IS ARRAY (255 DOWNTO 0) OF i n t e g e r ; VHDL - Objekte und Typen 13/23 2007-08-24
Feldtypen (2) Vordefinierte Typen TYPE s t r i n g IS ARRAY ( p o s i t i v e RANGE <>) OF c h a r a c t e r ; TYPE b i t _ v e c t o r IS ARRAY ( n a t u r a l RANGE <>) OF b i t ; VHDL - Objekte und Typen 14/23 2007-08-24
Feldtypen (3) Mehrdimensionale Felder TYPE i n t _ m a t r i x IS ARRAY ( i n t e g e r RANGE 1 TO 3, i n t e g e r RANGE 1 TO 5) OF i n t e g e r ; Abgeleitete Felder SUBTYPE name IS s t r i n g (1 TO 2 0 ) ; SUBTYPE byte IS b i t _ v e c t o r (1 TO 8 ) ; VHDL - Objekte und Typen 15/23 2007-08-24
IEEE 1164-Logik Im Package ieee.std_logic_1164 ist der Typ std_logic definiert, der den Erfordernissen der Entwicklung elektronischer Systeme entgegenkommt. Folgende Signalwerte sind deklariert: U uninitialisiert, X treibend unbekannt, 0 treibend 0, 1 treibend 1, Z hochohmig, W schwach unbekannt, L schwach 0 H schwach 1 - Don t care VHDL - Objekte und Typen 16/23 2007-08-24
Objektklassen Konstanten Variablen Signale VHDL - Objekte und Typen 17/23 2007-08-24
Konstanten Eigenschaften Beispiele Wert ändert sich nie, muss initialisiert werden. CONSTANT d e l a y : time := 12.5 ps ; CONSTANT x0, y0 : i n t e g e r := 4 ; CONSTANT a d d r e s s : b i t _ v e c t o r := b " 1001 _1110 " ; CONSTANT o f f s e t : b i t _ v e c t o r (3 DOWNTO 1) := " 001 " ; VHDL - Objekte und Typen 18/23 2007-08-24
Variablen Eigenschaften Beispiele Zeitlich veränderliche Werte, Wert ändert sich sofort bei Zuweisung, nur in Funktionen und Prozeduren empfohlen, fehlt die Initialisierung, wird der LEFT-Wert des Typs verwendet. VARIABLE n1, n2 : n a t u r a l ; d e f a u l t : 0 VARIABLE v : i n t e g e r RANGE 10 TO 1 0 ; d e f a u l t : 10 VARIABLE t h r e s h : r e a l := 1. 4 ; VHDL - Objekte und Typen 19/23 2007-08-24
Signale Eigenschaften Beispiele Zeitlich veränderliche Werte, zeitverzögerte Zuweisungen möglich, sonst wie Variablen. SIGNAL f l a g : b o o l e a n := t r u e ; SIGNAL s1, s2 : b i t ; d e f a u l t : 0... s1 <= 1 AFTER 5 ns ; VHDL - Objekte und Typen 20/23 2007-08-24
Besonderheiten bei Feldern Zugriff CONSTANT c1 : b i t _ v e c t o r (7 DOWNTO 0) := " 10010011 " ; VARIABLE v1 : b i t _ v e c t o r (7 DOWNTO 0 ) ;... v1 ( 0 ) := c1 ( 1 ) ; v1 = "00000001" VHDL - Objekte und Typen 21/23 2007-08-24
Besonderheiten bei Feldern (2) Slices VARIABLE v1, v2 : b i t _ v e c t o r (0 TO 3) := " 1111 " ; CONSTANT c1 : b i t _ v e c t o r := b" 1001 _0111 " ;... v1 := c1 (2 TO 5 ) ; v1 = "0101" v2 := c1 (5 TO 8 ) ; geht n i c h t!!! VHDL - Objekte und Typen 22/23 2007-08-24
Besonderheiten bei Feldern (3) Aggregate TYPE i n t _ v e c t o r IS ARRAY (1 TO 8) OF i n t e g e r ; VARIABLE v0, v1, v2, v3, v4 : i n t _ v e c t o r ;... v0 := ( 5, 2, 3, 1, 4, 4, 2, 1 ) ; v1 := (1 => 2, 5 => 3, OTHERS => 0 ) ; v2 := (2 TO 4 => 1, 1 5 TO 8 => 8 ) ; v3 := (1 8 => 2 8, OTHERS => 0 ) ; v4 (1 TO 3) := ( 1, 1, 1 ) ; VHDL - Objekte und Typen 23/23 2007-08-24