(Part-1) Design an Arithmetic Logic Unit (ALU) that has two 8-bit inputs and an 8-bit output. The ALU is shown on the left side of Figure 1. The ALU functions and the flags that will be updated (i.e., means that the flag will not be affected and means that the flag changes based on the OutALU) are given on the right side of Figure 1:
- FunSel selects the function of the ALU.
- OutALU shows the result of the operation that is selected by FunSel and applied on A and/or B inputs.
- Z (zero) bit is set if OutALU is zero (e.g., NOT B is zero).
- C (carry) bit is set if OutALU sets the carry (e.g., LSL A produces carry).
- N (negative) bit is set if the ALU operation generates a negative result (e.g., AB results in a negative number).
- O (overflow) bit is set if an overflow occurs (e.g., A+B results in an overflow).
- Note that Z|C|N|O flags are stored in a register!
FunSel | OutALU | Z | C | N | O |
00000001 | AB | ||||
00100011 | NOT A NOT B | ||||
01000101 0110 | A + BA + B + CarryA B | ||||
01111000 1001 | A AND BA OR BA XOR B | ||||
1010 101111001101 11101111 | LSL ALSR AASL AASR A CSL ACSR A |
OutALU Register
Figure 1: The ALU (Left) and its characteristic table (Right)
(Circular | Arithmetic | Logical) Shift (Left | Right) operations are depicted in Figure 2, Figure 3, and Figure 4.
Figure 2: Circular Shift Operations
Figure 3: Logical Shift Operations
Figure 4: Arithmetic Shift Operations
(Part-2) Implement the organization in Figure 5. Please note that, the whole system uses the same single clock.
IR (0-7)
IR (8-15)
|
|
|
Figure 5: ALU System
Reviews
There are no reviews yet.