Hardware Reference
In-Depth Information
T, einen Initialisierungseingang I, ein Bestätigungssignal für Leseoperationen
RD und ein Bestätigungssignal für Schreiboperationen WR. Das Signal für
die Lesebestätigung wird während der Lesetakte aktiviert und signalisiert der
Datenquelle, dass sie ab dem nächsten Takt den Folgewert ausgeben soll. Das
Schreibbestätigungssignal WR wird in den Ausgabetakten aktiviert und si-
gnalisiert dem Testausgabeprozess, dass im Akkumulatorregister ein gültiger
Ausgabewert steht, der an die Ausgabezeile anzuhängen ist. Der Testeingabe-
prozess soll durch eine nebenläufige Prozedur beschrieben werden:
procedure
Testdatenquelle(Dateiname:string;
signal
RD:std_logic;
signal
T, I:
out
std_logic;
signal
x:
out
tDaten;
tp:delay_length:=
10 ns
)
is
variable
pstr: tPString;
variable
ZNr:natural;
variable
r:real;
file
f:textio.text
open
read_mode
is
Dateiname;
begin
I <=
'1'
; T <=
'0'
;
wait for
tp; I <=
'0'
after
tp/
10
;
loop
T <=
'1'
,
'0'
after
tp/
2
;
if
RD=
'1'
then
if
textio.endfile(f)
then wait
;
end if
;
read(f, pstr); get(pstr, r,
-1000.0
,
1000.0
);
if
pstr.Status/=ok
then
write(
"Zeile "
& str(znr) &
":"
& str(pstr.err_msg));
wait
;
else
x <= to_tSigned(integer(r*(
2.0
**
5
)), x'length)
after
tp/
3
;
ZNr := ZNr+
1
;
end if
;
end if
;
wait for
tp;
end loop
;
end procedure
;
RD
x
Test-
daten-
I
T
quelle
)
WEB-Projekt:P5.2/FIR2_pack.vhdl
Die Eingabedatei enthält die Filtereingabedaten. Das Initialisierungssignal I,
das Taktsignal T und der Eingabevektor x werden innerhalb der Prozedur
generiert. Nebenläufig aufgerufen generiert die Prozedur zu Beginn einen Ini-
tialisierungsimpuls und erzeugt danach mit der Taktperiode T
P
Taktimpulse.
Nach der ersten aktiven Taktflanke wird der erste gültige Eingabewert an das
Signal
zugewiesen. Danach wird nach jeder aktiven Taktflanke, bei der das
Lesebestätigungssignal aktiv ist - d.h. bei den nachfolgenden drei und dann in
jedem vierten simulierten Takt -, der nächste Eingabewert aus der Datei gele-
sen und verzögert an
x
zugewiesen (Abb. 5.9 b). Wenn das Dateiende erreicht
ist, terminiert die Prozedur mit einer Warteanweisung ohne Weckbedingung.
Durch das Ausbleiben der Eingabeänderungen terminieren auch die anderen
Prozesse des Testrahmens und die Simulation stoppt.
Der Testausgabeprozess soll etwa dieselben Ausgaben wie in Abb. 5.8 er-
zeugen. Dazu müssen der Prozedur, die nebenläufig aufgerufen den Protokoll-
prozess nachbildet, das Taktsignal, das Schreib- und das Lesebestätigungssi-
x