조합 회로
조합 회로는 입력의 현재 상태에 의해서만 출력이 결정되는 논리 회로이다
주요 기능:
- 멀티플렉서 (Multiplexer, MUX): 여러 채널 중 하나를 선택하여 데이터를 수신한다
- 디멀티플렉서 (Demultiplexer, DEMUX): 하나의 채널에서 들어온 데이터를 여러 경로 중 하나로 전송한다
- 디코더 (Decoder): 이진 코드를 해석하여 특정 출력을 결정한다
- 인코더 (Encoder): 입력 신호를 이진 코드로 생성한다
3-상태 게이트 버퍼(3-State Gate Buffer)
버퍼를 사용한 게이트 회로 단순한 논리 게이트만으로는 실제 회로 구동에 한계가 있다
- Fan-out 제한: 게이트의 출력은 연결할 수 있는 다른 장치 입력의 수가 제한적이다
- 직접 연결의 문제: 여러 게이트의 출력을 직접 연결하면 충돌이 발생하여 제대로 작동하지 않을 수 있다
- 버퍼의 역할: 게이트 출력의 구동 능력(Driving Capability)을 향상시켜 더 많은 장치에 신호를 전달할 수 있게 한다
3-상태 버퍼의 특징 일반적인 게이트와 달리 출력이 세 가지 상태를 가진다
- 상태 종류: LOW(0), HIGH(1), Hi-Z(High Impedance, 회로적으로 끊어진 것과 같은 ‘오픈 회로’ 상태이다)
- 활용: 여러 개의 출력을 하나의 선(버스)에 연결할 때 사용하며, 한 번에 최대 하나의 버퍼만 활성화하여 데이터를 전송한다

- EN: 활성화 신호, A: 입력
4가지 종류의 3-상태 버퍼
입력 신호 와 제어 신호 (시스템 클록 등에 의해 제어됨)의 조합에 따라 4가지 유형이 존재한다
- 일반 버퍼 (Active High Enable): 가 1일 때 가 그대로 출력된다. 가 0이면 Hi-Z가 된다
- 반전 버퍼 (Active High Enable, Inverting): 가 1일 때 의 반전값()이 출력된다
- 일반 버퍼 (Active Low Enable): 가 0일 때 활성화되어 를 출력한다
- 반전 버퍼 (Active Low Enable, Inverting): 가 0일 때 활성화되어 를 출력한다

멀티플렉서(Multiplexer)
멀티플렉서
여러 개의 입력 채널 중 하나를 선택하여 단일 출력선으로 연결해주는 조합 회로이다 흔히 데이터 선택기라고도 불린다
기능: 여러 입력 중 원하는 하나를 골라 출력으로 전달한다
2-to-1 MUX(기본 모델)
두 개의 입력() 중 하나를 선택 비트()의 값에 따라 출력()으로 보낸다
- 선택 비트 (): 채널 선택을 제어하는 비트이다
- 논리식:
- 이면 가 된다
- 이면 이 된다

4-to-1 MUX
4개의 데이터 입력()과 이를 제어하기 위한 2개의 선택 비트()를 가진다
- 동작 원리: 선택 비트의 조합()에 따라 4개 중 하나의 입력을 출력한다
- 논리식:
- 선택
- 선택
- 선택
- 선택

8-to-1 MUX
8개ㅡ이 데이터 입력()을 가지며, 이를 제어하기 위해 3개의 선택 비트()가 필요하다
- 특징: 입력의 개수가 개일 때, 선택 비트는 개가 필요함을 알 수 있다()
- 논리식:
- 각 항은 선택 비트의 이진수 값에 대응하는 입력을 활성화한다(예: 이면 가 출력됨)

논리 회로도

- 각 AND 게이트는 데이터 입력() 중 하나와 선택 신호의 특정 조합(의 보수 및 원형)을 입력받는다
- 선택 신호 조합에 의해 단 하나의 AND 게이트만 활성화되어 해당 데이터가 OR 게이트를 통해 출력 로 전달된다
-to-1 MUX (일반화)
멀티플렉서의 원리를 수학적, 구조적으로 일반화한 내용이다
- 구조: 개의 데이터 입력 라인과 개의 제어(선택) 입력 라인을 가진다
- 일반 논리식:
- 여기서 는 선택 변수들로 만들어지는 최소항(Minterm)이며, 는 해당 번째의 데이터 입력이다. 즉, 선택된 순번의 데이터만 살아남아 합산된다는 뜻이다

쿼드 멀티플렉서(Quad Multiplexer)
하나의 제어 신호로 여러 비트의 데이터를 동시에 선택하는 장치이다
- 구조: 4개의 2-to-1 MUX가 하나의 세트로 구성되어 있다
- 입력: 4비트 크기의 데이터 채널 2개(, )를 입력받는다
- 동작: 공통 제어 신호 (MUX control) 값에 따라 버스 전체 또는 버스 전체를 출력 로 보낸다
- 이면 출력
- 이면 출력
- 의의: 개별 비트 단위가 아닌, 4비트 데이터 묶음(Word) 단위로 경로를 전환할 때 사용한다

MUX를 이용한 조합 회로 구현 (1)
진리표를 게이트로 직접 설계하는 대신, MUX를 사용하여 훨씬 간단하게 논리 함수를 구현하는 방법이다
핵심 원리: 개의 변수를 가진 불 함수(Boolean function)를 구현할 때, 개의 선택 입력을 가진 MUX를 사용하여 효율적으로 설계할 수 있다
예시:

디멀티플렉서(Demultiplexer)
디멀티플렉서
디멀티플렉서는 단일 입력 채널에서 정보를 받아 이를 개의 가능한 출력 라인 중 하나로 전송하는 장치이다
기능: 멀티플렉서(MUX)의 역연산을 수행한다(1-to-N 분배기 역할)
1-to-4 DEMUX:
- 1개의 데이터 입력()과 2개의 선택선()을 가진다
- 선택선의 값에 따라 입력 데이터가 중 하나로 전달된다
- 논리식 예시: (즉, 일 때 입력 가 로 나감)

1-8 DEMUX
8개의 출력 라인을 가진 디멀티플렉서의 구조이다
- 회로 구성: 8개의 AND 게이트와 3개의 선택선()으로 구성된다
- 동작: 데이터 입력 가 선택선이 지정하는 주소의 출력으로만 전달된다
- 회로와 주요 논리식:

회로 확장 설계 작은 단위의 DEMUX를 조합하여 더 큰 규모의 DEMUX를 만드는 방법이다
- 설계 목표: 2개의 1-to-4 DEMUX를 사용하여 1개의 1-to-8 DEMUX 구현
- 연결 방식:
- 최상위 선택 비트()를 사용하여 두 칩 중 어느 것을 켤지 결정한다
- 이면 상단 칩 활성화 (인버터 거침)
- 이면 하단 칩 활성화
- 나머지 하위 선택 비트()는 두 칩의 선택선()에 공통으로 연결한다
- 데이터 입력()은 두 칩의 입력 단자에 공통으로 인가된다
- 최상위 선택 비트()를 사용하여 두 칩 중 어느 것을 켤지 결정한다

코드 변환기(Code Converter)
코드 변환기
코드 변화기는 한 종류의 이진 코드로 표현된 정보를 다른 종류의 이진 코드로 번역하는 조합 회로이다
기본 원리: 입력 코드(Code A)를 받아서 설계된 논리에 따라 출력 코드(Code B)로 변환한다 예시:
- BCD-to-Excess-3(3초과 코드) 변환기: 10진수를 표현하는 BCD 코드를 3만큼 큰 값의 코드로 변환한다
- BCD-to-Seven-Segment(7세그먼트) 디코더: 숫자를 눈으로 볼 수 있게 LED 숫판(7세그먼트) 신호로 변환한다

BCD-to-Excess-3 변환기 설계
가장 대표적인 코드 변환 사례인 BCD에서 3초과 코드로의 변환 과정을 보여준다
입력과 출력 구성
- 입력 (4비트): (BCD 코드)
- 출력 (4비트): (3초과 코드)
진리표(Truth Table) 분석 Excess-3 코드는 이름 그대로 BCD 값에 이진수 3()을 더한 값이다

BCD-to-7 세그먼트 디코더
이 창치는 코드 변환기(Code Converter)의 한 종류로, 컴퓨터 내부의 이진수(BCD) 데이터를 사람이 읽을 수 있는 숫자 모양으로 바꾸어 준다
- 입력: 4비트 데이터 () — 0부터 9까지의 10진수 정보를 담고 있다
- 출력: 7개의 LED 세그먼트 신호 () — 숫자 표시기의 각 획을 켜거나 끄는 신호이다
- 설계 단계:
- 4개 입력과 7개 출력 사이의 관계를 나타내는 진리표를 작성한다
- 카르노 맵이나 QM 알고리즘 등을 사용하여 각 출력에 대한 최적의 논리식을 도출한다

디코더(Decoders)
디코더
디코더는 비트의 이진 정보를 최대 개의 고유한 출력 신호로 변환하는 조합 회로이다
핵심 기능으로는 입력 변수들의 모든 최소항을 생성한다()
구조: -to- 라인 디코더 ()
- 예: 2-to-4 라인 디코더
- 3-to-8 라인 디코더
구성 요소:
- bits 입력: 코드 워드가 들어온다
- Enable 입력: 회로 전체를 활성화하거나 비활성화하는 제어 신호이다
- bits 출력: 입력에 대응하는 단 하나의 출력만 활성화된다

2-to-4 디코더
동작 원리:
- (Enable) 신호: 회로의 전체 가동 여부를 결정한다. 이면 입력에 상관없이 모든 출력이 0이 된다
- 선택 입력 (): 2비트 입력 조합()에 따라 4개의 출력() 중 하나만 1이 된다

- 논리식의 각 출력은 입력 변수들의 최소항과 같다
진리표의 논리식을 실제 논리 게이트로 구성

- 회로 특징:
- 입력 버퍼: NOT 게이트를 사용하여 각 입력()의 보수 값을 미리 만든다
- AND 게이트: 3개의 입력을 받는 AND 게이트 4개를 사용한다. 각 게이트는 의 조합과 공통 신호를 입력으로 받는다
- 동기화: 신호가 모든 AND 게이트에 연결되어 있어, 이 신호가 1일 때만 선택된 출력이 나온다
NAND 2-to-4 디코더
3개의 입력 라인을 통해 들어온 이진 정보를 해석하여 8개의 출력 라인 중 하나를 선택하는 회로이다
입력 및 출력: 3개의 입력()을 통해 개의 출력()을 제어한다
논리적 특징: 각 출력은 입력 변수들의 최소항과 일치한다
동작 진리표에서 볼 수 있듯이, 입력 조합에 따라 대각선 방향으로 단 하나의 1이 이동하며 출력을 활성화한다

4-to-10 디코더
이 회로는 4비트의 BCD(Binary Coded Decimal) 입력을 받아 대응하는 10진수 출력 하나를 활성화한다
- 7442 IC 블록도: 4개의 입력()과 10개의 출력()을 가진다
- Active-Low 출력: 진리표를 보면 알 수 있듯이, 선택된 출력만 0이 되고 나머지는 모두 1이 된다
- 무관 조건 (Don’t care???) 분석:
- BCD 코드는 0()부터 9()까지만 정의된다
- 입력이 10()에서 15() 사이인 경우, 실제 BCD 체계에서는 발생하지 않는 값이다
- 7442의 처리: 이 “Don’t care” 구간의 입력이 들어오면, 진리표에서 보이듯 모든 출력을 1(비활성)로 유지하여 오작동을 방지한다

- 회로 구성: 4개의 입력()과 각각의 인버터(NOT 게이트), 그리고 10개의 4-입력 NAND 게이트로 이루어져 있다
- 동작 원리: * 각 NAND 게이트는 10진수 0~9에 해당하는 특정 비트 조합을 입력받는다
- NAND 게이트를 사용하는 이유: 디코더는 기본적으로 최소항(Minterm)을 만드는데, NAND 게이트는 조건이 모두 참일 때만 0을 출력하므로 Active-Low 출력을 구현하기에 가장 적합하고 경제직이다
- 예: ‘0’번 출력 게이트는 가 모두 1일 때(즉, )만 출력이 0이 된다
디코더를 이용한 조합 회로 설계
디코더의 가장 큰 특징은 모든 가능한 최소항을 생성한다는 점이다. 이 성징을 이용하면 어떤 논리 함수든 쉽게 설계할 수 있다
기본 개념: 일반적인 조합 회로가 AND-OR 구조로 이루어진다는 점에 착안한다
- 디코더: 입력 변수들에 대한 모든 최소항(AND 연산 결과)을 미리 만들어 둔다
- OR 게이트: 필요한 최소항들만 선택해서 합쳐주면 원하는 출력이 나온다
주의
이 방법으로 만든 식은 최소 SOP 형태가 아닐 수 있다. 즉, 게이트를 가장 적게 쓴 최적화된 상태는 아닐 수 있지만 설계 과정은 훨씬 단순해진다

예시:

구현 방법: 디코더의 출력 포트 중 번을 하나의 OR 게이트에 꽂으면 가 되고, 번을 다른 OR 게이트에 꽂으면 가 완성된다
디코더 설계법이 유리한 경우
- 회로에 출력 단자(Output)가 많을 때 효율적이다
- 각 출력이 적은 수의 최소항으로 표현될 때 유리하다
- 팬아웃(Fan-out, 출력 구동 능력)이 제한적인 상황에서 설계를 단순화할 수 있다
디코더 확장
디코더 확장은 여러 개의 IC나 기능 블록을 상호 연결하여 입력과 출력의 개수를 늘리는 과정이다
- 활성화(Enable) 입력의 편의성:
- 두 개 이상의 IC를 연결할 때 매우 유용한 기능을 제공한다
- 특정 조건에서만 칩이 동작하도록 제어할 수 있어, 회로의 전체적인 기능을 확장하는 데 핵심적인 역할을 한다
- 대표적 예시: 2-to-4 디코더 2개를 조합하여 3-to-8 디코더 1개를 제작할 수 있다
2-to-4 → 3-to-8 설계:

- 설계 구조:
- 공통 입력 (): 두 디코더의 입력 단자에 공통으로 연결되어 하위 2비트를 처리한다
- 선택 입력 (): 가장 상위 비트(MSB)인 가 어떤 디코더를 켤지 결정하는 ‘스위치’ 역할을 한다
- 동작 원리:
- 일 때: 인버터를 거친 신호가 위쪽 디코더를 활성화하여 범위의 출력을 내보낸다
- 일 때: 아래쪽 디코더가 활성화되어 범위의 출력을 내보낸다
- 활용 IC: 74x139 (내부에 2개의 2-to-4 디코더가 포함된 칩)를 사용하여 간단히 구현 가능하다
3-to-8 → 4-to-16 설계 범용 디코더 칩인 74x138 두 개를 사용하여 4비트 주소를 처리하는 16출력 디코더를 만드는 방법이다

- 입력 할당:
- 하위 3비트()는 두 74x138 칩의 주소 입력()에 공통으로 연결된다
- 최상위 비트()는 두 칩을 교대로 활성화하는 데 사용된다
- 칩 제어 로직:
- 상단 칩 (U1): 가 활성화 입력( 또는 )에 연결되어 일 때 작동합니다 ( 출력)
- 하단 칩 (U2): 가 활성화 입력()에 연결되어 일 때 작동합니다 ( 출력)
- 전역 제어: 전체 회로를 끄고 켤 수 있는 공통 신호를 추가하여 시스템 안정성을 높였다
인코더(Encoder)
인코더
인코더는 디코더의 역연산을 수행하는 조합 회로이다
- 기능: 외부에서 들어온 활성화 신호를 해당되는 이진 코드로 변환한다
- 구조: 개(또는 그 이하)의 입력선과 개의 출력선을 가진다
- 특징: 입력선 중 오직 하나만 1이어야 정상적으로 동작하며, 활성화된 입력의 인덱스 번호를 이진수로 출력한다

8-to-3 인코더 8개의 입력()을 받아 3비트의 출력()을 내보내는 예시이다

진리표를 바탕으로 출력 를 구하기 위해 OR 게이트를 사용하여 회로를 구성한다

우선순위 인코더(Priority Encoder)
일반 인코더는 “단 하나의 입력만 1이어야 한다”는 제약이 있어 실제 회로에서 사용하기 까다롭다. 이를 해결하기 위해 등장한 것이 우선순위 인코더이다
기존 인코더의 한계 및 해결책
- 한계 1 (중복 입력): 두 개 이상의 입력이 동시에 1이 되면 출력이 엉뚱하게 나온다
- 해결: 우선순위(Priority) 개념을 도입하여, 여러 개가 들어오면 번호가 가장 높은 것 하나만 선택한다
- 한계 2 (모호한 0 출력): 모든 입력이 0인 경우와 0번 입력()이 활성화된 경우 모두 출력이 00…0으로 같아 구분할 수 없다
- 해결: 유효 출력 표시기(Valid-output indicator, )를 추가하여, 현재 출력이 유효한 데이터인지(입력이 하나라도 있는지) 표시헌다
4-to-2 우선순위 인코더 설계
4개의 입력을 받아 가장 높은 번호의 입력 주소를 2비트로 출력하는 설계 예시이다
동작 원리 및 진리표 분석
- 규칙: 입력 번호가 높을수록 우선순위가 높다. (예: 가 1이면 의 값은 상관없이 무시함)
- 유효 비트 (): 적어도 1개 이상의 입력이 1일 때만 ‘1’이 되어, 모든 입력이 0인 상태(Idle)와 구분해 준다
