Hardware Reference
In-Depth Information
... AkkuF
cAdr
cROM cDat
s y y
s
+1
ROMa y
s y y
s
xRAM
xAdr RAMy
xDat
s y
a
a+b
a b
s
y
M3
10 00
11
x a w
a
A2D
M2
b
M1
Masken
AR
OF
EX(Add/Sub)
Pipelinestufen
AR
OF
EX
cAdrKoe zientenadresse
xAdrDatenadresse
A2D
cROMKoe zientenspeicherAkkuFAkku-Register0bis11
xRAMBildausschnittsspeicher
xDat
cDatKoe zientenwert
Datenwert
Adressrechnung
Operandenlesen
Ausf¨uhrung
2D-Adressrechnung
Abb. 5.14. Speicherhierarchie und Verarbeitungswerke für die Berechnung der
Übereinstimmungsmaße
subtype tFilterIdx is natural range 0 to N_Mask- 1 ;
type tKoeff is array (tFilterIdx) of tOperation;
Der Akkumulator muss wie die Daten einen Bitvektortyp zur Darstellung
vorzeichenbehafteter Zahlen haben und soll, um Wertebereichsüberläufe aus-
zuschließen, vier Bit breiter als ein Datenregister sein
6
:
constant cDatenbreite:natural:= ...;
subtype tDaten is tSigned(cDatenbreite- 1 downto 0 );
subtype tAkku is tSigned(cDatenbreite+ 3 downto 0 );
Die Funktion zur Berechnung des Folgewertes für einen einzelnen Akkumula-
tor ist
function FilterAdd(Akku: tAkku; x: tDaten; s: tOperation)
return tAkku is
begin
case s is
when add => return Akku+x;
when sub => return Akku-x;
when others => return Akku;
end case ;
end function ;
)
WEB-Projekt:P5.3/POI_pack.vhdl
Alle Akkumulatoren zusammen bilden ein Feld:
type tAkkFeld is array (tFilterIdx) of tAkku;
Die auf das gesamte Akkumulatorfeld anzuwendende Methode ist eine Itera-
tion über alle Akkumulatoren mit der auf den einzelnen Akkumulator anzu-
wendenden Funktion:
6 Der sechzehnfache Wertebereich genügt, weil keine der Filtermasken mehr als
sechzehn Koe zienten ungleich null enthält.
 
Search WWH ::




Custom Search