Hardware Reference
In-Depth Information
if
pstr.Status/=ok
then
write(
"Lesefehler Zeile: "
& str(TNr) &
" Spalte: "
& str(pstr.err_pos) &
" "
& str(pstr.err_msg));
exit
;
end if
;
-- Takt weiterschalten
wait for
tp/2; T <=
'0'
;
wait for
tp/2; T <=
'1'
;
-- Kontrolle der Vorhaltezeit
if y'last_event<ts
then
write(
"Schritt: "
& str(TNr) &
" x="
& str(vx) &
" y'last_event="
& str(y'last_event));
end if
;
-- Soll-Ist-Vergleich
if not
is_x(y_soll)
and
y/=y_soll
then
write(
"Schritt: "
& str(TNr)&
" x="
& str(vx) &
" y="
& str(y)
&
" Soll-Wert="
& str(y_soll));
end if
;
TNr := TNr+
1
;
end loop
;
wait
;
end procedure
;
x y
ist
Testobjekt
T I
ProzedurSollIstTestProc(...)
⇒
Web-Projekt:P3.5/SollIstTestpack.vhdl
In der Prozedur werden die Eingabedatei geöffnet und Variablen für das Le-
sebandobjekt (vgl. Abschnitt 3.3.3), die einzulesenden Datenobjekte und die
Testschrittnummer angelegt. Zu Beginn wird ein ein Takt langer Initialisie-
rungsimpuls erzeugt. Dann werden in einer Schleife, bis das Dateiende erreicht
ist, immer eine Zeile aus der Datei gelesen, der Eingabewert und der Soll-Wert
abgeräumt, der Eingabewert an das Eingabesignal zugewiesen, der Takt wei-
tergeschaltet und der Ausgabewert des Testobjekts kontrolliert. Die Kontrolle
der Vorhaltezeit und der Soll-Ist-Vergleich sind aus der Prozedur »Verglei-
cher(...)« des Vorabschnitts übernommen. Der meiste Programmieraufwand
steckt wie üblich in der Erzeugung aussagekräftiger Fehlermeldungen.
Der nachfolgende Testrahmen, in dem der 7-Segment-Decoder mit der hier
skizzierten Testprozedur getestet wird, vereinbart das Taktsignal T, das Initia-
lisierungssignal I, das Eingabesignal
. Der Anwei-
sungsteil enthält lediglich die Instanz des Testobjekts und den nebenläufigen
Aufruf der Testprozedur:
x
und das Ausgabesignal
y
x y
ist
-- Vereinbarungen im Testrahmen
signal
T, I:std_logic;
signal
x:std_logic_vector(
3
downto
0
);
signal
y:std_logic_vector(
6
downto
0
);
-- nebenläufig Anweisungen im Testrahmen
Testobjekt:
entity
work.Seg7Dec(KV)
port map
(x, y);
Testprozedur: SollIstTestProc(T, I, x, y,
"SollIstTest.txt"
,
10 ns
,
1 ns
);
Testobjekt
T I
ProzedurSollIstTestProc(...)
⇒
Web-Projekt:P3.5/SollIstTestpack.vhdl