mikrocontroller.net

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


Autor: Jan S. (sparrow)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jan S. (sparrow)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: D. I. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal eine generische Implementierung eines CSA von mir

Autor: Jan S. (sparrow)
Datum:

Bewertung
0 lesenswert
nicht 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:-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.