Hardware Reference
In-Depth Information
Wir wollen hier statt eines Schieberegisters, das für einen größeren Filter-
grad M recht schaltungsaufwändig ist, einen wesentlich kompakteren Block-
speicher verwenden. Aus einem (1-Port-) Blockspeicher kann in jedem Zeit-
schritt nur ein Datenwort gelesen werden. Das ist der Flaschenhals für die Be-
rechnung. Jetzt folgt ein Puzzle, in dem die Operationen auf Rechenwerke und
Berechnungsschritte aufgeteilt werden. Die Berechnung für jeden Ausgabewert
besteht aus M Teilberechnungen. Fast jede der Teilberechnungen beginnt mit
der Erhöhung der Koe zientenadresse um eins und der Erhöhung der Daten-
adresse um eins. Danach werden ein Koe zient und ein Datenwert aus dem
Speicher gelesen. Anschließend werden beide Werte miteinander multipliziert
und das Ergebnis zur bisherigen Teilsumme addiert. Mit den Koe zienten und
Daten im selben Speicher müsste der Speicher entweder zwei Ports haben oder
die beiden Werte wären nacheinander zu lesen. Die eine Lösung ist aufwändig
und die andere halbiert die Verarbeitungsleistung. Die nahe liegende Alter-
native ist der Einsatz von zwei Blockspeichern, einem Schreib-Lese-Speicher
für die Daten und einem Nur-Lese-Speicher für die Koe zienten. Das Zwi-
schenergebnis der Überlegungen bis hierher ist ein Berechnungsfluss, der mit
zwei parallelen Adressrechnungen beginnt. Danach folgen die zwei parallelen
Speicherzugriffe. Die gelesenen Werte werden multipliziert und das Produkt
zum bisher akkumulierten Wert addiert. Das ist die Kernoperation, die für je-
den zu berechnenden Ausgabewert mit geringfügigen Modifikationen M-mal
hintereinander ausgeführt werden muss.
cAdr
cROM cDat
Akku
+1
ROMa y
Prod +
Ergebnis
mult
xRAM
xDat
xAdr RAMy
Pipeline-Phasen
ARAdressrechnung
Operandenlesen
x a
w
+1
OF
MultMultiplikation
Addition
AR
OF Mult
Add
Add
Register
Prod
Akku
Produktregister
Akkumulator(Summationsregister)
cAdr
xAdr
cDat
xDat
Koe zientenadressregister
Datenadressregister
Blockspeicher
Koe zientenregister
Datenregister
cROM
xRAM
Koe zientenspeicher
Datenspeicher
Abb. 5.5. Blockspeicher-Pipeline-Struktur der Kernfunktion des FIR-Filters
Als Nächstes soll die Kernoperation in Pipeline-Phasen unterteilt werden.
Die Blockspeicherzugriffe, die den zeitlichen Engpass bilden, bekommen eine
eigene Pipeline-Phase. Dasselbe gilt für die Multiplikation, die auch relativ
viel Zeit benötigt
3
. Die verbleibenden Adressrechnungen zu Beginn des Be-
3 Wenn die Multiplikation länger als der Speicherzugriff dauert, kann sie auch auf
mehrere Pipeline-Phasen aufgeteilt werden.
 
Search WWH ::




Custom Search