조합 회로 빌딩 블록 (1)

chelseey·2025년 6월 16일
0

비교기

2진 비교기(comparator)

: 두 개의 2진수의 크기를 비교하는 회로

1비트 2진 비교기

F1=ABF_1 = \overline{A \oplus B}
F2=ABF_{2} = A \oplus B
F3=ABF_{3} = A\,\overline{B}
F4=ABF_{4} = \overline{A}\,B

드모르간과 분배법칙에 따른 유도
XNOR:

AB+AB  =De Morgan  (A+B)(A+B)  =Distribute  AB+AB\overline{A\overline{B}} + \overline{\overline{A}B} \;\overset{\text{De Morgan}}{=}\; (\overline{A}+B)\,\cdot\,(A+\overline{B}) \;\overset{\text{Distribute}}{=}\; A\,B + \overline{A}\,\overline{B}

2비트 2진 비교기

  • F₁ = A=B : 두 수가 같으면 1
  • F₂ = A≠B : 다르면 1
  • F₃ = A>B : A가 크면 1
  • F₄ = A<B : B가 크면 1

4비트 비교기 회로

IC 7485: 두 4-비트 이진수 A3A2A1A0A_3A_2A_1A_0B3B2B1B0B_3B_2B_1B_0의 크기를 비교

16비트 비교 회로

4개의 7485 IC를 캐스케이드로 연결
MSB(최상위 비트) 블록부터 비교를 시작

디코더

디코더 기능 비교

인코더 (Encoder)

입력 중 하나만 활성(1-hot)되어 있을 때, 그 위치를 이진 코드(2진수)로 변환
→ 다대일 (8×3, 16×4 등), 압축

디코더 (Decoder)

입력 이진 코드(예: 3비트)를 받아, 대응하는 출력만 1로 활성화
→ 일대다 (3×8, 4×16 등), 압축 풀기

디코더 기능

입력된 n비트 2진 코드(이진 주소)를
2n2^n개의 서로 다른 출력 중 하나만 ‘1’로 활성화하는 조합 논리 회로

Enable 핀을 가지고 있는 경우,
선택된 출력만 활성화하는 ‘디멀티플렉서’ 기능도 수행

  • 대표 IC 제품

1×2 디코더

입력 비트 하나를 두 개의 상호 보완된(Complementary) 출력으로 분배

Enable 핀이 있는 1×2 디코더

동작 허용: E (Enable)

E=0 (“Disable”) → Y0=Y1=0Y_0=Y_1=0 (출력 불활성)

  • Enable(E)가 ‘1’일 때만 입력 A 값을 분배하고,
  • E가 ‘0’이면 항상 모든 출력을 ‘0’으로 유지

기본 2×4 디코더

: 2비트 주소를 4개의 개별 선택 신호로 분배

입력: 2비트 BA
출력: 4비트 Y3,Y2,Y1,Y0Y_3,\,Y_2,\,Y_1,\,Y_0

NAND로 구성된 2×4 디코더

각 출력은 대응하는 AND 조합의 출력을 다시 NAND 처리한 것

Enable 핀이 있는 2×4 디코더

  • E=1일 때만 주소 비트 B,A 조합에 따라 한 개의 출력만 ‘1’로 활성화
  • E=0이면 모든 출력을 ‘0’으로 유지해 회로 동작을 끔

Enable 핀이 있는 2→4 NAND 디코더

3×8 디코더

IC 74138 (3×8 NAND디코더) 내부 회로도

주소 입력: A,B,C (3비트)
Enable 입력 : G1G_{1}(Active HIGH),  G2AG2B\;\overline{G}_{2A}\cdot\overline{G}_{2B} (Active LOW 두 개)

동작 조건

  • G1=1G_1=1 AND G2A=G2B=0G_{2A}=G_{2B}=0 일 때만 동작
  • 그 외에는 모든 Yi=1Y_i=1 (Disable)
  • 동작 시 주소 CBA 에 해당하는 하나의 YiY_i 만 ‘0’으로 선택됨

디코더를 이용한 램프 제어

3→8 디코더(Active-HIGH 인에이블, Active-HIGH 출력)를 사용

  • 입력 선
    A, B, C : 층 번호 이진(000 = 지하1층, 001 = 1층, …, 111 = 7층)
  • 출력 선
    Y₀…Y₇ : 각각 ‘B’, ‘1’, ‘2’, …, ‘7’ 라벨 뒤의 램프 구동

3×8 디코더 2개로 3×16 디코더 만들기

  • 상위 블록: 3→8 디코더 #1
    인에이블 = D\overline{D}
    출력 = Y₀…Y₇ (D=0일 때만 동작)

  • 하위 블록: 3→8 디코더 #2
    인에이블 = D
    출력 = Y₈…Y₁₅ (D=1일 때만 동작)

0개의 댓글