You are on page 1of 17

Design a 4-bit ALU that implements the following set of operations with only the following components (assume

2s 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 0 0 1 Add Subtract A+ B A B

0
0 1 1 1 1

1
1 0 0 1 1

0
1 0 1 0 1

Increment
Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ 1
A 1 A* 2 A/ 2 A AND B A OR B

M2

M1

M0

Function Name

F=

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B

M2

M1

M0

Function Name

F=

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B

MUX

M2

Fi

M2

M1

M0

Function Name

F=

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B

A * 2 = left-shift e.g. 3 * 2 = 011 * 2 = 110 = 6 A / 2 = right-shift e.g. 3 / 2 = 011 / 2 = 001 = 1

0
MUX

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B Ai-1 Ai+1
0 MUX 1

A * 2 = left-shift e.g. 3 * 2 = 011 * 2 = 110 = 6 A / 2 = right-shift e.g. 3 / 2 = 011 / 2 = 001 = 1

M0

0
MUX

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B Ai-1 Ai+1
0 MUX 1 0 MUX 1

Ai Bi Ai Bi

M0

M0

0
MUX

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B Ai-1 Ai+1
0 MUX 1 0 MUX 1

Ai Bi Ai Bi

M0

M0

0
MUX

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B Ai-1 Ai+1
0 MUX 1 0 MUX 1

Ai Bi Ai Bi

Ai

M0

M0

1
MUX

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

C0

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B

Bi
NOT(Bi) 0 1

0
1 1 0 Ai Bi Ai Bi Ai-1 Ai+1
0 MUX 1 0 MUX 1

Ai

M0

M0

1
MUX

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

C0

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR Bi Ai
0

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B M0

Bi
NOT(Bi) 0 1

0
1 1 0 Ai Bi Ai Bi Ai-1 Ai+1
0 MUX 1 0 MUX 1

M0
1 MUX

M0

M1
0 1
MUX

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

C0

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR Bi Ai
0

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B M0

Bi
NOT(Bi) 0 1

0
1 1 0 Ai Bi Ai Bi Ai-1 Ai+1
0 MUX 1 0 MUX 1

M0
1 MUX

M0

M1
0 1
MUX

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

C0

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR Bi Ai
0

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B M0 M0
1 MUX

Bi
NOT(Bi) 0 1

0
1 1 0 Ai Bi Ai Bi Ai-1 Ai+1
0 MUX 1 0 MUX 1

M0

M0

M1
0 1
MUX

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

C0

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR Bi Ai
0

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B M0 M0
1 MUX

Bi
NOT(Bi) 0 1

0
1 1 0 Ai Bi Ai Bi Ai-1 Ai+1
0 MUX 1 0 MUX 1

M0

M0

M1
0 1
MUX

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

C0

M1 M0

0
0 0 0 1 1 1 1

0
0 1 1 0 0 1 1

0
1 0 1 0 1 0 1

Add
Subtract Increment Decrement Multiply by 2 Divide by 2 Bitwise-AND Bitwise-OR Bi Ai
0

A+ B
A B A+ 1 A 1 A* 2 A/ 2 A AND B A OR B M0 M0
1 MUX

Bi
NOT(Bi) 0 1

0
1 1 0 C0 Ai Bi Ai Bi Ai-1 Ai+1
0 MUX 1 0 MUX 1

M0

M0

M1
0 1
MUX

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

M1 M0

0
0 0 0 1 1 1 1 Bi Ai
0 MUX 1

C0 Ai Bi Ai Bi Ai-1 Ai+1 M0 M0 M1
0 1
MUX 0 MUX 1 0 MUX 1

M0

M0

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

M1 M0

0
0 0 0 1 1 1 1 1 1 0 1 Bitwise-AND Bitwise-OR Bi Ai
0 MUX 1

C0 Ai Bi Ai Bi A AND B A OR B M0 M0 M1
0 1
MUX

Ai-1 Ai+1
0 MUX 1 0 MUX 1

M0

M0

Ci+1

FA

Ci

M1

MUX

M2

Fi

M2

M1

M0

Function Name

F=

M1 M0

0
0 0 0 1 1 1 1 Bi Ai
0 MUX 1

0 0

0 1

Multiply by 2 Divide by 2

A* 2 A/ 2 Ai-1 Ai+1 M0 M0 M1
0 1
MUX 0 MUX 1 0

C0 Ai Bi Ai Bi

M0

1 MUX

M0

Ci+1

FA

Ci

M1

MUX

M2

Fi

You might also like