DIY를 위한 AI

2022년 11월 28일 월요일

조합논리회로(Combinational logic circuit)

1. 조합논리회로에 대해

앞서 알아본 논리연산과 논리 게이트를 사용하여 논리회로를 설계하고, 이를 간소화할 도구로써 카르노 맵까지 익숙해졌다면 논리회로에서의 준비는 끝난 것이다. 이제부터는 특정한 기능을 갖는 논리회로를 묶어 하나의 모듈로 자주 쓰이는 조합논리회로들을 알아본다.

 

2. 비교기

먼저, 여기서 말하는 비교기는 디지털 비교기(Digital Comparator)이다. 따라서 입력에 쓰이는 값은 디지털인 ‘0’ 또는 ‘1’만 해당하며 두 입력을 비교하는 회로이다. 입력 A(피비교수)와 입력 B(비교수)의 사이를 비교할 때 나올 수 있는 출력은 같다’, ‘다르다’, (B)‘크다’, (B)‘적다 4가지이다. 이 중, ‘같다다르다는 서로 반전관계로 같다 NOT을 추가하는 것으로 다르다를 구할 수 있기에 3가지를 주로 사용한다. 각각의 출력에 E(Equal, 같다), G(Great, 크다), L(Less, 적다)로 명명하면 아래와 같이 진리표를 구성할 수 있다.

 

입력

출력

A

B

E

G

L

0

0

1

0

0

0

1

0

1

0

1

0

0

0

1

1

1

1

0

0

 

진리표는 설명과 동일하게 출력 EAB0일 때와 AB1일 때에, 출력 GA0B1일 때, 출력 LA1B0일 때 1이 되는 것을 볼 수 있다. 이를 논리 게이트로 표현하면 아래와 같다.

 

 

그림과 같이 출력 EA’·B’A·BNOT×2+AND×2OR×1 또는 XNOR 논리 게이트 중 한 가지를 선택하고 그 외의 출력은 GA’·B, LA·B’ NOTAND 논리 게이트를 적용한다. 참고로 필요하다면 NE(Not-Equal, 다르다)XOR 논리 게이트를 사용하여 만드는 것도 가능하다.
  
두 자릿수 이상의 경우 출력 E는 모든 자릿수에서 비교하여 모두 같아야 하므로 각 자릿수 별로 XNOR 논리 결과 전체를 AND 연산하는 결과를 예상할 수 있다. 출력 GL은 까다로운데 최상위 자릿수부터 비교하여 다르면 비교하여 바로 끝이 나고, 같은 경우에만 하위 자릿수로 내려가 다시 비교하는 연쇄적인 비교가 필요하다. 바꿔 말해 해당 자릿수가 다르고 그 상위 자릿수 모두가 같아야 하며 이를 모든 자릿수에서 행한다. 두 자릿수에 대한 비교기를 표현하면 아래와 같다.

 

입력

출력

A1

A0

B1

B0

E

G

L

0

0

0

0

1

0

0

0

0

0

1

0

1

0

0

0

1

0

0

1

0

0

0

1

1

0

1

0

0

1

0

0

0

0

1

0

1

0

1

1

0

0

0

1

1

0

0

1

0

0

1

1

1

0

1

0

1

0

0

0

0

0

1

1

0

0

1

0

0

1

1

0

1

0

1

0

0

1

0

1

1

0

1

0

1

1

0

0

0

0

1

1

1

0

1

0

0

1

1

1

1

0

0

0

1

1

1

1

1

1

0

0

 

(변형과정 생략)

EA1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0(A1·B1A1·B1)·(A0·B0A0·B0)

GA1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·B1A1· A0·B0A0·B1·B0

LA1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·A0·B1·B0A1·B1A0·B1·B0A1·A0·B0

 

 

좌측은 간소화 결과대로 나타낸 것이며 우측은 비교할 때 상위 자릿수부터 비교하여 내려가는 사람의 방식에 따른 것이다. 우측의 경우 중간과정을 입력으로 가져오므로 변형을 위해 다소의 경험이 필요할 수도 있다. 그림 두 가지는 같은 결과를 보여주지만 실제 제조 시 난이도, 크기, 제조단가 등이 다를 것임을 예상할 수 있다.
  
상기한 회로에서 자릿수가 추가될 때마다 논리를 추가하여 많은 자릿수의 비교도 가능하다. 이렇게 조합된 논리회로를 기반으로 수의 비교를 가능하게 한다.

 

3. 가산기와 감산기

사칙연산 중 기본이 될 덧셈과 뺄셈을 하는 회로이다.
  
먼저 덧셈을 할 수 있는 가산기(Adder)를 생각해본다. 처음에는 한 자릿수인 두 입력을 받아 계산한다고 가정한다. 덧셈의 경우 입력 A(피가수)와 입력 B(가수) ‘1’의 개수가 한 개면 출력이 110이고 두 개면 210(102)로 올림이 발생하게 된다. 두 입력의 합을 S(Sum, 합계), 자릿수 초과에 따른 올림을 C(Carry, 올림)로 쓰고 표에 정리하면 아래와 같다.

 

입력

출력

A

B

S

C

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

 

진리표에 따라 정리하면 SA·B’A’·BXOR 논리 게이트(NOT×2AND×2OR×1도 가능), CA·BAND 논리 게이트를 적용한다. 그림으로 표현하면 아래와 같다.

 

 

이 논리회로는 컴퓨터에 있어 덧셈의 가장 기본이 되는 회로로써 별도로 반가산기(Half adder, HA)라는 이름이 붙어있다. 최하위 자릿수는 이것으로 충분하지만 상위 자릿수들은 하위 자릿수에서 발생한 올림을 입력으로 받아 추가로 더해야 한다. , AB와 받아온 올림의 합계는 최소 010부터 최대 310(112)까지 될 수 있으므로 당연히 올림이 발생할 수도 있다. 하위 자릿수에서 올림을 받아온 입력 CI, 해당 자릿수에서 발생한 올림을 출력 CO로 구분하고 이를 표에 정리하면 아래와 같다.

 

입력

출력

A

B

CI

S

CO

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1

 

진리표에 따라 정리하면 SA’·B’·CIA’·B·CIA·B’·CIA·B·CI(A·B’A’·B)·CI(A·B’A’·B)’·CI, COA’·B·CIA·B’·CIA·B·CIA·B·CIA·B(A·B’A’·B)·CI로 표현하고 회로로 나타내면 아래와 같다.

 

 

구성을 보면 반가산기×2OR 논리 게이트임을 알 수 있으며 이 구성을 묶어 전가산기(Full adder, FA)라고 부른다. 이렇게 반가산기 또는 전가산기를 사용하여 수의 덧셈이 가능하게 된다.

 

이어 뺄셈을 할 수 있는 감산기(Subtractor)를 생각해본다. 역시 처음에는 두 입력을 받아 계산한다고 가정한다. 뺄셈의 경우 입력 A(피감수)와 입력 B(감수) B A보다 적으면 출력이 110이고 크면 -110(112)로 음수가 발생하므로 빌림이 필요하게 된다. 두 입력의 차를 D(Difference, 차이), 자릿수 부족에 따른 빌림을 Br(Borrowed, 빌림)로 쓰고 표에 정리하면 아래와 같다.

 

입력

출력

A

B

D

Br

0

0

0

0

0

1

1

1

1

0

1

0

1

1

0

0

 

진리표에 따라 정리하면 SA·B’A’·BXOR 논리 게이트(NOT×2AND×2OR×1도 가능), BrA’·BNOTAND 논리 게이트를 적용한다. 그림으로 표현하면 아래와 같다.

 

 

이 논리회로는 뺄셈의 가장 기본이 되는 회로로써 반감산기(Half Subtractor, HS)라는 이름이 붙어있다. 최하위 자릿수는 이것으로 충분하지만 상위 자릿수들은 하위 자릿수에서 발생한 빌림을 입력으로 받아 추가로 빼야 한다. , A에서 B와 내려간 빌림을 빼면 최소210(102)에서 최대 110까지 될 수 있으므로 다시 빌림이 발생할 수도 있다. 하위 자릿수에서 빌림 요청을 입력 BrI, 해당 자릿수에서 발생한 빌림을 출력 BrO로 구분하고 이를 표에 정리하면 아래와 같다.

 

입력

출력

A

B

BrI

D

BrO

0

0

0

0

0

0

0

1

1

1

0

1

0

1

1

0

1

1

0

1

1

0

0

1

0

1

0

1

0

0

1

1

0

0

0

1

1

1

1

1

 

진리표에 따라 정리하면 DA’·B’·BrIA’·B·BrIA·B’· BrIA·B·BrI(A·B’A’·B)·BrI(A·B’A’·B)’· BrI, BrOA’·B’·BrIA’·B·BrIA’·B·BrIA·B·BrIA’·B(A·B’A’·B)’·BrI가 되고 회로로 나타내면 아래와 같다.

 

 

구성을 보면 반감산기×2OR 논리 게이트임을 알 수 있으며 이 구성을 묶어 전감산기(Full Subtractor, FS)라고 부른다. 이렇게 반감산기 또는 전감산기를 사용하여 수의 뺄셈이 가능하게 된다. 다만 2진수의 뺄셈을 2의 보수를 사용한 덧셈으로 대신할 수 있으므로 가산기가 상대적으로 더 많이 쓰인다.
 
그 외에 덧셈을 승수만큼 반복하는 곱셈기와 뺄셈을 몫만큼 반복하는 나눗셈기도 설계가 되리라 예상해 볼 수 있지만 생략한다.

 

4. 부호기와 복호기

회선의 수를 줄이는 부호화 기능과 원래대로 되돌리는 복호화 기능을 하는 회로이다.

먼저 부호기(Encoder : 인코더)의 경우 신호의 순번을 2진수의 형태로 변경(부호화)하는 회로이며 입력의 수가 출력보다 많다. 일반적으로 입력의 개수를 2n개라라고 할 때 출력의 개수가 n개를 갖는 관계에 있다. 예를 들어 입력의 수가 8개라면 출력의 개수는 3(8×3 인코더), 입력이 16개라면 출력은 4(16×4 인코더)가 된다. 입력 I가 순서 있는 4개라고 하면 출력 O 2(4×2 인코더)가 되는데 이러한 관계를 정리하면 아래와 같다.

 

입력

출력

I3

I2

I1

I0

O1

O0

0

0

0

1

0

0

0

0

1

0

0

1

0

1

0

0

1

0

1

0

0

0

1

1

 

진리표에 따라 정리하면 O0I3·I1I3·I1 O1I3·I2I3·I2로 정리할 수 있다. 그리고 표에 보이는 대로 순번 0에서 증가할 때마다 출력의 2진수 표기가 증가하는 것을 알 수 있다. 특이한 점은 입력 중 하나만 입력되는 것을 전제로 하여, 2개의 출력에 대한 모든 경우의 수인 4가지만을 확인한다. 상기한 표를 그림으로 표현하면 아래와 같다.

 

 

이어서 복호기(Decoder : 디코더)의 경우 2진수를 신호의 순번에 맞춰 변경(복호화)하는 회로이며 입력의 수가 출력보다 적다. 일반적으로 입력의 개수를 n개라고 할 때 출력의 개수가 2n개를 갖는 관계에 있다. 예를 들어 입력의 수가 3개라면 출력의 개수는 8(3×8 디코더), 입력이 4개라면 출력은 16(4×16 디코더)가 된다. 입력 I2개라고 하면 출력 O4(2×4 디코더)가 되는데 이러한 관계를 정리하면 아래와 같다.

 

입력

출력

I1

I0

O3

O2

O1

O0

0

0

0

0

0

1

0

1

0

0

1

0

1

0

0

1

0

0

1

1

1

0

0

0

 

진리표에 따라 정리하면 O0I1·I0’, O1I1·I0, O2I1·I0’, O3I1·I0으로 정리할 수 있으며, 표에 보이는 대로 입력되는 2진수가 증가할 때마다 출력의 순번이 증가하는 것을 알 수 있다. 이렇게 정리한 표를 그림으로 표현하면 아래와 같다.

 

 

한 번 언급한대로 부호기는 컴퓨터 등에서 외부입력을 받아 내부에서 사용하는 코드(2진수)로 변경하고 복호기는 내부에서 사용하는 코드를 외부로 출력할 때 재변환하는 것이 일반적인 목적이다. 논리회로 설계시에는 단독으로 쓰이기 보다 적은 신호로 다른 회로의 제어를 위한 회로로 종종 쓰인다.

여담으로 부호화하는 인코더와 모터의 회전각도를 측정하는 장치인 엔코더와 영문 표기가 동일하므로(Encoder) 처음 찾아볼 때에 오인하지 않도록 주의한다.

 

5. 선택기와 분배기

여러 회선 중 하나만을 출력하는 선택하거나 하나의 회선을 여러 회선으로 분배하는 회로이다.

먼저 선택기(Multiplexer, MUX : 멀티플렉서)를 보면 입력의 개수가 2n(N), 출력의 개수가 1개라고 할 때 이 중 하나만을 선택하도록 n개의 입력 S를 추가로 받는 회로(N1 멀티플렉서)이다. 예로 입력 I4개일 때 입력 S2(41 멀티플렉서)가 되는 관계를 표로 정리하면 아래와 같다.

 

입력

출력

(I3)

(I2)

(I1)

(I0)

S1

S0

O

X

X

X

X

0

0

I0

X

X

X

X

0

1

I1

X

X

X

X

1

0

I2

X

X

X

X

1

1

I3

 

표에 기입된 대로 입력 S에 의해 n번째 입력 I와 출력 O가 같게 된다. 이렇게 선택한 입력 In에서 ‘1’일 때만 출력 O에서 ‘1’이 발생하므로 O(S1·S0’)·I0(S1·S0)·I1(S1·S0’)·I2(S1·S0)·I3이라고 쓸 수 있다. 참고로 입력 In의 경우 내용상 무의미하므로 생략되는 것이 일반적이고 출력은 회로 특성상 항상 한 개이다. 이러한 표를 그림으로 표현하면 아래와 같다.

 

 

입력의 회선 수가 부족할 때 자주 쓰이는 회로이며, 논리회로상에서 회선의 선택을 위한 복호기의 형상이 남아있는 것을 볼 수 있다. , 여기서 설명하는 것은 디지털 선택기로 아날로그 선택기와 입출력의 특성이 다르다는 것에 주의한다. 그리고 회선을 선택한다는 개념으로 편의상 스위치의 기호로 나타내는 경우도 자주 있다.

 

다음의 분배기(Demultiplexer, DEMUX : 디멀티플렉서)를 보면 입력의 개수가 1, 출력의 개수가 2n(N)개라고 할 때, 이 중 하나로만 분배되도록 n개의 입력 S를 추가로 받는 회로(1:N 디멀티플렉서)이다. 예로 출력 O4개일 때 입력 S2(1:4 디멀티플렉서)가 되는 관계를 표로 정리하면 아래와 같다.

 

입력

출력

I

S1

S0

O3

O2

O1

O0

X

0

0

0

0

0

I

X

0

1

0

0

I

0

X

1

0

0

I

0

0

X

1

1

I

0

0

0

 

표에 기입된 대로 입력 S에 의해 입력 I n번째 출력 O가 같게 된다. 이렇게 입력 I‘1’일 때 선택한 출력 On에서만 ‘1’이 발생하므로 O0(S1·S0’)·I, O1(S1·S0)·I, O2(S1·S0’)·I, O3(S1·S0)·I라고 쓸 수 있다. 참고로 입력 I의 경우 내용상 무의미하므로 생략되는 것이 일반적이며 이 입력은 회로 특성상 항상 한 개이다. 이러한 표를 그림으로 표현하면 아래와 같다.

 

 

분배기는 선택기에 비해 상대적으로 잘 쓰이지 않지만 같은 입력으로 다양한 회로의 병행시험에 유용하다. 그리고 선택기와 같이 논리회로상 복호기의 형상이 남아있는 것을 볼 수 있다. 참고로 디지털의 경우 입출력 방향이 있어 선택기와 분배기를 구분하지만 아날로그 환경에서는 입출력 개념이 없어 분배기와 선택기는 동일하게 사용되는 것이 일반적이다.

 

6. 결론

상기한 내용 외에도 패리티 생성기(또는 검사기), 2진수-그레이 부호 변환기, BCD-10진수 변환기 등 여러 종류의 조합논리회로가 있다. 논리회로에서 특정한 기능이 필요할 때, 그에 부합하는 논리회로의 기능이 있다면 직접 설계하기 보다 조합논리회로에서 찾아서 적용하도록 한다.

댓글 없음:

댓글 쓰기