MUX
MUX는 Multiplexer의 약자로 다수의 입력 + 다수의 제어입력을 갖습니다.
MUX에 제어 입력을 넣으면 다수의 입력중 하나를 선택하여 출력에 연결할 수 있게됩니다.
이때 입력은 $2^n$개가 가능하며, 꼭 하나의 입력에 대해 하나의 데이터를 물려놓지 않아도 됩니다.
즉, 총 4개의 입력이 가능하다고 할때, 0에는 A라는 데이터 1에는 B라는 2~3에는 C라는 데이터를 물려놓을 수 있습니다.
중요한 것은 이중 0~3중 하나만을 제어입력을 통해 선택하여 출력해야 한다는 것입니다.
입력의 개수를 $IC$라고 하면, $IC = 2^n$개가 가능하므로 제어입력은 $log_2^{IC} = n$개가 있어야합니다.
이때 입력의 개수에 따라 MUX의 이름을 달리 부르게 되는데, 만약 4개의 입력을 가진다면 4-to-1 MUX 이런 식으로 부릅니다.
MUX의 출력 $Z$는 제어 입력의 최소항들과 입력들의 곱의 합으로 이루어집니다.
따라서 4-to-1 MUX의 경우, 입력이 $I_0 ~ I_3$, 제어입력이 $A$와 $B$라고 할때 다음과 같이 나타낼 수 있습니다.
$Z = A'B'I_0 + A'BI_2 + AB'I_2 + ABI_3$
최종적으로 $2^n$-to-1 MUX에 대한 논리식은 다음과 같게됩니다.
$Z = \displaystyle\sum_{k=0}^{2^n-1} m_kI_k$
버퍼
한개의 게이트 출력이 다수의 게이트 입력으로 물려있게 되면, Fan-Out의 제한으로 신호가 망가질 수있습니다.
게이트 한개는 출력을 무한으로 낼 수 없기 때문에 입력이 많아진다면,
어느 순간부터 게이트의 입력으로 들어오는 전류량이 적어질 것입니다.
이를 Fan-Out이 제한됐다고 합니다.
따라서 원래 1을 출력할 수 있었던 게이트도 1을 출력하지 못하게 되어, 신호가 망가질 수 있습니다.
이를 해결하기 위해 버퍼를 이용합니다.
버퍼는 게이트 출력 핀의 Fan-Out을 향상시켜 하나의 게이트 출력이 더 많은 입력에 물릴 수 있게 합니다.
3상태 버퍼(Tri - state)
3상태 버퍼는 0과 1뿐만 아니라 제 3의 상태인 Hi-z(고 임피던스)값을 출력으로 가질 수 있는 게이트입니다.
(이때 임피던스는 회로에서 저항성분을 의미합니다.)
저항이 커지면 전선이 끊어진 것과 같고, 저항이 작아지면 전선이 연결된 것과 같이 작동합니다.
따라서 버퍼의 출력을 원할 때 받을 수 있게됩니다.
3상태 버퍼와 MUX
위 그림은 3상태 버퍼 2개의 출력들이 서로 연결된 회로입니다.
이 회로의 출력 D는 A또는 C의 출력과 같을 것입니다.
이때 B의 입력을 통해 A또는 C의 출력중 하나를 D에게 물림으로써 MUX의 제어입력과 같은 동작을 하게됩니다.
중요한 것은 Hi-z 입력으로 인해 A의 출력이 제어되면, A 버퍼로부터 나오는 출력이 0이 되는게 아니라는 것입니다.
출력이 0이라고 해서 전류가 아예 흐르지 않는 것이 아니기 때문입니다.
실제로 전류가 흐르지 않는 제 3의 상태라는 것을 이해해야합니다.
위 회로는 Hi-z 입력을 공유하지 않고 독립적으로 구성합니다.
이럴 경우 A와 C의 입력이 모두 F로 들어가는 경우가 생기게 되는데, 이때는 충돌이 일어나 F가 어떤 값이 나올지 알 수 없게 됩니다.
만약 A와 C가 모두 Hi-z 입력으로 인해 전류가 흐르지 않는 경우라면 F의 출력은 무엇일까요?
아무 전류도 흐르지 않는 상태는 Z라 표시합니다. 따라서 정답은 Z입니다.
A또는 C가 Z이고 나머지가 1또는 0이라면 Z가 아닌 값이 F로 들어가게 됩니다.
3상태 버스
버스회로란 다수의 데이터가 함께 공유하는 데이터 통로를 말합니다.
이런 버스를 3상태 버퍼를 이용하여 구현하면 3상태 버스라고 부릅니다.
Enable 입력 E를 통해 A~D중 하나의 출력을 4-비트 덧셈기에 입력으로 물릴 수 있습니다.
디코더
디코더는 입력에 대해 모든 최소항을 생성하는 회로입니다.
입력이 n개면 이에 대한 디코더의 출력은 $2^n$개가 됩니다.
입력에 대한 최소항이므로 입력에 대응하는 최소항의 인덱스 비트만 1이고 나머지는 0이 됩니다.
또한 출력에 NOT 게이트를 달아 입력에 대응되는 최소항의 인덱스 비트만 0으로 만들 수도 있습니다.
인코더
인코더는 디코더와 반대로 최소항에 대응되는 인덱스를 출력으로 갖습니다.
이때 $y_i = 0, \ \ 0 \le i < n$ 인 경우는 어떻게 처리해야 할까요?
우선순위 인코더
우선순위 인코더는 동시에 하나 이상의 입력이 1인 경우 가장 큰 인덱스($y_i$ 에서 가장 큰 $i$)를 출력으로 결정합니다.
특이하게 d 출력이 존재하는데, 입력에 1이 1개 이상 존재하면 1을 출력합니다.
이유는 입력이 모두 0인 경우를 구분하기 위해서 입니다.
위 회로의 X는 don't care 입니다.
우선순위 인코더이기 때문에 인덱스가 가장 큰 자리의 입력만 고려하므로,
해당 인덱스보다 작은 인덱스에 무슨 입력이 들어오던 상관없게 됩니다.
'CS > 논리회로' 카테고리의 다른 글
[논리회로] 카운터 (0) | 2022.06.11 |
---|---|
[논리회로] 레지스터 (0) | 2022.06.10 |
[논리회로] 플립플롭 (0) | 2022.06.10 |
[논리회로] 래치와 투과성 문제 (0) | 2022.06.10 |
[논리회로] ROM과 PLA (0) | 2022.06.09 |