Statusbits einer ALU (Arithmetic Logic Unit)

Gast #2199303
Lesenswert?

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!
Gast #2199320
Lesenswert?

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
Gast #2199328
Lesenswert?

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.
Gast #2199344
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren