Läubi .. schrieb:
> Eine LUT enthält alles um einen 1 bit FullAdder zu implementieren,
> besteht aus FPGA Sicht also aus einer Logik Stufe.
Ich habe mal beim dem Spartan 3A reingesehen und den Eindruck gewonnen,
dass es sich dabei um die signifikante Beschleunigung eines ripple carry
adders handelt.
Aber so schnell die carry chain auch sein mag, sie kostet trotzdem Zeit.
Die Laufzeit eines solchen adders ist unweigerlich abhängig von der
Anzahl Bits, somit bei einer nichttrivialen Anzahl Bits grösser als die
Laufzeit einer Logikstufe ohne carry chain.
Folglich ist die Laufzeit von 2 hintereinander geschalteten optimierten
Addierern grösser als die Laufzeit eines einzigen Addierers mit
vorgeschaltetem CSA. Denn der CSA hat immer eine konstante Laufzeit von
1, unabhängig von der Anzahl Bits (u.U. auch 0, siehe unten).
> Bei einem CSA braucht man immer noch entsprechend eine Multiplexer Stufe
Nö. Ein CSA ist ein Carry Save Adder, kein Carry Select Adder (CSCA).
Ein CSA addiert 3 Bits zu einem 2-Bit Resultat, die Bitpositionen sind
dabei unabhängig voneinander. Dies wird dann geeignet mit einem normalen
Addierer zusammengerechnet. Besser bekannt sind diese Dinger in
Multiplizierern.
Wobei FPGAs mit 6-LUT den CSA in die LUT mit einbauen und daher 3
Operanden ohne zusätzliche Logik genauso schnell wie 2 Operanden
addieren können.
> Auf nem Spartan 3A hab ich es bisher durch "manuellen"
> Addiererbeschreibung zumindest noch nicht geschafft schneller zu sein
> als die Automatische Synthese...
Ich kenne mit in VHDL nicht aus, könnte mit aber vorstellen, dass der
Compiler einen N-way-adder mit N>2 von sich aus mit einem einzigen
2-way-adder und zusätzlichen vorgeschalteten CSAs implementiert, wenn
man ihm nicht vorsätzlich im Weg steht.