Additionen mit drei Summanden pipelinen?

Moderator (Firma: Titel) Persönliche Seite #1417610
Lesenswert?

> doppelt soviel Logik im kritischen Pfad.
Dazu kommt noch Routing, Setup-Hold-Zeiten...

> Synthesis Report von XST.
Ok, allererste grobe Schätzung  :-/

BTW
Probiers doch mal so: ganz hinten an den Addierer ein, zwei.. 
Registerstufen anschliessen und in den Syntheseeinstellungen "Register 
Balancing" einschalten. Dann verteilt die Synthese die Pipelinestufen 
automatisch.
Persönliche Seite #1417920
Lesenswert?

A. K. schrieb:
> implementiert wird. Ein CSA ist erheblich fixer als ein normaler Adder.
Kommt auch wieder drauf an... die neueren XIlinx CHips haben extra Carry 
chains, sodass man mit einem "normalem" addierer bis zu einer gewissen 
Grenze schneller ist bei weniger Logik verbrauch als mit einer 
speziellen Lösung die wieder weitere Ebenen in den Logik Pfad einbaut.
Persönliche Seite #1418533
Lesenswert?

A. K. schrieb:
> Sind diese carry chains in der Lage, einen 3-way-adder direkt zu
Eine LUT enthält alles um einen 1 bit FullAdder zu implementieren, 
besteht aus FPGA Sicht also aus einer Logik Stufe.
Bei einem CSA braucht man immer noch entsprechend eine Multiplexer Stufe 
welche in einer zweiten CLB/LUT Stufe was routing delays verursacht.
Baut man also diese "einfachen" 1 LUT Adder ist der kritische Pfad das 
Carry, und dafür hat sich Xilinx wohl was schlaues überlegt ;)
Auf nem Spartan 3A hab ich es bisher durch "manuellen" 
Addiererbeschreibung zumindest noch nicht geschafft schneller zu sein 
als die Automatische Synthese...
#1418554
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren