* 멀티플렉서 (Multiplexer, MUX, 먹스, 다중화기)



멀티플렉서는 데이터입력과 선택입력(제어입력)을 가지고 있다.

제어입력(select)는 들어오는 n개의 입력 중 하나를 선택하는 역할을 한다.

 

출처

위 그림에서 sel에 0이 입력되면 out에는 I0 값이 출력되고,

sel에 1이 입력된다면 out으로 I1 값이 출력된다.

입력이 2개 출력이 1개이기 때문에 이와 같은 멀티플렉서를 2-to-1 멀티플렉서라고 한다.


- to - 1 멀티플렉서에서 입력 데이터 수가 개이면 select의 비트수는 n개가 된다.

입력 데이터 수가 8개(개)라고 한다면 select 3비트로 모든 가짓수(8가지) 선택할 수 있는 것이다.

8-to-1 멀티플렉서에서 각각의 경우를 써 보면 

select가

000일때 0번 데이터,

001일때 1번 데이터,

010일때 2번 데이터,

011일때 3번 데이터,

100일때 4번 데이터,

101일때 5번 데이터,

110일때 6번 데이터,

111일때 7번 데이터.

를 선택하여 출력하게 된다.





* 멀티플렉서의 논리식 (불대수식)


2-to-1 멀티플렉서의 논리식을 살펴보자.

데이터 입력으로 D0,D1,  제어입력으로 s,  출력으로 Out이 있다고 할 때 논리식은


Out = s'D0 + sD1 


이다.  자세히 살펴보면 곱의 합(SOP : Sum of Product)방식으로 이루어진 식이라는 것을 알 수 있는데 각각의 항을 보면

s가 0일 때는 sD1 항은 D1의 값과 관계없이 0이 되어 무시된다. (나머지 s'D0 항을 보면 s'는 1이므로 결과값은 D0이 됨)

s가 1일 때는 반대로 s'D0 항이 D0 값에 관계없이 0이 되어버린다.  (남은 sD1 항을 보면 s는 1이므로 결과값은 D1과 같게 됨)




이번에는 4-to-1 멀티플렉서의 논리식을 보자.

데이터 입력으로 D0 D1 D2 D3이 있고 제어입력으로 s0 s1이 있을 때 식은 아래와 같다.


Out = s0's1'D0 + s0s1D1 + s0s1D2 + s0s1D3 


제어입력이 00일때, 01일때, 10일때, 11일때의 각각의 경우에 대하여

위에서 2-to-1 멀티플렉서의 원리와 같이, 한 항을 제외한 나머지 모든 항들이 0이 되어서 무시된다.

이러한 원리로 여러 개의 입력 중 하나를 선택하여 출력하는 것이다.





* 쿼터스로 작성한 4-to-1 멀티플렉서의 블록도




제어입력인 두개의 sel이 이루는 4가지 경우가  각각의 4가지 입력과 POS를 이루고 있다.




관련글 : 디멀티플렉서(DEMUX)

관련글목록 : 블로그 '전자' 카테고리











그레이 코드(Gray Code)는 2진 비가중치 코드의 하나로, 

연속된 수들의 코드가 한 비트씩만 차이가 나는 특징이 있다.

때문에 아날로그 신호와 같이 연속적인 신호가 입력될 때 그레이 코드를 사용하면 신뢰성이 높아진다.



* 4비트를 모두 사용한 이진코드와 그레이코드 비교

(이 글에서 언급한 '이진코드'는 이진법으로 나타낸 이진수를 의미합니다)

 이진코드

그레이코드 

0000 

0000 

0001

0001

0010

0011

0011

0010

0100 

0110

0101

0111

0110

0101

0111

0100

1000

1100

1001

1101

1010

1111

1011

1110

1100

1010

1101

1011

1110

1001

1111

1000




그레이코드를 보면 0과 1이 일정한 주기로 반복되는 규칙을 확인할 수 있다.

2^3자리에서는 이진코드와 동일하고,

2^2자리에서는 최상위비트가 0일때 이진코드와 동일, 최상위비트가 1일때 이진코드와 반대.

2^1자리와 2^0자리에서도 마찬가지로  상위비트에 따라 이진코드와 동일한지 반대인지가 결정된다.


위와 같이, 이진코드를 그레이코드로 변환할 때는 최상위비트는 그대로 두고 

자신의 비트와 그의 상위비트를 XOR연산하면 된다.


블록도로 나타내면 다음과 같다.


프로그램으로 작성한다면, 같은 원리로

(x>>1)^x

의 형식으로 작성할 수 있을 것이다. (^는 비트 XOR연산자)






반대로 그레이코드를 이진코드로 바꾸는 것을 생각해 보면,

이진코드의 각 자리를 DCBA라고 할 때 그레이코드는

D DC C⊕B B⊕A 이다. (⊕ : XOR)

D⊕C를 다시 C로 되돌리기 위해서 D와 XOR연산을 하여 D⊕(D⊕C)꼴로 만든다.

XOR연산에서는 결합법칙이 성립하므로 (D⊕D)⊕C로 계산하면, 0⊕C가 되어 C라는 결과가 나온다.

다음 자리인 C⊕B를 B로 되돌리려면 위와 같은 방법으로 C와 XOR하면 된다.


이처럼 그레이코드를 이진코드로 변환하려면 이진->그레이 때와는 다르게 

상위비트의 XOR연산 결과를 가지고 또 하위비트와 XOR시킨다.

알기 쉽게 블록도로 나타내면 아래 그림처럼 나온다.




 










4비트 RCA (Ripple Carry Adder : 전가산기)




- 1비트 전가산기





Overflow를 검출하는 4비트 전가산기





- 시뮬레이션






1bit full-adder 심볼을 사용한 4비트 가감산기입니다.

switch에 1이 들어가면 감산, 0이 들어가면 가산.

Cin에 switch가 연결된 이유는 음수를 2의보수로 표현할때 비트반전시킨뒤 1을 더하기때문.




+ Recent posts