Hardware Reference
In-Depth Information
impure function
rand(w: tWeight; px: tWeight:=
0.0
)
return
std_logic;
9
erzeugt, die aufgerufen mit den Parametern w = 0;3 und p
x
= 0;003 mit der
relativen Häufigkeit p
x
= 0; 003 den Wert »X«, mit der relativen Häufigkeit
W = 0;3 den Wert »1« und sonst »0« zurückgibt. Der Zustand des Pseudo-
Zufallsgenerators hat den Typ
type
tRandState
is array
(
0
to
1
)
of
positive;
und wird in der globalen Variablen
shared variable
shared_variable_RandStat: tRandState;
gespeichert, die zum Simulationsbeginn mit zwei positiven ganzen Zahlen in-
itialisiert wird.
In dem Testprozess werden in einer Endlosschleife immer zehn Testbei-
spiele ausgewürfelt, abgearbeitet und die Ergebnisse angezeigt. Nach der ma-
nuellen Kontrolle, dass die Ergebnisse richtig sind, ist die Eingabetaste zur
Fortsetzung zu betätigen:
-- Vereinbarungen im Testprozess
variable
a, b: tDaten;
variable
opc: tOpcode;
variable
Ergebnis: tErgebnis;
variable
F: tFlags;
constant
px: tWeight:=
0.03
;
-- Anweisungsfolge im Testprozess
shared_variable_RandStat:=(
1235
,
34567
);
loop
write(str(shared_variable_RandStat));
for
idx
in
1
to
10
loop
a := rand(a, px); b := rand(b, px);
opc := rand(opc, px); F.cy := rand(
0.3
, px);
Ergebnis := ALU(a, b, F, opc);
-- eigentliche Testanweisung
write(rechts(str_Opcode(opc),
4
) & ... (siehe Beispielausgaben)
end loop
;
read;
-- Warte
auf Eingabetaste
end loop
;
)
WEB-Projekt:P5.4/Test_ALU.vhdl
Zu Beginn eines jeden Zehnerblocks wird der Zustand des Pseudo-Zufalls-
generators angezeigt. Diese Ausgabe ist erforderlich, um Tests mit falschen
Ausgaben nach der Fehlerbeseitigung mit eben diesem Startwert zu wieder-
holen [29]. Die nur angedeutete Write-Anweisung für die Testergebnisse stellt
den Operationscode symbolisch und alle Zahlenwerte hexadezimal auf dem
Bildschirm in der folgenden Tabellenform dar:
9
Der Parameter w beschreibt die Wichtung. Das ist die relative Auftrittshäufigkeit
einer »1« (vgl. Abschnitt 3.5.1).