0% found this document useful (0 votes)
70 views

ALU Design Example

The document describes the design of a 4-bit ALU that implements 8 functions using only 1-bit full adders, 2-input gates, inverters, and multiplexers. The ALU operations include addition, subtraction, increment, decrement, multiplication by 2, division by 2, bitwise AND, and bitwise OR. The design uses multiplexers to select the correct inputs for the full adders and gates to perform the selected operation on the A and B inputs and produce the output F.

Uploaded by

mhkhan1980
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
70 views

ALU Design Example

The document describes the design of a 4-bit ALU that implements 8 functions using only 1-bit full adders, 2-input gates, inverters, and multiplexers. The ALU operations include addition, subtraction, increment, decrement, multiplication by 2, division by 2, bitwise AND, and bitwise OR. The design uses multiplexers to select the correct inputs for the full adders and gates to perform the selected operation on the A and B inputs and produce the output F.

Uploaded by

mhkhan1980
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

• Design a 4-bit ALU that implements the following set of

operations with only the following components (assume 2’s


complement number representation, no need to implement
overflow circuit)
– 1-bit Full-Adders (FA)
– 2-input AND/OR/XOR gates
– Inverters
– 2:1 MUX M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B
M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B
M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B

0 1
MUX M2

Fi
M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B

A * 2 = left-shift
e.g. 3 * 2 = “011” * 2 = “110” = 6

A / 2 = right-shift
0 1
e.g. 3 / 2 = “011” / 2 = “001” = 1 MUX M1

0 1
MUX M2

Fi
M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1

0 1
A * 2 = left-shift M0 MUX
e.g. 3 * 2 = “011” * 2 = “110” = 6

A / 2 = right-shift
0 1
e.g. 3 / 2 = “011” / 2 = “001” = 1 MUX M1

0 1
MUX M2

Fi
M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1

0 1 0 1
M0 MUX MUX M0

0 1
MUX M1

0 1
MUX M2

Fi
M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1

0 1 0 1
M0 MUX MUX M0

0 1
MUX M1

0 1
MUX M2

Fi
M2 M1 M0 Function Name F=
0 0 0 Add A+ B
0 0 1 Subtract A– B
0 1 0 Increment A+ 1
0 1 1 Decrement A– 1
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1

0 1 0 1
Ai M0 MUX MUX M0

0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= C0
0 0 0 Add A+ B Bi 0
0 0 1 Subtract A– B NOT(Bi) 1
0 1 0 Increment A+ 1 “0” 1
0 1 1 Decrement A– 1 “1” 0
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1

0 1 0 1
Ai M0 MUX MUX M0

0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= C0
0 0 0 Add A+ B Bi 0
0 0 1 Subtract A– B NOT(Bi) 1
0 1 0 Increment A+ 1 “0” 1
0 1 1 Decrement A– 1 “1” 0
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= C0
0 0 0 Add A+ B Bi 0
0 0 1 Subtract A– B NOT(Bi) 1
0 1 0 Increment A+ 1 “0” 1
0 1 1 Decrement A– 1 “1” 0
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= C0
0 0 0 Add A+ B Bi 0
0 0 1 Subtract A– B NOT(Bi) 1
0 1 0 Increment A+ 1 “0” 1
0 1 1 Decrement A– 1 “1” 0
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= C0
0 0 0 Add A+ B Bi 0
0 0 1 Subtract A– B NOT(Bi) 1
0 1 0 Increment A+ 1 “0” 1
0 1 1 Decrement A– 1 “1” 0
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= C0 M1 M0
0 0 0 Add A+ B Bi 0
0 0 1 Subtract A– B NOT(Bi) 1
0 1 0 Increment A+ 1 “0” 1
0 1 1 Decrement A– 1 “1” 0
C0
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= M1 M0
0
0
0
0
C0
1
1 Ai Bi Ai Bi
1
1 Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= M1 M0
0
0
0
0
C0
1
1 Ai Bi Ai Bi
1 1 0 Bitwise-AND A AND B
1 1 1 Bitwise-OR A OR B Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi
M2 M1 M0 Function Name F= M1 M0
0
0
0
0
C0
1 0 0 Multiply by 2 A* 2
1 0 1 Divide by 2 A/ 2 Ai Bi Ai Bi
1
1 Ai-1 Ai+1
Bi M0
0 1 0 1
Ai M0 M0 MUX MUX M0
0 1
MUX M1
0 1
MUX M1
Ci+1 FA Ci

0 1
MUX M2

Fi

You might also like