Hardware Reference
In-Depth Information
tDaten
tDaten
function "+"(a, b: tDaten) return tDaten is
constant sum:real:=real(a)+real(b);
begin
if a=tDaten'low or b=tDaten'low or ( abs sum)>max_abs then
return tDaten'low; -- Pseudo-Wert für ungültig
else return tDaten(sum);
end if ;
end function ;
+
tDaten
tDaten
tDaten
function "*"(a, b: tDaten) return tDaten is
constant prod:real:=real(a)*real(b);
begin
if a=tDaten'low or b=tDaten'low or ( abs prod)>max_abs then
return tDaten'low; -- Pseudo-Wert für ungültig
else return tDaten(prod);
end if ;
end function ;
*
tDaten
)
WEB-Projekt:P5.2/FIR1_pack.vhdl
Als Nächstes sind alle Register-Transfer-Funktionen aus Abb. 5.6 auf Be-
arbeitungsmethoden aufzuteilen. Eine in Hardware nachzubildende Bearbei-
tungsmethode sollte nur Operationen zusammenfassen, die im selben Zeit-
schritt ausgeführt werden. In der Initialisierungsphase wird in jedem Zeit-
schritt die Koe zientenadresse um eins erhöht, die Datenadresse um eins
verringert und ein Eingabewert in den Datenspeicher geschrieben. Dieses Ver-
halten lässt sich mit einer Prozedur mit dem zu speichernden Datenwert als
Eingabeparameter sowie mit dem Datenspeicher und dem Pipeline-Objekt als
les- und veränderbare Signale beschreiben:
procedure InitStep(x: tDaten; signal xRAM: inout tMem;
signal pp: inout tPipeline) is
begin
pp.cAdr <= (pp.cAdr+ 1 ) mod M;
pp.xAdr <= pp.xAdr- 1 ;
xRAM(pp.xAdr) <= x;
end procedure ;
cAdr
1 ...M 1
xAdr
M 1M 2... 1
W(x 0 )W(x 1 )...W(x M−2 )
xRAM
Die Register-Transfer-Operationen im Start- und im Normalzyklus sind
einander sehr ähnlich (Abb. 5.7). Die Koe zientenadresse wird modulo-M
hochgezählt, das Koe zientenregister übernimmt den adressierten Inhalt des
Koe zientenspeichers und das Produktregister das berechnete Produkt. Für
die anderen Datenobjekte weicht die auszuführende Operation jeweils für eine
Koe zientenadresse von der Standardoperation ab. Der Datenspeicher wird
bei Zählstand null beschrieben statt gelesen. Bei Zählstand zwei wird dem
Akkumulator das Produkt statt der Summe zugewiesen und beim höchstwer-
tigen Zählstand wird die Datenadresse nicht weitergezählt. Die in Abb. 5.7
mit einem grauen Dreieck gekennzeichneten Zuweisungen sind im Startzyklus
 
Search WWH ::




Custom Search