Forum: FPGA, VHDL & Co. Sehr schneller Addierer


von Dschan (Gast)


Lesenswert?

Hallo Alle zusammen,

könnt ihr bitte Vorschläge zu folgenden Problem machen.

Ich möchte auf einen Virtex-5 einen Addierer erstellen der 4 39bit 
Zahlen addiert.

Problem dabei ist, dass der Addierer zwischen Eingang und Ausgang max 
ein Takt haben darf! besser wenn die Addition in einem Takt abläuft.

Hier ein kleines Übersichtbild


         |------|
39-------| +    |
         |      |
39-------| +    |
         |      |---|-----
39-------| +    |   |
         |      |   |
    |----| +    |   |
    |    |------|   |
    |               |
    |--41 => 39  ---|

als kleiner Anreitz das Ding muß mit 300 MHz laufen!!!!

Ich habe versucht es mit DSP´s zu lösen aber die schaffen gerade mal 
250MHz
dabei dachte ich immer die sind soooo schnell. kann es sein, dass ich 
bei den DSP´s die Anschlüsse für die Kaskadierung nutzen muß um die 
DSP´s SCHNELL hintereinander zu schalten?  Wenn ja kann mir jemand das 
kurz  skizzieren / erläutern?

Oder gibt es noch bessere Ansätze muß nicht mit DSP´s passieren.

von add (Gast)


Lesenswert?

Was für eine Art Addierer verwendest du denn bis jetzt?

von Dschan (Gast)


Lesenswert?

Einen IP Core und zwar unter "FPGA Features and Design" -"XtremeDSP 
Slices" - "Adder / Subtracter"

und da A:B and C und dann glaube ich muß ich mit PCOUT weiter zum 
nächsten Addierer! aber wie ich die Eingänge von der nächsten Stufe 
wählen muß weiß ich nicht :o(

von Kest (Gast)


Lesenswert?

Stichwort: Pipeline!

Es dauert zwar mehrere Takte, bis das erste Resultat fertig ist, ab da 
aber bekommst Du mit jedem Takt eins!

Zum Beispiel in zwei Takten:

1. a1 <= a(38 downto 0) +  b(38 downto 0);
2. ba <= c(38 downto 0) + a1(38 downto 0);


Ich kenne mich mit Virtexen nicht aus, aber ich denke 300 MHz sind 
machbar. Je länger die Pipeline, desto schneller.


Grüße,

Kest

von Dschan (Gast)


Lesenswert?

Hm,

und c einmal abtakten damit die daten zueinander wieder richtig stehen. 
könnte klappen. probiere ich mal.

mal sehen was die ISE sagt

von chipschmied (Gast)


Lesenswert?

<Zum Beispiel in zwei Takten:
<
<1. a1 <= a(38 downto 0) +  b(38 downto 0);
<2. ba <= c(38 downto 0) + a1(38 downto 0);
                              ^^ --übertrag verpasst, 39 ist richtig

von chipschmied (Gast)


Lesenswert?

Das carry über 40 bit zu führen ist das Problem, das zeit kostet. Du 
musst die Summanden teilen, in Hälften oder eher in Gruppen zu 4 bits 
(geschätzt).
diese gruppen kannst du dann addieren, bei den 6 LUT's des V5 alle 4 
summanden und die 2 carry bits gemeinsam. Da sind aber viele 
teilergebnisse zwischenzuspeichern. und es braucht etliche takte bis zum 
ersten ergebniss. Statt den LUT's kanns du auch BRAMS verwenden (ob die 
300 MHZ schaffen ?). aber dann kannst du mit einer "BRAM_LUT am Ausgang 
gleichzeitig summe und carries ermitteln. (sonst braucht es 3 LUTS pro 
bit). allerdings kannst du mit einem BRAM nur 4 bit verarbeiten.

Aber was soll das Handgestricke, ich les grad die DSP-BLöcke im V5 
schaffen 550 MHz und addieren 2x48 bit.

von J. S. (engineer) Benutzerseite


Lesenswert?

Ja,ja, aber die 550Mhz gelten für das Schalten ohne Routen und 
Datentranssport. Zudem sind es nur 2 Additionen und er braucht vier.

Ist es wirklich nötig, alle 4 Additionen regelmäßig unter den 1/300 MGhz 
zu schaffen ?

von add (Gast)


Lesenswert?

Oder wenn es unbedingt unverzögert in einem Takt sein muss und 
Ressourcen keine Rolle spielen, mal einen eigenen schnellen adder 
basteln.
Carry look-ahead adder oder Carry select adder etwa. Am besten noch auf 
die Virtex-LUTs angepasst.

von Matthias (Gast)


Lesenswert?

300MGHz? Wow, das ist mal schnell :)

von J. S. (engineer) Benutzerseite


Lesenswert?

MGHz  = "M"e "G"a Hz :-)

von damicha (Gast)


Lesenswert?

Wenn es unbedingt 300 MHz sein sollen und ein Taktzyklus für die 
Berechnung zur Verfügung steht, wäre dann redundante Logik eine Option?

von Schargel (Gast)


Lesenswert?

Auch die redundante Logik muss verwaltet werden - zumindest gemuxet - 
macht eben mindestens einen Takt.

von 5. semester (Gast)


Lesenswert?

jo ich glaub mit einer takt, da hilft nur nen carry look ahead mit
entsprechender parallel verarbeitender carry logic.
letzten endes sind da aber auch einige gatter in serie,  und die latezen
dieser addieren sich natrülich auch.
und kompackt ist das auch nicht bei 4 summanden a 39 bit....

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.