Arithmetic logic unit: Difference between revisions
m Fixed grammer mystakes. |
|||
(One intermediate revision by the same user not shown) | |||
Line 56: | Line 56: | ||
* Mux Based ALU's | * Mux Based ALU's | ||
* Control Line | * Control Line Based ALU's | ||
[[ | === Mux Based ALU's === | ||
[[File:Muxbased alu.jpg|thumb|266x266px|Simple Mux Based ALU]] | |||
Mux based ALU's uses a [[Multiplexer]] to select outputs from gates or oprations | |||
Pros: | |||
* They are simple to make | |||
* They are easy to understand | |||
Cons: | |||
* They take up alot of space | |||
* They are limited in operations | |||
=== Control Line Based ALU's === | |||
Unlike Mux Based ALU's, Control Line Based ALU's dont have a mux instead they have inputs like: | |||
* Carry | |||
* !A | |||
* !B | |||
* OR | |||
* XOR | |||
* AND | |||
* NOR | |||
They can do lots of operations. they dont have a sub mod input insread to subtract number you can turn on invert B (!B) and carry. | |||
Note they dont have opcode input like mux based alus so you have to make a ROM that turns on specific pins like: | |||
{| class="wikitable" | |||
|+ | |||
!Name | |||
!Opcode | |||
!Pins | |||
!Description | |||
|- | |||
|Add | |||
|0000 | |||
|None | |||
|Adds A and B | |||
|- | |||
|Sub | |||
|0001 | |||
|Carry, !B | |||
|Subtracts B from A | |||
|- | |||
|AND | |||
|0010 | |||
|AND | |||
|Outputs true if both A and B are true, otherwise false | |||
|- | |||
|NAND | |||
|0011 | |||
|!A, !B, AND | |||
|Inverse of AND. If A and B are true, output is false | |||
|- | |||
|OR | |||
|0100 | |||
|OR | |||
|Outputs true if either A or B is true | |||
|- | |||
|NOR | |||
|0101 | |||
|!A, !B, OR | |||
|Inverse of OR. If either A or B is true, output is false | |||
|- | |||
|XOR | |||
|0110 | |||
|XOR | |||
|Outputs true if exactly one of A or B is true | |||
|- | |||
|XNOR | |||
|0111 | |||
|!A, !B, XOR | |||
|Inverse of XOR Outputs true if exactly one of A or B is false | |||
|- | |||
|INC | |||
|1000 | |||
|B = 1 | |||
|Increments A by 1 | |||
|- | |||
|DEC | |||
|1001 | |||
|Carry, !B, B = 1 | |||
|Decrements A by 1 | |||
|} | |||
Pros: | |||
* They allow for complex oprations. | |||
* They are small | |||
Cons: | |||
* They are complex |
Latest revision as of 15:45, 14 September 2025


- Arithmetic logic unit
- In Logic World, an arithmetic logic unit (ALU) is a component of a central processor that performs basic arithmetic and logic operations.
- By combining multiple operations, it is possible to perform any computation.
- It may be called the "brains" of the central processor.
An ALU also has "flags" to keep track of different situations during computation. Operations that an ALU can perform include arithmetic operations such as addition and subtraction, as well as bitwise operations like XOR, NOR, AND, and OR.
The status flags it keeps track of are, for example:
- A = B
- A > B
- A < B
- Carry
- Others
ALUs can have very different designs with varying specifications, such as bit size, possible operations, and speed. In principle, you don't need to implement every possible operation - a few operations are sufficient to make the system Turing complete - although additional operations make it more convenient and often faster.
Example
Below is an example of possible operations in an ALU:
Name | Opcode | Description |
---|---|---|
Add | 000 | Adds A and B |
Sub | 001 | Subtracts B from A |
AND | 010 | Outputs true if both A and B are true, otherwise false |
NAND | 011 | Inverse of AND. If A and B are true, output is false |
OR | 100 | Outputs true if either A or B is true |
NOR | 101 | Inverse of OR. If either A or B is true, output is false |
XOR | 110 | Outputs true if exactly one of A or B is true |
ALU Designs
Their are two main alu Designs:
- Mux Based ALU's
- Control Line Based ALU's
Mux Based ALU's

Mux based ALU's uses a Multiplexer to select outputs from gates or oprations
Pros:
- They are simple to make
- They are easy to understand
Cons:
- They take up alot of space
- They are limited in operations
Control Line Based ALU's
Unlike Mux Based ALU's, Control Line Based ALU's dont have a mux instead they have inputs like:
- Carry
- !A
- !B
- OR
- XOR
- AND
- NOR
They can do lots of operations. they dont have a sub mod input insread to subtract number you can turn on invert B (!B) and carry.
Note they dont have opcode input like mux based alus so you have to make a ROM that turns on specific pins like:
Name | Opcode | Pins | Description |
---|---|---|---|
Add | 0000 | None | Adds A and B |
Sub | 0001 | Carry, !B | Subtracts B from A |
AND | 0010 | AND | Outputs true if both A and B are true, otherwise false |
NAND | 0011 | !A, !B, AND | Inverse of AND. If A and B are true, output is false |
OR | 0100 | OR | Outputs true if either A or B is true |
NOR | 0101 | !A, !B, OR | Inverse of OR. If either A or B is true, output is false |
XOR | 0110 | XOR | Outputs true if exactly one of A or B is true |
XNOR | 0111 | !A, !B, XOR | Inverse of XOR Outputs true if exactly one of A or B is false |
INC | 1000 | B = 1 | Increments A by 1 |
DEC | 1001 | Carry, !B, B = 1 | Decrements A by 1 |
Pros:
- They allow for complex oprations.
- They are small
Cons:
- They are complex