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
> 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... ;-)
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.