11. Boolean Algebra
11.1. Boolean Functions
Boolean algebra는 Set 을 다루기 위한 Opertion과 Rule을 제공한다.
주로 사용하는 Boolean algebra의 세 Operation은 Complementation, Sum, Product이다.
Element의 Complement(보수)는 Bar로 표시되며 이다.
Boolean sum의 경우 으로 Notation으로 로 표현한다.
Boolean product의 경우 이며 Notation으로 로 표현한다.
Proposition과 연계하여 이며 와 같이 사용 가능하다.
Boolean Expressions and Boolean Functions
이라고 할 때 으로 0, 1의 모든 가능한 -tuple의 Set이 된다.
Variable이 0, 1만 Value로 가지게 될 경우 Boolean variable이라고 한다.
Set 에서 로의 Function을 Boolean function of degree 이라고 한다.
Boolean funtion은 Variable과 Boolean operation으로 구성된 Expression으로 나타낼 수 있다.
개의 Variable 의 Boolean funtion은 일 때만 Equal이라고 표현한다.
두 Boolean expression이 동일한 Funtion일 경우 Equivalent라고 한다.
Boolean funtion 의 Complement는 Function 로 이다.
를 Boolean funtion of degree 이라고 할 때 Boolean sum 이고 Boolean product 이다.
Example
Boolean function of degree 의 개수
- Solution
Set의 Product rule에 따라 개의 서로 다른 -tuple이 존재하는 데 Boolean function은 이러한 개의 서로 다른 -tuple 각각에 0, 1을 부여하므로 임을 알 수 있다.
Identifties of Boolean Algebra
| Identity | Name |
|---|---|
| Law of the double complement | |
| Idempotent laws | |
| Identity laws | |
| Domination laws | |
| Commutative laws | |
| Associative laws | |
| Distributive laws | |
| De Morgan's laws | |
| Absorption laws | |
| Unit property | |
| Zero property |
Duality
Boolean expression의 Dual은 Boolean sum, Boolean product를 서로 바꾸고 0, 1을 바꿔 얻을 수 있다.
Boolean expression으로 나타난 Boolean funtion 의 Dual은 이 Expression의 Dual로 나타낸 Funtion이 된다.
의 Dual을 Notation 로 표현하고 를 나타내는 특정 Boolean expression에 의존하지 않는다.
Boolean expression으로 나타낸 Function 간 Identity는 Identity 양 변에 Dual을 취할 때에도 유효하다.
이 결과를 Duality principle이라고 하며 새로운 Identity를 얻는 데 유용하다.
Example
Absorption laws에 Dual을 취하여 Identity를 구성
- Solution
Absorption laws는 을 Dual을 취하면 라는 Identity가 생성된다.
The Abstract Definition of a Boolean Algebra
Boolean algebra는 두 개의 Binary Operation 과 Element 0, 1, Unary operation 을 가지는 Set 로 다음의 Property들이 모든 에 대해 성립해야 한다.
- Identity laws
- Complement laws
- Associative laws
- Commutative laws
- Distributive laws
11.2. Representing Boolean Functions
Sum-of-Products Expansions
Literal은 Boolean variable이나 그의 Complement이다.
Boolean variable 의 Minterm은 의 Boolean product로 일 때 이고 일 때 이다.
서로 다른 Minterm의 Boolean sum을 취함으로써 특정 Value set을 갖는 Boolean expression을 구축 가능하다.
Minterm의 Boolean sum은 Boolean sum에 있는 Minterm 중 정확히 하나가 Value가 1일 때만 1을 갖고 다른 모든 Variable value combination에 대해서는 0을 갖는다.
따라서 주어진 Boolean funtion에 대해 이 Boolean funtion의 Value가 1일 때 1, 0일 때 0을 가지는 Minterm의 Boolean sum을 형성할 수 있다.
이 Boolean sum의 Minterm의 Sum은 Sum of products expansion이나 Disjunctive normal form이라고 한다.
Example
의 Sum of products expansion
- Solution
의 Sum of products expansion을 찾는 두 가지 방법이 있다.
첫 째로 Boolean identity를 사용하여 Product를 전개하고 단순화 한다.
두 번째로 x,y,z에 가능한 Value에 대해 의 Value를 결정하여 Sum of products expansion을 구할 수 있다.
위 표를 참고하여 임을 알 수 있다.
Functional Completeness
모든 Boolean funtion은 Minterm의 Boolean sum으로 표현 가능하다.
각 Minterm은 Boolean variable이나 그 Complement의 Boolean product이므로 모든 Boolean operator를 사용하여 표현할 수 있음을 보여준다.
모든 Boolean funtion이 이러한 Operator를 사용하여 표현될 수 있기에 Set 가 Functionally complete라고 한다.
Set의 세 Operator 중 하나가 나머지 두 개의 Operator로 표현될 수 있다면 더 작은 Functionally complete set을 찾을 수 있다.
이를 위해 De Morgan's law를 사용하여 모든 Boolean sum을 제거할 수 있는 Identity()를 양 변에 Double complementation law를 적용하여 가 Functionally complete임을 알 수 있다.
역시 Functionally complete이나 은 를 없이 표현할 수 없기에 Functionally complete가 아니다.
다른 더 작은 Functionally complete set은 ()도 존재한다.
11.3. Logic Gates
Boolean algebra는 Electronic device의 Circuit를 Modeling하는 데 사용된다.
각 Input, Output은 의 Member이다.
Circuit의 Basic element를 Gate라고 부른다.
여러 Input을 받아들여 어떠한 작업을 하는 Memory capability 기능이 없는 Circuit의 모음을 Combinational circuit, Gating network라고 한다.
위 는 각각 Inverter(NOT), OR, AND이다.
OR, AND는 또 여러 Input을 받아 결과를 나타낼 수 있다.
Input의 AND gate는 Boolean product의 Output을, OR gate는 Boolean sum의 Output을 가진다.
Combinations of Gates
Combinational circuit은 Inverter, OR, AND gate의 Combination으로 나타낼 수 있으며 일부 Gate는 Input을 공유할 수 있다.
Circuit의 Depiction을 나타내기 위해 특정 Input을 사용하는 모든 Gate를 나타내는 Branching을 사용하거나 각 Gate에 대한 Input을 별도로 표시해 줄 수 있다.
Example
이 Output인 Circuit
- Solution\
Examples of Circuits
Example
세 명으로 구성된 위원회가 조직의 문제의 찬반을 결정할 때 제안이 통과되기 위해 두 표의 찬성이 필요할 때 제안 통과 여부를 결정하는 Circuit
- Solution
한 명을 각각 로 놓고 1일 때 찬성, 0일 때 반대로 구성할 경우 두 개 이상이 1일 때 1을 출력하는 Circuit을 만들어야 하며 이는 위 와 같다.
Adder
Bit를 더하는 를 찾을 수 있는 Circuit을 구출할 때 Input은 이며 값은 0, 1 중 하나이다.
Output의 경우 Sum bit 와 Carry bit 로 구성된 두 Bit로 Output을 표현할 수 있다.
이 때 이 Circuit은 Multiple output circuit이라고 부르며 하나 이상의 Output을 가지고 있음을 의미한다.
간단히 두 Bit에 대한 Sum bit는 로 표현할 수 있고 Carry bit는 이다.
Carry에 관한 값을 고려하지 않는 Circuit을 Half adder라 표현하고, 두 Bit와 Carry를 추가할 때 Sum bit와 Carry bit를 고려할 경우 Full adder라고 한다.
Full adder의 Input은 이며 Output의 경우 이 되게 된다.
Full adder를 처음부터 설계하는 대신 Half adder를 사용하여 원하는 Output을 생성한 후 Full adder에서 사용할 수 있으며 아래의 그림은 두 개의 3-bit integer의 Sum, 를 나타내기 위한 Circuit이다.
의 경우 Carry bit인 로 결정된다.
11.4. Minimization of Circuits
Combinational circuit의 Efficiency(효율성)은 Gate 수와 배치에 따라 달라진다.
Expansion of sum-of-products를 사용하여 이 Circuit을 구현할 Logic gate set을 찾을 수 있다.
Expansion of sum-of-products는 필요 이상으로 많은 Term을 포함할 수 있기에 서로 다른 하나의 Variable이 다르고(한 Term에는 Variable이, 다른 Term에는 그 Variable의 Complement)일 때 Term 자체가 결합될 수 있다.
위 Circuit은 일 때 1이 된다.
이므로 위 Circuit을 아래 Circuit으로 Minimization 가능하다.
Minimization of the boolean function이란 Boolean function의 Represent 중 Boolean product 중 가장 적은 Literal을 가진 Boolean sum을 찾는 것이다.
Boolean function의 Minimization을 찾는다면 최소한의 Gate와 최소한의 Input으로 Circuit을 구성할 수 있다.
많은 Variable을 가진 Boolean function을 Minimization하는 것은 NP-complete probolem이다.
아래에서 다룰 Karnaugh maps와 Quine-McCluskey method는 Variable 수가 커질수록(Quine-McCluskey method의 경우 Literal 수가 10을 초과자히 않을 때만 사용 가능) 사용할 수 없거나 복잡해진다.
Karnaugh Maps
Boolean expression에서 Circuit을 나타내는 Term의 수를 줄이기 위해 Combine 할 Term을 찾아야 한다.
비교적 적은 수의 Variable을 포함하는 Boolean function의 Term을 결합하는 Graphical method로 Karnaugh map(K-map)이 존재한다.
이 방법의 경우 일반적으로 Function이 여섯 개 이하의 Variable을 포함할 때만 적용한다.
K-map의 경우 Sum-of-products를 단순화하는 Visual method를 제공하나 Process 자체를 Mechanizing하는 데에 적합하지 않다.
두 Variable 에 대한 Boolean function의 Sum-of-product에 네 가지 가능한 Minterm이 존재한다().
이 두 Variable의 Boolean function에 대한 K-map은 네 개의 Cell로 구성되며 이 MinTerpm이 Expansion에서 존재할 경우 해당 Cell에 1을 배치한다.
Cell은 대표하는 Minterm이 정확히 하나의 Literal에서 차이가 날 경우 Adjacent하다고 한다.
Example
의 K-map
- Solution\
K-map에서 Combine 가능한 Minterm을 식별 가능하다.
K-map에서 Adjacent한 두 Cell에 1이 존재할 때 이 Cell들이 나타내는 Minterm은 하나의 Variable만을 포함하는 Product로 결합할 수 있다().
모든 Cell에 1이 존재할 때 모든 Minterm의 경우 1로 Combine될 수 있다.
Combine할 때 가능한 한 가장 큰 Block부터 사용하여야 한다.
Example
의 Sum-of-product의 Minimal expansion
- Solusion
위와 같기에 가 된다.
세 Variable에 대한 K-map은 여덟 개의 Cell로 나누어 진 직사각형이다.
이 Cell들은 세 Variable에서 가능한 여덟 개의 Minterm을 나타내며 두 Cell은 나타내는 Minterm이 정확히 하나의 Literal에서 다를 경우 Adjacent라고 한다.
위 같이 표현하며 사실은 이기에 와 같이 Cylinder에 놓인 것 처럼 이해하는 것이 좋다.
Block들이 나타내는 Sum-of-product는 아래 그림과 같다.
K-map에서 모든 1의 Block에 해당하는 Literal의 Product를 Function의 Implicant라고 한다.
이 Block이 더 적은 Literal의 Product을 나타내는 더 큰 Block에 포함되지 않는 경우 이를 Prime implicant라고 한다.
Map에서 가장 큰 Block을 식별한 후 가장 큰 Block을 먼저 사용하여 최소한의 Block으로 모든 1을 덮는 것이 목표이다.
K-map에서 1을 포함하는 유일한 Block인 경우 반드시 선택하여야 하며 이 Block을 Essential prime implicant라고 한다.
모든 1을 Prime implicant에 해당하는 Block으로 덮음으로 Sum-of-product를 Prime implicant의 Sum으로 표현 가능하다.
Example
일 때 위 Sum-of-product expansion의 K-map을 활용하여 Minimize
- Solution
위 K-map에 따라 가 된다.
4개의 Variable을 가진 K-map은 16개의 Cell로 나누어진 정사각형이다.
16개의 Minterm을 나타내며 4개의 Variable을 가진 K-map을 형성하는 방법 중 하나는 아래의 그림과 같다.
이므로 각 Cell은 네 개의 Cell과 Adjacent이다(Common boundary를 갖는 Torus(원환면)).
Sum-of-product Expansion의 Minimization은 2, 4, 8, 16 Cell의 Block들을 식별하여 수행된다.
앞 2, 3개의 Variable과 마찬가지로 가장 큰 Block을 식별한 후 최소 Block을 사용하여 모든 1을 덮는 것이 목적이다.
Example
위 Sum-of-product expansion의 K-map을 활용하여 Minimization
- Solution
위 K-map에 따라
가 된다.
요약하여Gray code와 유사한 형태의 Adjacent relation을 확인하여 Minimization한다.
Don't Care Conditions
일부 Circuit에서 특정 Input value의 Combination에 대한 Output만을 고려한다.
이 때 원하는 Output을 가진 간단한 Circuit을 만들 수 있으며 다른 Input value에 대한 내용은 Don't care condition(무시할 수 있는 조건)이 된다.
K-map에서 이러한 Variable value의 Combination에 대해 Function의 Value를 임의로 할당할 수 있음을 나타내기 위해 로 표현한다.
Minimization step에서 K-map에서 가장 큰 Block을 형성하는 Input value의 Combination에 대해 1을 Value로 할당 가능하다.
Example
Decimal expansion을 Bit로 Incoding하는 것은 각 Decimal expansion의 Binary expansion을 4 Bit로 사용하는 것이다.
예시로 873을 로 Incoding할 수 있다.
위 과정을 Binary coded decimal expansion이라고 한다.
4Bit block은 총 16개를 표현할 수 있으나 Decimal expansion의 각 자릿수는 총 10개이므로 Incoding에 사용되지 않는 4Bit의 Combination이 6개 존재하게 된다.
만약 Decimal expansion이 5 이상일 경우 1, 아닐 경우 0을 출력하는 Circuit을 만들고자 할 때 Inverter, OR, AND Gate를 최소한 사용하여 구축할 수 있는가?
- Solution
위 Decimal expansion이 5 이상일 경우 1을 반환하는 Circuit을 Function 로 나타낼 수 있다(총 4Bit이므로 Variable은 네 개).
의 K-map은 Don't care condition이 존재하며 이를 로 놓을 수 있다.
위 그림에서 가장 Minimization하기 쉬운 Condition대로 를 1이나 0으로 놓을 수 있기에 를 모두 1로 놓은 상태일 때 Simplest sum-of-product expansion이 가능해지므로 가 답이 된다.
The Quine-McCluskey Method
K-map을 사용하여 Boolean function의 Minimization expansion을 Boolean product의 Boolean sum으로 생성 가능하나 Variable의 수가 증가함에 따라 K-map을 사용하기 불편해진다.
위와 같은 이유로 Mechanizing으로 수행할 수 있는 Sum-of-product expansion을 Minimization하는 Procedure가 필요하다.
이 Method를 Quine-McCluskey method라고 한다.
- 각 Minterm을 개의 Variable(Bit string)로 표현하고 가 발생하면 번째 위치에 1을, 의 경우 번째 위치에 0을 둔다.
- Bit string을 1의 개수에 따라 Grouping한다.
- 이전 Step에서 찾은 Minterm의 Boolean sum을 통해 개의 Variable로 형성할 수 있는 모든 Product를 결정한다.
Combine 가능한 Minterm은 정확히 한 위치에서 다른 Bit string으로 표현된다.
이러한 Product를 개의 Variable로 표현할 때 가 발생하면 번째에 1을, 그렇지 않을 경우 0을 두며 해당 Literal이 없는 경우 Dash를 둔다. - 이전 단계에서 찾은 개의 Variable로 된 Product를 Boolean sum을 통해 개의 Variable로 형성할 수 있는 모든 Product를 결정한다.
Combine 가능한 개의 Variable로 된 Product는 동일한 위치에 Dash가 있고 정확히 한 위치에서 다른 Bit string으로 표현된다. - 가능할 때 까지 반복하여 Boolean product를 더 적은 Variable로 Combine한다.
- 한 개의 Literal이 줄어든 Boolean product를 형성하는 데 사용되지 않은 모든 Boolean product를 찾는다.
- 위 Boolean product의 가장 작은 Set을 찾아 이 Sum-of-product가 Boolean function을 나타내도록 한다.
어떤 Minterm이 Product로 Cover되는 지 보여주는 Table을 작성하여 모든 Minterm은 하나의 Product로 Cover되어야 한다.
이 Table을 사용하는 Step- 모든 Essential prime implicant를 찾는다.
- 각 Essential prime implicant는 하나의 Minterm을 Cover하는 유일한 Implicant이기에 반드시 포함되어야 한다.
- Essential prime implicant를 찾은 후 Covered minterm의 Column을 제거하여 Table을 Simplify한다.
- 다른 Essential prime implicant로 Cover된 Minterm의 Subset을 Cover하는 Essential prime implicant를 제거할 수 있다.
- Essential prime implicant를 식별하여 중복 Essential prime implicant를 제거하며 무시할 수 있는 Minterm을 식별하는 과정을 Table이 변하지 않을 때 까지 반복한다.
(Backtracking을 통해)
Example
Quine-McCluskey method를 사용하여 와 Equivalent 한 Minimal expansion 찾기
- Solution
Variable은 총 세 개이다().
Bit string의각 위치가 ()일 경우 1, () 일 경우 0이 된다.
즉 위 Expression은 이 된다.
Combine 가능한 Minterm은 정확히 하나의 Literal에서만 차이가 나는 것이다.
두 개의 Minterm이 Product가 발생하지 않는 Variable을 나타내기 위해 Dash로 표현하게 된다.
예시로 와 는 Bit string으로 이며 로 표현할 수 있고 Bit string으로 fh 표시한다는 뜻이다.
즉 처음을 Bit string으로 나눠서 각 Step을 진행한다면 를 Step 1에서 를 , 을 , 를 , 를 로, 를 로 줄일 수 있다.
Step 2에서 를 로 나타낼 수 있다.
더 적은 Literal로 Product를 형성하는 데 사용된 Term을 표시한다.
표시가 되어있는 경우 각 Original minterm을 Cover한 것이다.
각 Original minterm을 Cover하는 Product term을 최소한 하나 포함하여야 한다.
Table에 가 하나만 있는 경우 이 가 있는 Colum에 해당하는 Product term을 반드시 사용하여야 한다.
즉 아래의 표들을 참고하여 결과는 임을 알 수 있다.
| Term | Bit string | Step 1 term | Step 1 string | Step 2 erm | Step 2 string |
|---|---|---|---|---|---|
| 111 | (1,2) | 1-1 | (1,2,3,4) | --1 | |
| 101 | (1,3) | -11 | |||
| 011 | (2,4) | -01 | |||
| 001 | (3,5) | 0-1 | |||
| 000 | (4,5) | 00- |
| X | X | X | X | ||
| X | X |
Example
Quine-McCluskey method를 사용하여 의 Sum-of product expansion의 Simplify
- Solution
아래 Table을 참고하여 나 가 된다.
| Term | Bit string | Step 1 term | Step 1 string | Step 2 term | Step 2 string |
|---|---|---|---|---|---|
| 1110 | (1,4) | 1-10 | (3,5,6,7) | 0--1 | |
| 1011 | (2,4) | 101- | |||
| 0111 | (2,6) | -011 | |||
| 1010 | (3,5) | 01-1 | |||
| 0101 | (3,6) | 0-11 | |||
| 0011 | (5,7) | 0-01 | |||
| 0001 | (6,7) | 00-1 |
| X | X | X | X | ||||
| X | X | ||||||
| X | X | ||||||
| X | X |