Gast
#1358878
Hallo zusammen!
Ich hätte da mal eine Frage zu einem Problem, das mich schon länger
beschäftigt.
ich habe eine Divisions-Einheit, die zwei Integer-Operanden a und b mit
je 32 Bit einliest und das Ergebnis ebenfalls als 32 Bit Integer
ausgibt. Intern arbeitetet diese Einheit aber mit einer
Fließpunkt-Divisions-Einheit.
Der Datenfluss sieht also wie folgt aus:
fixed_to_float(a) -->
float_divider --> float_to_fixed
fixed_to_float(b) -->
Die drei Komponenten sind mit dem Core-Generator xon Xilinx erstellt
worden.
Nun stellt sich mir die Frage, wie ich das in einer Pipeline so
umsetzten kann, dass ich den maximalen Takt herauszuhole ( bzw. was
schreiben die "Coding Styles" o.ä. in diesem Falle vor?):
1. Direkt verdrahten (so wie oben abgebildet)
2. Vor und hinter float_divider ein Register (also insgesamt drei)
3. So wie 2., aber auch die Ein- und Ausgänge der Pipeline mit Registern
entkoppeln (also insgesamt sechs)
Wie würdet ihr das machen? Bringen denn die Vorschläge 2 und 3 überhaupt
einen Performance-Gewinn gegenüber Vorschlag 1 oder verschenke ich da
bloß wertvolle Flip-Flops?
Gruß,
dito
PS: Der obige Ansatz verbraucht tatsächlich weniger Ressourcen als die
direkte Division mit Integerzahlen (zumindest für den Fall, dass ich mit
jedem Takt ein Ergbnis erhalte (Latenz dafür 40 Takte))
