Forum: FPGA, VHDL & Co. Carry Select Adder (FPGA,Xilinx)


von Jan S. (sparrow)


Lesenswert?

Hallo!
Ich hab das Problem einen CS-Adder designen zu müssen.Ich hab einen 
funktionierenden Ripple Carry Adder únd einen Volladdierer.Aus diesen 
beiden soll ich einen CS-Adder mit 2 Multiplexern entwerfen.
Der CS-Adder enthält drei Volladierer und die  beiden Multiplexer sollen 
über das Ausgangssignal des dritten Addierers gesteuert werden.
Ich weiss nur leider nicht wie ich das realisieren soll,momentan werde 
ich mit Fehlermeldungen frustriert.
Ich wäre dankbar, wenn mir jemand mit Logiktabellen und/oder VHDL bzw. 
Verilog Codeteilen weiterhelfen könnte.

Vielen Dank im Voraus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jan S. schrieb:
> Ich weiss nur leider nicht wie ich das realisieren soll,momentan werde
> ich mit Fehlermeldungen frustriert.
Dann zeig mal deinen Code und die passenden Fehlermeldungen...

von Jan S. (sparrow)


Angehängte Dateien:

Lesenswert?

Ich habe die bisher fertigen und funktionierenden Codes angehängt.Bei 
dem CS-Adder krieg ich die Signalübertragung einfach nicht hin.Bisher 
sind alle meine Versuche gescheitert.Ich hab erstmal nur den Anfang 
angehängt.Wäre schön wenn ihr mir sagen könntet, ob ich damit schon auf 
dem richtigen Weg bin, oder ob die Idee schon völlig falsch ist.
Die Aufgabe fing mit dem Volladdierer an.Daraus sollte ein Ripple Carry 
erstellt werden.Jetzt soll ich mit dem vorhandenen RC ein CS erstellen.
Leider hab ich ein Problem mit dem Logikverständnis.
Mein Ansatz:
Ich versuche 3 Volladdierer zu nehmen und die Ausgänge von 2 der 
Volladierer(U2,U3) über "sum(2)" von "U4"(dritter Volladierer)zu 
steuern,indem ich über "sum(2) die Multiplexer ansteuere,aber ich weiss 
nicht wie ich das machen soll.
Ich hab versucht die Multiplexer über ein "temp" zu zu regeln, so wie 
ich das bei den vorigen Aufgaben gemacht habe um Signale zu 
übertragen(siehe Anhang), aber das klappte gar nicht.
Dann wurde mir gesagt ich solle das mit "when" "else" Befehlen 
machen,weil man dann die Multiplexer mit 2 Zeilen abhandeln könne, aber 
das hab ich nicht wirklich verstanden.
Ich weiss, das mein Ansatz sehr rudimentär ist, aber ich denke alle 
Fehlversuche hier hochzuladen, wäre wenig sinnvoll.
Es geht mir erstmal hauptsächlich um das Logikverständis des CS.
Die Aufgabenstellung hab ich in meinem Startpost schon beschrieben.Ich 
bin für jede Hilfe dankbar und bedanke mich schon im Voraus.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jan S. schrieb:
> Ich wäre dankbar, wenn mir jemand mit Logiktabellen und/oder VHDL bzw.
> Verilog Codeteilen weiterhelfen könnte.
Das wäre wahrscheinlich nicht mal soooo schwierig, wenn du ein Bildchen 
malen könntest, wie du dir das vorstellst.

> Wäre schön wenn ihr mir sagen könntet, ob ich damit schon auf
> dem richtigen Weg bin, oder ob die Idee schon völlig falsch ist.
Als Tipp: du willst offenbar einen 4-Bit CS-Adder bauen, dann brauchst 
du nach meinem Dafürhalten 8 Volladierer und 1-2 Multiplexer
(laut Wikipedia http://de.wikipedia.org/wiki/Carry-Select-Addierer).

von D. I. (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal eine generische Implementierung eines CSA von mir

von Jan S. (sparrow)


Lesenswert?

Vielen Dank für eure Antworten!
@ Lothar
Ich soll einen 2-Bit Carry Select Addierer implementieren.
Die Addition soll doppelt durchgeführt werden, da der Übertrag 
entscheidend ist,da die 0 bzw 1 darüber entscheidet welches Ergebnis der 
Multiplexer als richtig auswählt.Deshalb 2 Volladierer und 2 
Multiplexer.
@ D.I.
Danke für deinen Code.Hilft mir beim Verständnis sehr.

Hab nur bisher meine Multiplexer noch nicht zum laufen gekriegt.Kann 
sich also nur noch um Stunden handeln:-)

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.