Karnaugh Map - Wikipedia
Karnaugh Map - Wikipedia
A Karnaugh map (KM or K-map) is a diagram that can be used to simplify a Boolean
algebra expression. Maurice Karnaugh introduced the technique in 1953[1][2] as a
refinement of Edward W. Veitch's 1952 Veitch chart,[3][4] which itself was a
rediscovery of Allan Marquand's 1881 logical diagram[5][6] or Marquand diagram.[4]
They are also known as Marquand–Veitch diagrams,[4] Karnaugh–Veitch (KV) maps,
and (rarely) Svoboda charts.[7] An early advance in the history of formal logic
methodology, Karnaugh maps remain relevant in the digital age, especially in the
fields of logical circuit design and digital engineering.[4]
Definition
A Karnaugh map reduces the need for extensive calculations by taking advantage of
humans' pattern-recognition capability.[1] It also permits the rapid identification and
elimination of potential race conditions.
The required Boolean results are transferred from a truth table onto a two-
dimensional grid where, in Karnaugh maps, the cells are ordered in Gray code,[8][4] and
each cell position represents one combination of input conditions. Cells are also
known as minterms, while each cell value represents the corresponding output value
of the Boolean function. Optimal groups of 1s or 0s are identified, which represent the
terms of a canonical form of the logic in the original truth table.[9] These terms can be
used to write a minimal Boolean expression representing the required logic.
Karnaugh maps are used to simplify real-world logic requirements so that they can be
implemented using the minimal number of logic gates. A sum-of-products expression
(SOP) can always be implemented using AND gates feeding into an OR gate, and a
product-of-sums expression (POS) leads to OR gates feeding an AND gate. The POS
expression gives a complement of the function (if F is the function so its complement
will be F').[10] Karnaugh maps can also be used to simplify logic expressions in
software design. Boolean conditions, as used for example in conditional statements,
can get very complicated, which makes the code difficult to read and to maintain.
Once minimised, canonical sum-of-products and product-of-sums expressions can be
implemented directly using AND and OR logic operators.[11]
Example
Karnaugh maps are used to facilitate the simplification of Boolean algebra functions.
For example, consider the Boolean function described by the following truth table.
Truth table of a function
A B C D
0 0 0 0 0 0
1 0 0 0 1 0
2 0 0 1 0 0
3 0 0 1 1 0
4 0 1 0 0 0
5 0 1 0 1 0
6 0 1 1 0 1
7 0 1 1 1 0
8 1 0 0 0 1
9 1 0 0 1 1
10 1 0 1 0 1
11 1 0 1 1 1
12 1 1 0 0 1
13 1 1 0 1 1
14 1 1 1 0 1
15 1 1 1 1 0
Following are two different notations describing the same function in unsimplified
Boolean algebra, using the Boolean variables A, B, C, D and their inverses.
Construction
In the example above, the four input variables can be combined in 16 different ways,
so the truth table has 16 rows, and the Karnaugh map has 16 positions. The Karnaugh
map is therefore arranged in a 4 × 4 grid.
The row and column indices (shown across the top and down the left side of the
Karnaugh map) are ordered in Gray code rather than binary numerical order. Gray
code ensures that only one variable changes between each pair of adjacent cells.
Each cell of the completed Karnaugh map contains a binary digit representing the
function's output for that combination of inputs.
Grouping
After the Karnaugh map has been constructed, it is used to find one of the simplest
possible forms — a canonical form — for the information in the truth table. Adjacent
1s in the Karnaugh map represent opportunities to simplify the expression. The
minterms ('minimal terms') for the final expression are found by encircling groups of
1s in the map. Minterm groups must be rectangular and must have an area that is a
power of two (i.e., 1, 2, 4, 8...). Minterm rectangles should be as large as possible
without containing any 0s. Groups may overlap in order to make each one larger. The
optimal groupings in the example below are marked by the green, red and blue lines,
and the red and green groups overlap. The red group is a 2 × 2 square, the green
group is a 4 × 1 rectangle, and the overlap area is indicated in brown.
The cells are often denoted by a shorthand which describes the logical value of the
inputs that the cell covers. For example, AD would mean a cell which covers the 2x2
area where A and D are true, i.e. the cells numbered 13, 9, 15, 11 in the diagram
above. On the other hand, AD would mean the cells where A is true and D is false
(that is, D is true).
The grid is toroidally connected, which means that rectangular groups can wrap
across the edges (see picture). Cells on the extreme right are actually 'adjacent' to
those on the far left, in the sense that the corresponding input values only differ by
one bit; similarly, so are those at the very top and those at the bottom. Therefore, AD
can be a valid term—it includes cells 12 and 8 at the top, and wraps to the bottom to
include cells 10 and 14—as is BD, which includes the four corners.
Solution
For the green grouping, A and B maintain the same state, while C and D change. B is 0
and has to be negated before it can be included The second term is therefore AB
Note that it is acceptable that the green grouping overlaps with the red one.
In the same way, the blue grouping gives the term BCD.
The solutions of each grouping are combined: the normal form of the circuit is
.
It would also have been possible to derive this simplification by carefully applying the
axioms of Boolean algebra, but the time it takes to do that grows exponentially with
the number of terms.
Inverse
The inverse of a function is solved in the same way by grouping the 0s instead.[nb 1]
The three terms to cover the inverse are all shown with grey boxes with different
colored borders:
brown: A B
gold: A C
blue: BCD
This yields the inverse:
Through the use of De Morgan's laws, the product of sums can be determined:
Don't cares
The value of for
ABCD = 1111 is replaced by a "don't
care". This removes the green term
completely and allows the red term to
be larger. It also allows blue inverse
term to shift and become larger
Karnaugh maps also allow easier minimizations of functions whose truth tables
include "don't care" conditions. A "don't care" condition is a combination of inputs for
which the designer doesn't care what the output is. Therefore, "don't care" conditions
can either be included in or excluded from any rectangular group, whichever makes it
larger. They are usually indicated on the map with a dash or X.
The example on the right is the same as the example above but with the value of
f(1,1,1,1) replaced by a "don't care". This allows the red term to expand all the way
down and, thus, removes the green term completely.
Note that the first term is just A, not AC. In this case, the don't care has dropped a
term (the green rectangle); simplified another (the red one); and removed the race
hazard (removing the yellow term as shown in the following section on race hazards).
Race hazards
Elimination
Karnaugh maps are useful for detecting and eliminating race conditions. Race
hazards are very easy to spot using a Karnaugh map, because a race condition may
exist when moving between any pair of adjacent, but disjoint, regions circumscribed
on the map. However, because of the nature of Gray coding, adjacent has a special
definition explained above – we're in fact moving on a torus, rather than a rectangle,
wrapping around the top, bottom, and the sides.
Whether glitches will actually occur depends on the physical nature of the
implementation, and whether we need to worry about it depends on the application. In
clocked logic, it is enough that the logic settles on the desired value in time to meet
the timing deadline. In our example, we are not considering clocked logic.
In our case, an additional term of would eliminate the potential race hazard,
bridging between the green and blue output states or blue and red output states: this
is shown as the yellow region (which wraps around from the bottom to the top of the
right half) in the adjacent diagram.
The term is redundant in terms of the static logic of the system, but such redundant,
or consensus terms, are often needed to assure race-free dynamic performance.
A block can be continued across the bottom, top, left, or right of the chart. That can
even wrap beyond the edge of the chart for variable minimization. This is because
each logic variable corresponds to each vertical column and horizontal row. A
visualization of the k-map can be considered cylindrical. The fields at edges on the
left and right are adjacent, and the top and bottom are adjacent. K-Maps for four
variables must be depicted as a donut or torus shape. The four corners of the square
drawn by the k-map are adjacent. Still more complex maps are needed for 5 variables
and more.
Σm(0); K = 0
Σm(1); K = A′B′
Σm(2); K = AB′
Σm(3); K = A′B
Σm(4); K = AB
Σm(1,2); K = B′
Σm(1,3); K = A′
Σm(1,4); K = A′B′ + AB
Σm(2,3); K = AB′ + A′B
Σm(2,4); K = A
Σm(3,4); K = B
Σm(1,2,3); K = A' + B′
Σm(1,2,4); K = A + B′
Σm(1,3,4); K = A′ + B
Σm(2,3,4); K = A + B
Σm(1,2,3,4); K = 1
Related graphical
methods
Related graphical minimization methods include:
Marquand diagram (1881) by Allan
Marquand (1853–1924)[5][6][4]
Veitch chart (1952) by Edward W.
Veitch (1924–2013)[3][4]
Svoboda chart (1956) by Antonín
Svoboda (1907–1980)[7]
Mahoney map (M-map, designation
numbers, 1963) by Matthew V.
Mahoney (a reflection-symmetrical
extension of Karnaugh maps for
larger numbers of inputs)
Reduced Karnaugh map (RKM)
techniques (from 1969) like
infrequent variables, map-entered
variables (MEV), variable-entered
map (VEM) or variable-entered
Karnaugh map (VEKM) by G. W.
Schultz, Thomas E. Osborne,
Christopher R. Clare, J. Robert
Burgoon, Larry L. Dornhoff, William
I. Fletcher, Ali M. Rushdi and others
(several successive Karnaugh map
extensions based on variable
inputs for a larger numbers of
inputs)
Minterm-ring map (MRM, 1990) by
Thomas R. McCalla (a three-
dimensional extension of Karnaugh
maps for larger numbers of inputs)
See also
Algebraic normal form (ANF)
Binary decision diagram (BDD), a
data structure that is a compressed
representation of a Boolean
function
Espresso heuristic logic minimizer
List of Boolean algebra topics
Logic optimization
Punnett square (1905), a similar
diagram in biology
Quine–McCluskey algorithm
Reed–Muller expansion
Venn diagram (1880)
Zhegalkin polynomial
Notes
References
Further reading
External links
Retrieved from
"https://en.wikipedia.org/w/index.php?
title=Karnaugh_map&oldid=1280992891"
at 17:11 (UTC). •
Content is available under CC BY-SA 4.0