In this project we design and test an eight-bit ALU. This ALU performs the standard integer arithmetic operations (add, subtract, and multiply), as well as logical operations and shifts. Each ALU operation uses up to two twos-complement 8-bit inputs; the operations themselves are specified using a four-bit opcode (allowing up to sixteen possible operations). The ALU produces a 16-bit output and also generates output flags for zero, overflow, and error; the 16-bit output eliminates the need for a separate carry flag. The design as proposed takes 32-33 pins (depending on the implementation of the flags; since these flags are exclusive, the 3 flags can be coded in two bits).
ARITHMETIC UNITThe arithmetic portion of this ALU handles the add and subtract operations. These are implemented using a carry-lookahead adder. Because of the quadratic complexity of carry generation, the carry-lookahead circuits will be limited to 4-bit components; two such units will be connected in a ripple-carry fashion. Multiply is implemented using a serial algorithm, controlling the shift unit and adder.
BOOLEAN AND SHIFT UNITSThe boolean unit handles basic logical operations, such as XOR, NOT, AND, and OR. These are easily implemented in standard logic. The shift unit uses a barrel-shifter to provide left and right shifts and rotates. The barrel shifter is implemented as a matrix of transmission gates. For maximum flexibility, this shifter allows the user to specify the data shifted into empty positions.
Tim Corder
Murthy Durbhakula
Vijay S. Pai
Last Updated: September 15, 1996