Ich muss eine ALU mit zwei 8-Bit-Eingängen A und B und Steuereingängen x, y und z entwerfen, die die folgenden Operationen unterstützen:
x y z | operation
0 0 0 | S = A-B
0 0 1 | S = A+B
0 1 0 | S = A*8
0 1 1 | S = A/8
1 0 0 | S = A NAND B (bitwise)
1 0 1 | S = A XOR B (bitwise)
1 1 0 | s = reverse the bits of A
1 1 1 | S = NOT A (bitwise)
Dies soll mit einem 8-Bit-Addierer und einem Arithmetik-Logik-Extender erfolgen. Beim Lesen meines Lehrbuchs sehe ich, dass der Zweck eines AL-Extenders darin besteht, die Eingabebits so zu ändern, dass ein Addierer anstelle vieler zusätzlicher Komponenten verwendet werden kann, um alles zu tun (oder zumindest verstehe ich das daraus ). Zum Beispiel könnte der AL-Extender die Bits in das Zweierkomplement setzen, so dass der Addierer eine Subtraktion durchführt. Ebenso könnten für die bitweisen logischen Operationen die Bits entsprechend geändert werden und einer der Addierereingänge könnte einfach Null sein, so dass das Ergebnis richtig durchkommt.
Aber was genau mache ich gegen Multiplikation? Mein Buch ist sehr vage, daher bin ich mir nicht sicher, ob ein AL-Extender von mir verlangen würde, etwas Kluges zu tun, damit der Addierer die Arbeit erledigt (in meinem Fall nur 8 Mal hinzufügen? ... ha ha), oder ob ich kann einfach einen Multiplikator hineinwerfen. Ich muss mich über die Division informieren, aber ich wette, es ist ähnlich wie bei der Multiplikation.
Nun, unter dem Strich ist immer noch, was darf ein AL-Extender "haben"? Ist es der einzige Zweck, die Eingabe so zu ändern, dass sie einem Addierer zugeführt werden kann?
* EDIT: Nun, es ist eine Multiplikation / Division mit 8, also kann dies leicht durch Verschieben nach links oder rechts um 3 durchgeführt werden. Hätte ich immer noch einen echten / richtigen AL-Extender, wenn ich dort einige Schalthebel hinzufügen würde? (Vielleicht überdenke ich das als Anfänger ...)