본문 바로가기
CS/디지털논리회로

MSI를 이용한 조합논리회로, 디코더, 멀티플렉서, 디멀티플렉서

by Renechoi 2023. 6. 14.

 

1. 디코더 

 

- 디코더: 부호화된 입력을 받아서 부호화되지 않은 출력을 내보내는 복호화기 

- n 비트의 2진 코드를 최대 2^n개의 서로 다른 정보로 바꿔준다. 

 

 

 

예시 ) 2 x 4 디코더 

 

 

 

2개의 입력에 대해 4개 출력을 발생시킨다. 

 

 

A B의 조합에 따라서 출력이 다르게 나타난다. 

여기서 출력은 하나의 조합만 1을 가짐. 

 

첫번째 자리가 1이면 10진수에서 0, 두번째 자리가 1이면 10진수에서 1이 출력된다고 본다. 

 

Y0 = ~A~B

Y1 = ~AB

Y2 = A~B

Y3 = AB 

 

이 출력의 의미는 무엇인가? 

=> 최소항들의 표현 

 

즉 디코더라는 장치는 최소항으로 출력을 내보낸다. 

 

 

 

3X8 디코더 

 

입력 3개 출력 8개 

 

 

 

 

하나의 최소항으로 나타낸다. 

 

 

 

디코더의 확장 

-> 작은 디코더를 여러 개 결합하여 필요한 크기의 큰 디코더를 구성할 수 있다.

-> 즉, 2개의 2X4를 이용해서 3X8 디코더를 구성 

 

 

구동 입력(E)를 가진 입력을 이용하면 확장할 수 있다. 

 

입력이 3비트 (ABC)2로 구성되었다고 할 때

- 입력의 두 비트 B 와 C 는 두 디코더에 모두 연결

- 최상위 비트 A의 입력에 따라 두 디코더 중 하나만 동작

 

☞ A=0 일 때
: 위쪽 디코더는 B,C 에 따라 D
0~D3

하나의 최소항 선택

 

☞ A=1 일 때

: 아래쪽 디코더는 B,C 에 따라 D4~D7 중 하나의 최소항 선택

 

 

디코더를 이용한 부울함수의 구현 

 

- 디코더는 n 개의 입력변수에 대한 2n 개의 최소항을 만든다.

- 따라서 부울함수는 최소항의 합으로 표현되므로, 디코더를 이용하면 부울함수를 구현할 수 있다.

- 결국 n 개의 입력과 m 개의 출력을 가진 조합논리회로는 n×2^n 디코더와 m개의 OR 게이트로 만들수있다.

(출력이 1개면 1개의 OR 게이트, 2개면 2개) 

 

 

 

의의는 이미 사용되고 있는 디코더를 이용해서 단순한 형태로 부울함수를 구현한다는 것이다. 

 

 

 

 

예시1) F(X,Y,Z) = ∑m(1,3,4,7)을 디코더로 구현 

 

1) 주어진 부울함수는 3 개의 입력과 8개의 최소항을 나타내기 때문에 3×8 디코더가 필요

2) 주어진 부울함수에서 최소항은 4개( 1, 3, 4, 7 )이므로 이들을 OR 게이트로 연결 

 

1, 3, 4, 7에 연결 

 

 

 

예시2) BCD3초과 코드변환기를 디코더를 이용하여 구현

 

1) 디코더와 OR 게이트로 구현할 때는 부울함수를 최소항의 합 형태로 표현

2) 최소항의 합 형태는 진리표나 도표를 이용하여 구함

 

디코더와 OR게이트를 이용한 논리도 작성

- 디코더 선택

: 입력변수에 대한 최소항을 모두 발생시킬 수 있는 4×16 디코더가 필요

 

 

 

=> AND와 OR 게이트로 구현될 수도 있지만 이렇게 MSI 소자인 디코더로 구현할 수 있다는 것이 의의. 

 

 

 

 

 

 

 

2. 멀티플렉서 

 

 

Cpu 안에 존재하는 여러 개의 레지스터 안에서 특정 데이터를 꺼내서 처리해야 할 때 여러 개의 대상 중에서 하나만을 꺼내야 될 때 사용되는 소자가 멀티플렉스 

 

- 여러 개의 입력들 중에서 출력으로 하나만을 내보내는 조합논리회로 

- 다른 말로 데이터 선택기 

- 특정 입력선을 선택하기 위해서는 선택변수를 사용해야 한다. 

- 즉 2^n 개의 입력선 중에서 특정 입력선을 선택하기 위해서는 n 개의 선택변수가 있어야 함

- 이 n 개의 선택변수 조합에 의해 특정 입력선이 선택

- 데이터 선택기라고도 하면 약어로 MUX

 

 

A, B가 들어왔을 때 A를 내보낼 거냐 B를 내보낼 거냐 

 

 

예시) 4X1 멀티플렉서 

 

 

D0 ~ D3 중에 하나가 들어가서 나올 수 있는데, 그 선택은 S라는 선택 변수에 의해서 이루어진다. 

 

2의 2승 개가 들어오니깐 선택 변수는 2개가 필요 

 

S1과 S0의 조합에 의해서 출력이 달라지게 됨 

 

만약 선택변수 S1과 S0의 조합이 10이면 D2 는 모두 1이되어 출력이 1이 되는 반면, 나머지 세 AND 출력은 0이 됨.

 

따라서 OR 게이트로 입력되는 네 입력 중 D2가 입력된 AND 게이트의 1이므로 결국 OR 게이트의 출력은 D2가 됨. 

 

 

 

 

오직 하나만을 선택해서 내보낸다. 

 

 

 

멀티플레서의 또다른 기능 중 하나는 디코더의 기능 

 

선택 변수에 NOT 게이트와 AND 게이트 =>> 디코더의 역할 

 

디코더는 최소항을 출력하므로 

 

결국 NOT게이트와 AND가 디코더에서 수행을 한다면, 최소항을 이용할 수 있다. 멀티플렉서를 이용해서도 부울 함수를 구할 수 있다는 것. 

 

 

 

 

 

 

 

 

디코더를 확장한 것처럼 멀티플렉서도 확장이 가능함. 

 

네 개의 2x1 MUX 

=> 

A, B가 들어올 때 4비트라고 한다면 

 

A가 10이 들어오가 B가 5가 들어오면 

 

1010, 0101 

 

S, E가 선택변수로 활용하면 

 

S가 00이면 A를 선택한 결과 

 

즉 아래와 같다. 

 

S=0 인 경우에 

A0, A1, A2, A3을 선택 

 

 

 

 

멀티플렉서를 이용한 부울함수 구현 

- 멀티플렉서는 OR 게이트를 가진 디코더와 같은 기능 수행 

- 따라서 멀티플렉서의 선택선으로 입력변수의 최소항을 선택할 수 있으며,

- 또한 입력선을 이용하여 이 최소항을 입력할 수 있다.

- 결국 n 개의 선택입력과 2n 개의 데이터 입력을 가진 멀티플렉서를 이용하면 n+1 개의 변수를 가진 부울함수 구현 가능

 

 

디코더보다는 조금 복잡 

 

중요한 개념은 MSI 소자인 디코더나 멀티플렉서를 이용해서 부울함수를 구현할 수 있다.

=> 보다 효율적인 논리회로 구현을 보여준다. 

 

 

 

 

구현 과정 

 

1)

먼저 최소항의 변수를 MUX의 입력선과 선택선에 연결한다.
예를 들어 변수가 A, B, C,... 순서라면, A 를 입력선에,
다음 순서인 B, C,... 를 선택선의 높은 순서부터 차례로 연결한다.

 

위와 같이 입력과 선택을 할당함. 

 

2) 

다음으로 입력선에 연결되는 최소항(변수 A에 대해)을 결정한다.

이것은 I0, I1, I2, I3, ... 를 결정하는 것으로서 구현표에 의해 결정된다.

 

3) 

따라서 완성된 구현표에 의해 MUX에 입력단을 연결하면 부울함수가 구현

 

예시로 살펴보자. 

F(A, B, C) = m(1,2,6,7)의 구현 

1)

먼저 최소항의 변수가 A,B,C 라면, A,B,C 를 MUX에 할당

2)

구현표 작성(I0, I1, I2, I3을 결정)

어떤 입력 변수든지 정상형과 보수형을 갖는다. 

 

 

 

멀티플렉서 입력으로 어떤 값을 결정할 거냐 하는 문제는 ? 

진리표를 이용해 구현표를 작성 

 

 

 

A는 정상형과 보수형으로 표현해 놓고 보면 

 

진리표에서 보면 A의 경우 최소항에 순서에 따라 정상형과 보수형 -> 0, 1이 할당 된다.

 

 

 

 

 

 

최소항 번호는 변수 A가 가장 왼쪽에 있기 때문에 보수형과 정상형이 반반씩 존재한다.

 

 

4)

마지막으로 MUX의 입력 결정을 위해 동그라미를 친다. 

 

이때 규칙에 의거해서 한다. 

 

 

 

1,2, 6,7에 동그라미를 표현하고 결정 규칙에 의거해서 

 

 

 

 

입력 규칙 

 

 

6) 최종적으로 부울함수를 구현하면 

 

입력이 이렇게 되었다는 것을 확인 

 

 

 

B와 C의 값에 따라서 1100, 1010을 내보낸다 하는 것. 

 

그런데 눈에 바로 들어오지 않는다. 이게 어떻게 출력 부울함수를 구현한 것인가? 

 

이를 검증해보기. 진리표를 그대로 나타내주면 부울함수를 구현한 것이라 할 수 있다. 

 

 

 

 

 

 

만약에 4개의 변수에 대해서 선택을 맨 하위 즉 D로 한다면 어떨까? 

 

 

A와 ~A의 경우 1 ~8이 0이고 9 ~ 15가 1인데, D의 경우는 010101을 반복한다. 

 

 

 

 

 

 

 

 

 

3. 디멀티플렉서 

 

- 디멀티플렉서(demultiplexer): 멀티플렉서와 반대되는 연산을 수행하는 조합논리회로

- 데이터 분배기(data distributor)라고도 불린다.

- 한개의 입력선으로부터 정보를 받아 이를 2n 개의 출력선중의 하나로 내보낸다. 이때 특정 출력선의 제어는 n 개의 선택입력의 조합으로 제어된다.

- 디멀티플렉서는 약어로 DEMUX로 표현하기도 한다.

 

 

 

 

즉, 

- 여기서 데이터 입력 E는 두 선택 신호 S1, S0 에 의해 선택적으로 출력된다.

- 예를들어 S1S0 가 10 이면 출력 D2 만 입력 E를 출력시킨다.

 

디코더와 유사하다. 

 

DEMUX와 디코더는 동일한 진리표를 가짐. 

 

 

 

반응형