Hardware Reference
In-Depth Information
function resolved(s:std_ulogic_vector) return std_ulogic is
variable result:std_ulogic:=s(s'low);
begin
for idx in s'low+ 1 to s'high loop
result :=resolution_table(result, s(idx));
end loop ;
return result;
end function ;
Die Regeln für die paarweise Zusammenfassung sind in einer zweidimensio-
nalen Konstantentabelle festgelegt, die jedem Paar von std_ulogic-Werten
ein std_ulogic-Ergebnis zuordnet
2
.
type stdlogic_table is array (std_ulogic,std_ulogic) of std_ulogic;
constant resolution_table:stdlogic_table:=(
-------------------------------------------
-- ...
X
0
1
Z
...
|
|
-------------------------------------------
( ..., ..., ..., ..., ..., ... ), -- | U |
( ..., 'X' , 'X' , 'X' , 'X' , ... ), -- | X |
( ..., 'X' , '0' , 'X' , '0' , ... ), -- | 0 |
( ..., 'X' , 'X' , '1' , '1' , ... ), -- | 1 |
( ..., 'X' , '0' , '1' , 'Z' , ... ), -- | Z |
...
);
Wenn beide Signalquellen denselben Wert liefern, ist der Tabelleneintrag der
übereinstimmende Wert. Bei Abweichungen setzt sich »X«, der Pseudo-Wert
für ungültig, gegenüber allen anderen Werten und »0« oder »1« gegenüber
»Z« durch.
Mit dem Typ std_logic lässt sich der Ausgang eines Gatters auch in
VHDL als ein Signal mit mehreren Quellen beschreiben. Für das NOR-Gatter
aus Abb. 4.7a ergeben sich die logischen Ausgabewerte der Transistornetz-
werke über folgende Fallunterscheidungen:
8
<
:
8
<
:
Z für x 1 _x 2 = 0
0
1 für x 1 _x 2 = 0
Z für x 1 _x 2 = 1
X
y n =
für x 1 _x 2 = 1
y p =
X
sonst
sonst
Die Auflösungsfunktion berechnet daraus den Gatterausgabewert. In einem
ereignisgesteuerten Simulationsmodell sind die beiden Fallunterscheidungen in
einen kombinatorischen Prozess einzurahmen, der die Werte von y n und y p bei
jeder Änderung von x 1 oder x 2 neu berechnet und zuweist. Der Gatterausgang
wird mit zwei nebenläufigen Signalzuweisungen an y beschrieben:
2 Auch Aufzählungstypen sind als Indexbereiche für Felder zugelassen (vgl. Ab-
schnitt 3.2.5).
Search WWH ::




Custom Search