Hardware Reference
In-Depth Information
type tVektortyp is (natural range <>) of tTyp;
variable x, z: tVektortyp(n- 1 downto 0 );
...
begin
z( 0 ) := x( 0 );
for idx in z'low+ 1 to z'high loop
z(idx) := z(idx- 1 ) x(idx);
end loop ;
beliebigerassoziativerOperator l¨angsterSignalpfad
x 0 z 0
z 1
x 1
x 2 z 2
···
x n−1 z n−1
Abb. 3.20. Schleife, die einen Ausdruck mit assoziativen Operatoren durch eine
Kettenstruktur nachbildet
In einem Ausdruck mit einer festen Anzahl von assoziativen Operationen
lässt sich der Berechnungsfluss durch eine geeignete Klammernsetzung opti-
mieren (vgl. Abschnitt 2.2.2). In dem Ausdruck in Abb. 3.21 werden zuerst
Paare von Eingabesignalen und anschließend jeweils Paare von Zwischener-
gebnissen so zusammengefasst, dass der Berechnungsfluss einen Baum bildet.
Die korrespondierende Schaltung hat nur eine Verzögerungszeit der Ordnung
O(log (n)).
AusdruckmitKlammern
Berechnungsbaum
(( x 0 ◦x 1 ) ( x 2 ◦x 3 )) (( x 4 ◦x 5 ) ◦x 6 )
x 0 x 1 x 2 x 3 x 4 x 5 x 6
Abb. 3.21. Überführung der Ketten- in eine Baumstruktur
Baumartige Berechnungsflüsse lassen sich auch mit einer Schleife beschrei-
ben. Abbildung 3.22 zeigt hierfür einen Reduktionsalgorithmus, der solange
paarweise 2i Eingabewerte zu i Zwischenwerten zusammenfasst, bis nur ein
Zwischenwert, der Ausgabewert, übrig ist. Bei einer paarweisen Zusammen-
fassung von n Eingabesignalen entstehen n 2 Zwischenergebnisse und ein
Gesamtergebnis. In Abb. 3.22 wird für alle Werte zusammen ein Feld mit
2 n 1 Elementen vereinbart. In die ersten n Elemente werden die Ein-
gabewerte geschrieben. Anschließend werden in jedem Schleifendurchlauf die
Werte zweier benachbarter Feldelemente zusammengefasst und in das nächs-
te freie Element geschrieben. Die ersten n 2 Schleifendurchläufe berechnen
die Zwischenergebnisse im Baum und der n1-te Schleifendurchlauf aus den
letzten beiden Zwischenergebnissen das Endergebnis.
Das Prinzip ist auch auf andere Reduktionsschemata anwendbar. Ein
Carry-Save-Addierer fasst immer drei Summanden oder Zwischensummen zu
zwei Zwischensummen zusammen. Die Iteration stoppt, wenn nur noch zwei
nicht zusammengefasste Zwischensummen übrig sind, für deren Zusammenfas-
 
Search WWH ::




Custom Search