5. prerequisite
• BOOLEAN ALGEBRA-
Boolean algebra is formal
way to express digital
logic equations and to represent a logical design in an
alpha-numeric way. It is a language of 0’s and 1’s.
• A Boolean function is an expression formed with
binary variables which makes use of logic gates based
on Boolean algebra
e.g.F1=xyz’ where F1=1 only if x=1,y=1,z=0
6. Sum-of-products form
(SOP)
•
– first
the product(AND)
terms are formed then
these are summed(OR)
– e.g.: ABC + DEF + GHI
Product-of-sum form
(POS)
•
– first the sum (OR) terms are formed then
are taken (AND)
– e.g.: (A+B+C) (D+E+F) (G+H+I)
the products
It is possible to convert between these two forms
using Boolean algebra (DeMorgan’s Laws)
•
7. Minimization by Karnaugh Map
The Karnaugh map is a theoretical method for
the simplification of any Boolean expressions
regardless of its number of variables.
It provides simple straightforward approach for
minimizing Boolean functions.
It either regarded as pictorial form of truth
table or as an extension of the Venn diagram.
8. Example: Let’s do this in relation to the 3input example
S A B
Y
0
0 0
0
0
0 1
0
0
1 0
1
0
1 1
1
1
0 0
0
1
0 1
1
1
1 0
0
1
1 1
1
result: Y = S.B + S’.A
9. Architectural design
main ( )
read
input
validate
input
derive
truth
table
generate
k-map
solve kmap
solve for
2 var
solve for
3 var
display
solve for
4 var
2var
quad
octet
1
3var
pair
quad
octet
4var
pair
quad
pair
10.
11. Algorithm
int read input ()
// Input : No of variable n , Input
// Output : Formation Of Input Truth Table Array
{
step1:
read the no of variables
if it is 2, 3 or 4
go to step 2
step2:
read the type of input
case 1:
if minterm with literals
check validity of input
if valid form the input array
case 2:
if maxterm with literals
check validity of input
if valid form the input array
12. case 3:
if minterm with truth table values
check validity of input
if valid form the input array
case 4:
if maxterm with truth table values
check validity of input
if valid form the input array
} // end of Read Input
13. Algorithm
int
formKmap
(int n)
// input : no of variable (n) , Integer array input[2^n ]
//output : two dimensional matrix say
//Forms the k map depending on the type of input
{
k=0;
for (i=0;i < no. of rows ;i++)
for (j=0;j < no. of columns; j++)
{
k mat [ i ][ j ] = min[k];
k++;
}
if n is 3
Swap the columns 3 & 4 in the k mat
if n is 4
Swap the columns 3 & 4 and rows 3 and 4 in the k mat
} // end of form K-map
14. SolveKmap (k mat [ ][ ],n )
// input : no of variable (n) , k mat
// calls other functions depending on value of n
{
if n is 2
solve2var (k mat [ ][ ])
if n is 3
solve3var (k mat [ ][ ])
if n is 4
solve4var (k mat [ ][ ])
} // end
15. Algorithm
solve2var(k mat [ ][ ] )
// input : no of variable (n) , k_mat
// solves the given k_mat with n=2 and calls display function
{
check for all ones in k mat
if
True
push 1 to the linked list
else if
the group formed is in pairs then send the
group value to the list
else if
}
only one variable in the matrix is one then send
its group value to the list.
Display();
16. Algorithm
solve3var (k_mat [ ][ ])
// input : no of variable (n) , k mat
// solves the given k mat with n=2 and calls display function
{
check for all k mat [ i ] [ j ] =1
if true
o list.Push_front (1);
set all flag [ i ] [ j ] =1;
else
Quad;
Pair;
Single;
}
Display ( );
17. Algorithm
solve4var (k_mat [ ][ ])
// input : no of variable (n) , k_mat
// solves the given k_mat with n=2 and calls display function
{
check for all k mat [ i ] [ j ] =1
if true
o_list.Push_front (1);
set all flag [ i ] [ j ] as 1;
else
Octet;
Quad;
Pair ;
Single ;
Display ( );
} // end
18. Algorithm
Octet (k_mat , flag)
// input : no of variable (n) , k_mat
// find the respective quad and push its group value to the O_list
{
for (i=0;i < 4 ;i++)
for (j=0;j < 4; j++)
{
if ( k_mat [ i ][ j ] = 1 && flag [ i ] [ j ] =0)
{
search for a octet
if exist
//push the respective group value
outeq ( i, j);
set all positions in the flag matrix as 1
}
}
} // end of octet
19. Algorithm
Quad (k_mat , flag)
// input : K_mat , flag
// find the respective quad and push its group value to the O_list
{
for (i=0;i < 4 ;i++)
for (j=0;j < 4; j++)
{
if ( k_mat [ i ][ j ] = 1 && flag [ i ] [ j ] =0)
{
search for a Quad
if exist
push the respective group value
set all positions in the flag matrix as 1
}
}
} // end of Quad
20. Algorithm
Pair (k_mat , flag)
// input : K_mat , flag
// find the respective Pair and push its group value to the O_list
{
for (i=0;i < 4;i++)
for (j=0;j < 4; j++)
{
if ( k_mat[ i][ j ] = 1 && flag [ i ] [ j ] =0)
{
find a adjacent one
push the respective group value
set all positions in the flag matrix as 1
}
}
} // end of Pair
21. application
Tool can be a part of sequential circuit designing software.
Aids to practical method of designing sequential circuits with
multi input.
It can be included in systems which involve in process of
simplifying expressions frequently.
The tool can be incorporated in educational fields as in by
the text book designers, staff and students themselves to
verify their answers.
22. conclusion
K-Tool can be used for reducing Boolean expressions.
User specified Boolean expression is converted
to is simpler form through various stages.
User is able to get output for 2,3,4 variable
CONCLUSION
equations
Input is processed in various different forms of
input to achieve simplicity
Its a tool for deductive reasoning in designing
logic circuits and machines
digital
23. FUTURE SCOPE
Tool can be extended to handle more number of
variables.
Tool can be modified to handle DON’T CARE
conditions.
Can be enhanced to obtain possible alternate
solutions.
The gate implementation of the input and output
equations can be shown for comparison.
24. REFERENCES
Books:
Digital Fundamentals -Thomas L. Floyd
Digital Principles and Applications -Albert Paul Malvino and
Donald P. Leach
Digital Logic and Computer Design -M. Morris Mano
Website:
http://en.wikipedia.org/wiki/Karnaugh_map