Hardware Reference
In-Depth Information
U V
1
1
U V
x 1
x 2
¯x 1 ¯x 2
¯x 1
x 1
y p
y n
y p
y p
y p
y
y
y
y
y n
y n
y n
x 2
x 1 x 2
x 1 x 2
0
x 1 x 2
x 1
0
x 2 x 1
00
f p f n
0
y p y n y
1 1
x 2 x 1 f p f n y p y n y
00 01 1 1
Z
10 10 0 0
1
Z
10 0 Z
Z
0 Z Z
01 10 0 0
Z
11 10 0 0
01 0 Z
1 1 1
11 10 0 0
a)
Z
b)
Z
Abb. 4.7. CMOS-Gatter a) NOR-Gatter b) Gatter, dessen Ausgang auch hoch-
ohmig gesteuert werden kann
4.1.3 Signale mit mehreren Quellen
In allen zuvor behandelten VHDL-Modellen hatte ein Signal genau eine Quel-
le. In dem gerade eingeführten Gatter-Modell hat das Signal für den Gat-
terausgang zwei oder mehr Quellen. Ein Signal mit mehreren Quellen benö-
tigt eine Auflösungsfunktion (engl. resolution function), die aus den einzelnen
Quellenwerten den Signalwert der Leitung berechnet. In VHDL ist diese Auf-
lösungsfunktion an den Datentyp gebunden. Die Zuordnung erfolgt in einer
speziellen Untertypvereinbarung:
subtype tAflTyp is AufloesFkt tTyp;
(tTyp - Basistyp; AufloesFkt - Auflösungsfunktion; tAflTyp - Untertyp mit
Auflösungsfunktion). Die Auflösungsfunktion berechnet aus einem oder meh-
reren Eingabewerten vom Basistyp einen Rückgabewert vom Basistyp. Der
Typ des Eingabeparameters der Auflösungsfunktion ist entsprechend ein Vek-
tor mit dem Basistyp als Elementtyp und variablem Indexbereich:
type tTyp_Vector (natural<>) of tTyp;
function AufloesFkt(qv: tTyp_Vector) return tTyp is ...;
Der vom Standard empfohlene Bit-Typ std_logic ist ein solcher Untertyp.
Der Basistyp ist std_ulogic, dessen Vektortyp ist std_ulogic_vector
und die Auflösungsfunktion heißt hier resolved(...):
type std_ulogic is ( 'U' , 'X' , '0' , '1' , 'Z' , ...);
type std_ulogic_vector is array (natural<>) of std_ulogic;
subtype std_logic is resolvedstd_ulogic;
Die Auflösungsfunktion resolved(...) fasst in einer Schleife immer paarweise
zwei Quellenwerte zu einem gemeinsamen Signalwert zusammen:
Search WWH ::




Custom Search