Circuit Element
회로 소자
- 전자회로로 구현된 이진 논리회로는 디지털 신호(0/1)를 이용하여 연산을 수행한다.
Switch
- 스위치는 두 가지 상태(0/1)를 취할 수 있는 회로소자이다.
AND Gate
- AND 연산을 수행하는 회로소자이다.
\(
L(x_1 , x_2) = x_1 \bullet x_2\\
L(x_1 , x_2) =
\begin{cases}
1, & \mbox{if } x_1 \mbox{ and } x_2 \mbox{ is 1}\\
0, & \mbox{otherwise}
\end{cases}
\)
- 스위치를 직렬연결하여 구현한다.
- 두 스위치 중 하나라도 False일 경우, 전구에 불이 들어오지 않는다.
OR Gate
- OR 연산을 수행하는 회로소자이다.
\(
L(x_1 , x_2) = x_1 + x_2\\
L(x_1 , x_2) =
\begin{cases}
1, & \mbox{if }x_1 \mbox{ or } x_2 \mbox{ is 1}\\
0, & \mbox{otherwise}
\end{cases}
\)
- 스위치를 병렬 연결하여 구현한다.
- 두 스위치 중 하나라도 True이면, 전구에 불이 들어온다.
NOT Gate
- NOT 연산을 수행하는 회로소자이다.
\(
L(x) = \bar{x}\\
L(x) =
\begin{cases}
1, & \mbox{if } x \mbox{ is 0}\\
0, & \mbox{otherwise } (x \mbox{ is 1})
\end{cases}
\)
- 스위치가 닫히면(x=1) 전구에 불이 들어오지 않고(L=0),
스위치가 열리면(x=0) 전구에 불이 들어온다(L=1).
- 즉, 스위치의 이진 값과 전구의 이진 값이 서로 반전(Inversion)된다.
- 위 회로에서 저항이 존재하는 역할은 과전류를 방지하기 위함이다.
Functionally Complete
- 진리표상의 모든 논리적 관계를 구현할 수 있는 논리 연산자, 논리 연결자들을 "Functionally Complete"하다고 표현한다.
- 대표적으로, AND, NOT, NAND, NOR이 Functionally Complete한 논리 연산자들이다.
ex) AND와 NOT으로 OR을 표현할 수 있다. 즉, AND와 NOR은 Functionally Complete하다.
ex) OR과 NOT으로 AND를 표현할 수 있다. 즉, AND는 Functionally Complete하다.
ex) NAND만으로 AND, NOT, OR을 표현할 수 있다. 즉, NAND는 Functionally Complete하다.
XOR Gate (Exclusive-OR)
\(A \; \mathrm{XOR} \; B = A \oplus B = A'B + AB'\)
- XOR 연산*을 수행하는 회로소자이다.
* XOR 연산: 두 논리값이 서로 다를 때, True를 리턴하고, 두 논리값이 같으면 False를 리턴한다.
\(h = (b \cdot d)'\\
\iff (b \cdot (b' + c'))'\\
\iff b' + bc\)
\(k = (d \cdot c)'\\
\iff ((b' + c') \cdot c)'\\
\iff bc + c'\)
\(\therefore f = (h \cdot k)'\\
\iff ((b' + bc) \cdot (c' + bc))'\\
\iff b \cdot (b' + c') + c \cdot (b' + c')\\
\iff bb' + bc' + b'c + cc'\\
\iff bc' + b'c\\
\therefore f = bc' + b'c\)
XNOR Gate
\(A \; \mathrm{XNOR} \; B = A \odot B = (A \oplus B)' = AB + A'B'\)
- XNOR 연산*을 수행하는 회로소자이다.
* XNOR 연산: 두 논리값이 서로 같을 때, True를 리턴하고, 두 논리값이 다르면 False를 리턴한다.
\(Q = (A + B)' + AB = A'B' + AB\)
※ XOR과 XNOR은 역의 관계에 있다.
(A \oplus B)' = A \odot B
(A \odot B)' = A \oplus B
A | B | A \oplus B (A XOR B) | A \odot B (A XNOR B) |
0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
NAND Gate
\(A \; \mathrm{NAND} \; B = (AB)' = A' + B'\)
- NAND은 Functionally Complete한 연산자 중 하나이다.
* 1개의 NAND Gate = 1개의 NOT Gate
\((AA)' = A'A' = A'\)
* 2개의 NAND Gate = 1개의 AND Gate
Y = ((AB)'(AB)')' = (AB)(AB) = AB
* 3개의 NAND Gate = 1개의 OR Gate
Y = ((AA)'(BB)')' = (AA)(BB) = AB
* 4개의 NAND Gate = 1개의 XOR Gate
\(h = (b \cdot d)'\\
\iff (b \cdot (b' + c'))'\\
\iff b' + bc\)
\(k = (d \cdot c)'\\
\iff ((b' + c') \cdot c)'\\
\iff bc + c'\)
\(\therefore f = (h \cdot k)'\\
\iff ((b' + bc) \cdot (c' + bc))'\\
\iff b \cdot (b' + c') + c \cdot (b' + c')\\
\iff bb' + bc' + b'c + cc'\\
\iff bc' + b'c\\
\therefore f = bc' + b'c\)
※ Only NAND Gates Circuit
F = AB' + A'C
- NAND Gate로만 설계된 회로에서의 최종 출력값은 SOP Form으로 도출된다.
* 입력값들이 Invert된 OR Gate는 NAND Gate와 기능이 같다.
NOR Gate
\(A \; \mathrm{NOR} \; B = (A + B)' = A'B'\)
- NOR은 Functionally Complete한 연산자 중 하나이다.
※ Only NOR Gates Circuit
F = (A + B)(A' + C)
- NOR Gate로만 설계된 회로에서의 최종 출력값은 POS Form으로 도출된다.
* 입력값들이 Invert된 AND Gate는 NOR Gate와 기능이 같다.
Transmission Gate (TG; 전달 게이트)
- 신호 전달을 개폐하는 회로소자이다.
- 일반적으로 아날로그 신호의 전달로에 이용하고, 디지털 제어 신호를 통해 신호 전달을 제어한다.
Examples for Only NAND Gate Circuit, Only NOR Gate Circuit
Ex 1. F(A, B, C) = \sum\limits m(2, 3, 4, 6, 7) = \prod M(0, 1, 5)
i. Only NAND Gates
- 최종 논리식은 SOP Form이어야 한다.
F(A, B, C) = \sum\limits m(2, 3, 4, 6, 7)
\iff A'BC' + A'BC + AB'C' + ABC' + ABC
\iff A'B + AC' + AB
\iff B + AC'
- NAND Gates로만 구성한 회로는 아래와 같다.
ii. Only NOR Gates
- 최종 논리식은 POS Form이어야 한다.
F(A, B, C) = \prod M(0, 1, 5)
\iff (A + B + C)(A + B + C')(A' + B + C')
\iff (A + B)(B + C')
- NOR Gates로만 구성한 회로는 아래와 같다.
Ex 2. P = A'(B' + C(D + E') + F'G') + HI'J + K
i. Only NAND Gates
- 모든 소자를 NAND Gate로 구성하기 위해, 곳곳에 Inverter를 추가한다.
- 최종적으로 NAND Gate로만 구성된 회로의 모습이다.
The Number of Outputs
- 어떤 이진 논리 회로에서 입력이 \(n\)개인 function의 outputs의 모든 경우의 수는 \(2^{2^n}\)개 이다.
Ex. Two Inputs Function
Truth table
\(x_1\) | \(x_2\) | \(f\) |
\(0\) | \(0\) | \(0\ or\ 1\) |
\(0\) | \(1\) | \(0\ or\ 1\) |
\(1\) | \(0\) | \(0\ or\ 1\) |
\(1\) | \(1\) | \(0\ or\ 1\) |
input \(x_1, x_2\) 에서 나올 수 있는 입력값 쌍의 개수는 4개 (0,0), (0,1), (1,0), (1,1) 이다.
이에 따른 출력값 \(f\)의 개수는 \(2^4 = 16\)개 이다.
Ex. Three Inputs Function
Truth table
\(x_1\) | \(x_2\) | \(x_3\) | \(f\) |
\(0\) | \(0\) | \(0\) | \(0\ or\ 1\) |
\(0\) | \(0\) | \(1\) | \(0\ or\ 1\) |
\(\vdots\) | \(\vdots\) | \(\vdots\) | \(0\ or\ 1\) |
\(1\) | \(1\) | \(1\) | \(0\ or\ 1\) |
input \(x_1, x_2, x_3\) 에서 나올 수 있는 입력값 쌍의 개수는8개(\(2^3\)개) (0,0,0), (0,0,1), (0,1,0), \(\cdots\) (1,1,1) 이다.
이에 따른 출력값 \(f\)의 개수는 \(2^8 = 256\)개 이다.
Reference: Fundamentals of DIGITAL LOGIC with VHDL Design 3E (Stephen Brown, Zvonko Vranesic 저, Mc Graw Hill, 2009)