Hardware Reference
In-Depth Information
Schritt 2: Ein erstes Simulationsmodell
Das erste Simulationsmodell sei ein Software-orientiertes Ablaufmodell mit
Texteingaben und -ausgaben und mit Warteanweisungen vom Typ »warte für
eine Taktperiode«. Zu praktisch jedem Simulationsmodell gehört ein Packa-
ge mit den Vereinbarungen der modellspezifischen Datentypen, Konstanten
und Unterprogrammen. Der Beispielalgorithmus benötigt einen Datentyp für
vorzeichenbehaftete Zahlenwerte im Bereich zwischen 2 und 2 und den zu-
gehörigen Vektortyp für die Konstantentabelle. Für die ersten Simulationsex-
perimente genügen reellwertige Zahlentypen für die Wertedarstellung:
subtype
tDaten
is
real
range
-2.0
to
2.0
;
type
tDatenArray
is array
(natural
range
<>)
of
tDaten;
Später ist der Zahlentyp durch einen geeigneten Bitvektortyp zu ersetzen. Der
Verschiebeoperator »sra«
16
für die n-fache Halbierung von Bitvektor-Werten
ist für Zahlentypen durch die Division durch eine Zweierpotenz zu ersetzen:
function
"sra"
(a: tDaten; b:natural)
return
tDaten
is
begin
return
a/(
2.0
**b);
end function
;
)
WEB-Projekt:P3.4/cordic1_pack.vhdl
Für die Verständlichkeit, Änderungsfreundlichkeit und Fehlervermeidung ist
es zu empfehlen, Konstanten durch Funktionen berechnen zu lassen, statt sie
als Ziffernfolgen manuell einzutippen. Die Winkelfunktionen für reelle Zahlen,
die für die Konstantenberechnungen benötigt werden, stellt das standardisier-
te Package ieee.math_real bereit:
use
ieee.math_real.cos;
use
ieee.math_real.atan;
-- laut [11] arctan
Die Funktion zur Berechnung der Tabelle der Winkelkonstanten benötigt die
Anzahl der Iterationsschritte N als Eingabeparameter und liefert ein Ergebnis
vom Typ »tDatenArray«:
function
fAtanTab(N:positive)
return
tDatenArray
is
variable
Tab: tDatenArray(
0
to
N-
1
);
begin
for
idx
in
Tab'range
loop
Tab(idx) := atan(
1.0
sra
idx);
end loop
;
return
Tab;
end function
;
)
WEB-Projekt:P3.4/cordic1_pack.vhdl
Die Konstante SCS wird aus der Konstantentabelle berechnet und hat den
Typ »tDaten«:
16
arithmetische Rechtsverschiebung