mikrocontroller.net

Forum: FPGA, VHDL & Co. ripple carry addierer


Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche gerade eine vhdl übungsaufgabe nachzuvollziehen code ist 
angehängt ich kapier das Synthese ergebnis net ganz (siehe screenshot)
wie man darauf sieht kommt bei dieser Operation:

      0011  (A)
exor  1001  (B)
-----------------
exor  0000  (C)

=>    1100  raus

ich habs mal von hand gemacht aber ich krieg das hier raus:

      0011  (A)
exor  1001  (B)
-----------------
      1010
exor  0000  (C)

=>    1010

wenn ich die zeile richtig verstehe :
"return AIN xor BIN xor CIN;"
muss man erst A und B xor machen und dann das ergebnis xor mit C

Das ganze kommt mir vor wie ein halbaddierer aber wo in meiner rechnung 
is der denkfehler?

auch aus dem übertrag werde ich net schlau diese operation z.b.:

      0011  (A)
      1001  (B)
      0001  (C)

"return(AIN and BIN) or (AIN and CIN) or (BIN and CIN);"

A & B => 0001 => dann würde doch diese bedingung hier "(AIN and BIN)" 
richtig sein oder nicht? also müsste carry_out eine 1 ausgeben bleibt 
aber auf 0 hoffe jemand weiß rat

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

Bewertung
0 lesenswert
nicht lesenswert
> ich kapier das Synthese ergebnis net ganz (siehe screenshot)
Das ist die Waveform einer Simulation, aber kein Syntheseergebnis.
Das Ergebnis der Synthese heißt RTL-Schaltplan.

> muss man erst A und B xor machen und dann das ergebnis xor mit C
Die Reihenfolge ist egal... :-o

> dann würde doch diese bedingung hier "(AIN and BIN)"
> richtig sein oder nicht?
Diese Funktionen bearbeiten über die for-Schleife jeweils nur 1 Bit, das 
ist dir bewusst?

Der Addierer funktioniert auf jeden Fall, die Simulation passt... ;-)

Autor: Bob Hulu (Firma: hinter den 7 bergen) (bob128)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

ich weiß schon das die simulation passt aber mir gehts um das 
nachvollziehen wie es dazu kommt was stimmt nicht mit meiner rechung von 
hand? wieso krieg ich was anderes raus

Autor: bobhulu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok kein kopfzerbrechen mehr habs raus diese zeilen hier hätte ich mir 
genauer ansehen sollen:

 SUM_VAR(I) := SUM_FUNC(A(I),B(I),CARRY_VAR(I));
 CARRY_VAR(I+1) := CARRY_FUNC(A(I),B(I),CARRY_VAR(I));

z.b. beim ersten durchlauf

 SUM_VAR(0) := SUM_FUNC(A(0),B(0),CARRY_VAR(0));
                          1    1            0
=>  AIN xor BIN xor CIN = 0

 CARRY_VAR(1) := CARRY_FUNC(A(0),B(0),CARRY_VAR(0));
                              1    1            0
=> (AIN and BIN) or (AIN and CIN) or (BIN and CIN)
    gibt 1 zurück weil AIN and BIN = 1 ergibt und damit steht für

den nächsten durchlauf in Carry_var(1)
     SUM_VAR(1) := SUM_FUNC(A(1),B(1),CARRY_VAR(1));
                              1    0            1
eine 1 drin die operation:
     =>  AIN xor BIN xor CIN = 1 xor 0 xor 1 ergibt dann 0

ich hätte mir das mit dem übertrag genauer ansehen sollen

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.