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. 규모에 따른 개발 방법
-
소규모
- 표준 IC(TTL/CMOS) → 브레드보드 테스트 → 만능기판/PCB 제작
-
대규모
- PLD/FPGA 이용
- 시뮬레이션 툴과 HDL을 이용해 칩 하나에 회로 집적
- 마이크로컨트롤러(MCU) 이용
- CPU, 메모리, I/O가 통합된 칩(AVR, ARM, PIC 등)을 사용
- C언어 등으로 펌웨어를 작성하여 하드웨어를 제어 (아두이노, 라즈베리 파이 등 활용)
- PLD/FPGA 이용