Hallo! Ich beschäftige mich gerade mit der ALU (Arithmetic Logic Unit). Nun bin ich auf folgende Frage gestoßen: Durch welche logischen Schaltungen werden die Statusbits N (Negative,gesetzt, wenn Ergebnis negativ), C (Carry gesetzt, wenn Übertrag nach Addition), Z (Zero=gesetzt, wenn Ergebnis 0) und V (Overflow, gesetzt, wenn bei Addition ein Überlauf entsteht). Ich habe mir bisher folgendes ausgedacht. Zero: einfach einen Inverter vom Ausgang weg Carry: Bsp. Halb-/Volladdierer => logische UND-Verknüpfung von A und B Overflow: carry n und carry n-1 mit Exor vergleichen. Negative: eine Ahnung? Bitte um Hilfe!
Johann M schrieb: > Ich habe mir bisher folgendes ausgedacht. Üblicherweise haben ALUs mehr als 1 Bit. > Negative: eine Ahnung? Weshalb du hier auf die Nase fällst.
Ich will mich hier aber nur mit einer 1-bit-Alu beschäftigen, mehr nicht. Mir ist sehr wohl klar, dass eine normale Alu weit, weit größer ist, aber um das geht es mir nicht.
Die Bits im Statusregister einer CPU sind üblicher Weise im dazugehörenden Datenblatt bzw. der Befehlsbeschreibung genau erklärt. Peter
Johann M schrieb: > Ich will mich hier aber nur mit einer 1-bit-Alu beschäftigen, mehr > nicht. Wie willst du dann eine negative Zahl von einer positiven Zahl unterscheiden (betrifft N und V)?
Hi
>C (Carry gesetzt, wenn Übertrag nach Addition)
Wird im allgemeinen auch bei Subtraktion gesetzt.
Hast du die ALU eine konkreten Controllers im Auge? Es gibt da durchaus
Unterschiede.
MfG Spess
Ausser
> Zero: einfach einen Inverter vom Ausgang weg
fallen alle anderen Informationen direkt aus dem Rechenwerk an jeweils
einer eigenen Leitung an, die Signale müssen nur, wie das Ergebnis,
gespeichert werden.
Du hast bei zero bei einer 1 bit ALU noch Glück, normalerweise braucht
es ein <n> bit NOR Gatter dafür.
spess53 schrieb: >>C (Carry gesetzt, wenn Übertrag nach Addition) > Wird im allgemeinen auch bei Subtraktion gesetzt. Fragt sich nur wie. Gibt da 2 Konventionen - einerseits aus einer echten Subtraktion, andererseits aus der Addition des Einerkomplements (6502, ARM).
Hi >Fragt sich nur wie. Gibt da 2 Konventionen - einerseits aus einer echten >Subtraktion, andererseits aus der Addition des Einerkomplements (6502, >ARM). Bei AVRs ist das so definiert: SUB Rd,Rr (->R) C: Rd7• Rr7 +Rr7 •R7 +R7• Rd7 Set if the absolute value of the contents of Rr is larger than the absolute value of Rd; cleared otherwise. MfG Spess
Hi Da ist beim Kopieren etwas verloren gegangen: Rd7• Rr7 +Rr7 •R7 +R7• Rd7 -> /Rd7• Rr7 +Rr7 •R7 +R7• /Rd7 MfG Spess
Hi
>Tip: In [code] einbetten.
OK danke. Das nächste mal.
MfG Spess
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.