1. 디지털 논리의 기초 (수 체계)

Transclude of 01-들어가기#22-디지털-정보의-표현-단위

1.1. 디지털 시스템의 특징

  • 장점

    • 잡음(Noise)에 강함, 설계 용이성, 정보 저장 및 가공의 편리성, 정확성, 소형화/저가격화 가능
  • 표현

    • 0과 1(2진수)만 사용하며, 전압 레벨(High/Low)로 구분한다.
    • 칩 간 데이터 전송 시 잡음 여유(Noise Margin) 덕분에 신호 복원이 유리하다.

1.2. 진수와 변환

  • 진수 체계: 10진수(일상), 2진수(시스템 내부), 8진수/16진수(2진수의 간략한 표현)를 사용한다.
  • 변환: 10진수 ↔ 2진수/8진수/16진수 간의 변환 방법(나눗셈, 곱셈, 그룹화 등)을 다룬다.

1.3. 음수 표현과 연산

  • 보수(Complement): 컴퓨터는 뺄셈 회로 대신 덧셈 회로를 사용하기 위해 보수를 사용한다.

    • 부호와 절대치
    • 1의 보수: 0과 1을 서로 뒤집음
    • 2의 보수: 1의 보수에 1을 더함 (계산이 쉽고 0이 하나만 존재하여 컴퓨터에서 주로 사용)
  • 연산

    • 2진수의 덧셈과 뺄셈에 보수를 이용한다.
    • 2진수 연산에서는 오버플로(표현범위 초과)를 반드시 검토해야 한다.

2. 논리 회로(Logic Gates)

2.1. 기본 논리 게이트

  • NOT: 입력 반전 (인버터)

  • BUFFER: 입력 그대로 출력 (신호 증폭, 지연)

  • AND: 모든 입력이 1일 때만 1 출력

  • OR: 하나라도 1이면 1 출력

  • NAND: AND의 반대 (모두 1일 때만 0)

  • NOR: OR의 반대 (모두 0일 때만 1)

  • XOR(Exclusive-OR): 입력이 서로 다를 때 1 출력 (홀수 개의 1 감지)

  • cf.

    • 단항연산자
    • 이항연산자
    • 3-상태(3-state)
      • 하이임피던스(출력이 끊어진 것과 유사한 상태)
      • 복수 개의 게이트 출력을 하나의 배선에 연결
    • 3-상태 버퍼 게이트
      • 출력이 3개 레벨(High, Low, 하이임피던스(Hi-Z) 중의 하나를 갖는 논리소자

2.2. 게이트 전기적 특성

  • 싱크/소스 전류

    • 전류가 칩으로 들어가는지(Sink), 나가는지(Source)에 따라 LED 구동 방식 등이 달라진다.
    • 싱크 전류: 출력 쪽으로 전류가 흘러 들어간다는 의미
    • 소스 전류: 출력에서 바깥으로 전류가 흐른다는 의미
  • 풀업/풀다운 저항

    • 입력 신호의 불확실한 상태(Floating)를 방지하고 정확한 High/Low 레벨을 잡아주기 위해 사용한다.
    • 풀-업 저항: 전원 쪽으로 연결할 때 사용
    • 풀-다운 저항: 접지 쪽으로 연결할 때 사용

3. 논리식 간소화

  • 논리식(부울 대수식)

    • 디지털 회로는 논리식으로 표시할 수 있음
    • 입력 항목들의 상태에 따른 출력을 결정하는 식
  • 논리식의 간소화 방법

    • 대수적 방법
      • 많은 경험 및 숙련된 기술이 필요
      • 최소식인지 판단하기 어려움
    • 도표(map) 방법
      • 카르노 맵 또는 카노프 맵
      • 사람에게는 직관적이나 프로그램화에 부적합
    • 알고리즘 방법
      • 프로그램화에 적합

3.1. 불 대수(Boolean Algebra)

  • 논리회로를 수식으로 표현한 것
  • 교환, 결합, 분배 법칙 및 드모르간의 정리 등을 이용해 복잡한 논리식을 간소화하여 게이트 수를 줄일 수 있다.

3.2. 카르노 맵(Karnaugh Map)

  • 복잡한 불 대수 계산 없이 도표를 이용해 논리식을 시각적이고 직관적으로 간소화하는 방법이다.
  • 인접한 1의 항들을 묶어(Grouping) 식을 줄인다.

4. 조합 논리 회로 (Combinational Logic)

4.1. 특징

  • 현재의 입력에 의해서만 출력이 결정되며, 기억 소자(메모리)가 없다.

4.2. 주요 회로

  • 가산기(Adder): 2진수 덧셈을 수행 (반가산기 HA, 전가산기 FA)

  • 비교기(Comparator): 두 수의 크기 비교

  • 인코더(Encoder): 신호를 2진 코드로 변환 (예: 키보드 입력)

  • 디코더(Decoder): 2진 코드를 원래 신호로 복원 (예: 7-세그먼트 표시)

  • 멀티플렉서(MUX): 여러 입력 중 하나를 선택하여 출력 (데이터 선택기)

  • 디멀티플렉서(DEMUX): 하나의 입력을 여러 출력 중 하나로 분배

4.3. 설계 순서

  • cf. 설계 순서
    • 문제서술
    • 각 입력과 출력의 이름을 정하고 이를 2진으로 표현
    • 설계 사양을 진리표 혹은 대수식으로 형식화
    • 서술(진리표로부터 구한 대수식)의 간략화 - 불대수, 카르노맵, 퀸-매클러스키 방법 등을 이용
    • 설계목표와 제약에 근거하여, 사용할 수 있는 부품으로 최종시스템 구현

5. 순서 논리 회로(Sequential Logic)

5.1. 특징

  • 현재 입력뿐만 아니라 이전 상태에 의해서도 출력이 결정된다. 즉, 기억 소자(메모리)가 필요하다.

  • 클럭(Clock): 회로 동작의 동기를 맞추는 주기적인 신호

5.2. 주요 부품

  • 래치(Latch)

    • 비동기식 기억 소자
    • 입력 변화에 즉시 반응
    • (SR 래치 등)
  • 플립플롭(Flip-Flop)

    • 동기식 기억 소자
    • 클럭의 에지(상승/하강)에서만 상태 변화
    • 종류: SR, D(데이터 저장), JK(만능), T(토글) 플립플롭
  • 응용 회로

    • 카운터(Counter): 클럭 펄스 수를 세는 회로 (타이머 등에 사용)
    • 레지스터(Register): 데이터를 저장하거나 이동(Shift)시키는 F/F의 집합

6. PLD와 HDL

6.1. PLD(Programmable Logic Device)

  • 내부 회로가 고정된 표준 IC와 달리, 사용자가 내부 연결(퓨즈)을 프로그래밍하여 원하는 논리 기능을 구현할 수 있는 칩이다.
  • 종류: SPLD, CPLD, FPGA(대규모 집적 가능)

6.2. HDL(Hardware Description Language)

  • 회로를 그림(Schematic)이 아닌 텍스트(코드) 형태로 기술하여 설계하는 언어이다.
  • VHDL, Verilog 등이 있으며, 복잡한 회로 설계 및 수정이 용이하다.

7. 제어 시스템 개발 절차

7.1. 규모에 따른 개발 방법

  1. 소규모

    • 표준 IC(TTL/CMOS) → 브레드보드 테스트 → 만능기판/PCB 제작
  2. 대규모

    • PLD/FPGA 이용
      • 시뮬레이션 툴과 HDL을 이용해 칩 하나에 회로 집적
    • 마이크로컨트롤러(MCU) 이용
      • CPU, 메모리, I/O가 통합된 칩(AVR, ARM, PIC 등)을 사용
      • C언어 등으로 펌웨어를 작성하여 하드웨어를 제어 (아두이노, 라즈베리 파이 등 활용)