Difference between revisions of "ALU in Detail"
Line 75: | Line 75: | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | =====4 BIT ALU===== | ||
+ | {{box|type=l_green_light|text= | ||
+ | Now we can take up the 1 bit ALU as block and construct a 4 bit ALU, which performs all the functions of the 1 bit ALU on the 4 bit inputs. | ||
+ | Thus a single building block can be constructed and used recursively. | ||
+ | The inputs A and B are four bits and the output is 4 bit as well. | ||
+ | Figure below illustrates it: | ||
+ | }} | ||
+ | [[File:4BITALU.jpg|frameless|4 bit ALU ]] | ||
+ | =====Important conclusions===== | ||
+ | {{box|type=l_green_light|text= | ||
+ | There are a few important takeaways here: | ||
+ | * The selection lines MO and M1 select the function ALU performs. These selection lines combined with the input arguments and desired functions a '''''Instruction Set''''' can be formed. | ||
+ | * These Instructions can used to create meaningful programs. Since these are required to be easily available they can be stored on '''''ROM''''' unit. | ||
+ | * ROM memories are slower in speed, hence an intermediate high speed RAM is often used. | ||
+ | *All the critical timings, decoding of the instructions are often grouped together in seperate '''''control and timings unit'''' | ||
+ | *If a Micro controller would be constructed only from ALU, RAM, ROM there would not be any external interface. Hence we have '''''Input/Output''''' IO ports. | ||
+ | *Additional features such as ''''''Interrupts, communication protocols, EEPROM, Timers/Counters, Debug interfaces etc ''''' are incorporated to make a controller complete. | ||
+ | |||
+ | In above discussion we might have left out intricate details involved in a ALU, CPU design. But the aim was to understand ALU/CPU at a deeper level. | ||
+ | |||
+ | }} |
Revision as of 14:14, 8 December 2013
Arithmetic and Logic Unit in Detail
You should have heard of an Arithmetic and Logic Unit before, while discussing a Computer CPU or a micro controller. In this tutorial we will look at what an ALU really is?
We will discuss a 4 bit ALU; this would limit many possibilities 16. We would assume that associated registers and instruction set are also 4 bit.
We will discuss a 4 bit ALU; this would limit many possibilities 16. We would assume that associated registers and instruction set are also 4 bit.
Contents
Half Adder
half adder adds two single binary digits A and B. It has two outputs, sum (S) and carry (C). The carry signal represents an overflow into the next digit of a multi-digit addition.Figures below illustrate a simple half adder constructed from logic gates
Inputs | Outputs | ||
---|---|---|---|
A | B | S | C |
0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 |
Full Adder
Full Adder is an extension of half adder to include the Cin input as well. The truth table can be implemented to form the logic diagram as shown below.
Inputs | Outputs | |||
---|---|---|---|---|
A | B | Cin | Cout | S |
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
1 | 1 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
The basic Unit: 1 bit ALU
So with the above building blocks, lets construct a simple ALU that performs a arithmetic operation (1 bit addition)and does 3 logical operations namely AND, NOR and XOR as shown below. The multiplexer selects only one operation at a time.
The operation selected depends on the selection lines of the multiplexer as shown in the truth table.
Inputs | Outputs | ||
---|---|---|---|
M1 | M0 | Operation | |
0 | 0 | SUM | |
1 | 0 | AND | |
0 | 1 | OR | |
1 | 1 | XOR |
4 BIT ALU
Now we can take up the 1 bit ALU as block and construct a 4 bit ALU, which performs all the functions of the 1 bit ALU on the 4 bit inputs.
Thus a single building block can be constructed and used recursively.
The inputs A and B are four bits and the output is 4 bit as well.
Figure below illustrates it:
Important conclusions
There are a few important takeaways here:
- The selection lines MO and M1 select the function ALU performs. These selection lines combined with the input arguments and desired functions a Instruction Set can be formed.
- These Instructions can used to create meaningful programs. Since these are required to be easily available they can be stored on ROM unit.
- ROM memories are slower in speed, hence an intermediate high speed RAM is often used.
- All the critical timings, decoding of the instructions are often grouped together in seperate control and timings unit'
- If a Micro controller would be constructed only from ALU, RAM, ROM there would not be any external interface. Hence we have Input/Output IO ports.
- Additional features such as 'Interrupts, communication protocols, EEPROM, Timers/Counters, Debug interfaces etc are incorporated to make a controller complete.
In above discussion we might have left out intricate details involved in a ALU, CPU design. But the aim was to understand ALU/CPU at a deeper level.