임베디드 스터디 - 디지털 시스템
이번 글 참고자료:
한빛아카데미, 디지털 논리회로4판
ElectronicsTutorials
디지털 시스템의 정의
- 디지털 신호와 아날로그 신호
- 아날로그 신호 : 시간에 따라 연속적인 전기/전자적 신호
- 디지털 신호 : 시간에 따라 불연속적, 이산적인 값을 갖는 신호
- 디지털 시스템과 아날로그 시스템
- 아날로그 시스템 : 아날로그 정보를 입력받아 아날로그 정보를 출력하는 시스템
- 디지털 시스템 : 디지털 정보를 입력받아 디지털 정보를 출력하는 시스템
- 디지털 시스템의 장점
- 내외부 잡음에 강함
- 설계가 용이함 (연속적인 값에 비해 두 레벨의 이산신호만 처리하면 된다)
- 규격화와 사양 변경에 쉽게 대응 가능함
- 정보를 저장, 가공하기 용이함
- 정보 처리의 정확성과 정밀도를 높일 수 있음 (비선형 처리, 병렬 처리)
- 소형화, 저비용으로 구성 가능
불 대수
모든 항이 0과 1로만 이루어진 논리 연산
불 대수 법칙
| 법칙 | AND 연산 | OR 연산 |
|---|---|---|
| 항등 법칙 | $A \cdot 1 = A$ | $A + 0 = A$ |
| 영 법칙 | $A \cdot 0 = 0$ | $A + 1 = 1$ |
| 멱등 법칙 | $A \cdot A = A$ | $A + A = A$ |
| 보수 법칙 | $A \cdot \overline{A} = 0$ | $A + \overline{A} = 1$ |
| 교환 법칙 | $A \cdot B = B \cdot A$ | $A + B = B + A$ |
| 결합 법칙 | $(A \cdot B) \cdot C = A \cdot (B \cdot C)$ | $(A + B) + C = A + (B + C)$ |
| 분배 법칙 | $A \cdot (B + C) = (A \cdot B) + (A \cdot C)$ | $A + (B \cdot C) = (A + B) \cdot (A + C)$ |
| 드모르간 법칙 | $\overline{A \cdot B} = \overline{A} + \overline{B}$ | $\overline{A + B} = \overline{A} \cdot \overline{B}$ |
논리식 표준화
논리식을 표현하는 표준은 2가지가 있다.
SOP(Sum of Product)
논리식을 AND/NAND 조합식의 OR/NOR로 구성하는 방법이다.
ex) $AB + \overline{A}BC$
SOP에서는 AND 조합식의 NOT 구성을 허용하지 않는다.
ex) $\overline{ABC}$ 는 허용되지 않음. $\overline{A} \cdot \overline{B} \cdot \overline{C}$ 는 허용됨.
- 표준 SOP : 모든 단위 조합식(AND/NAND로만 구성된 조합식)에서 모든 입력항을 표현한다.
ex) $AB + \overline{A}BC$ → $ABC + AB\overline{C} + \overline{A}BC$
POS(Product of Sum)
논리식을 OR/NOR 조합식의 AND/NAND로 구성하는 방법이다.
ex) $(\overline{A} + B)(A + \overline{B} + \overline{C})$
POS에서는 OR 조합식의 NOT 구성을 허용하지 않는다.
ex) $\overline{A + B + C}$ 는 허용되지 않음. $\overline{A} + \overline{B} + \overline{C}$ 는 허용됨.
- 표준 POS : 모든 단위 조합식(OR/NOR로만 구성된 조합식)에서 모든 입력항을 표현한다.
ex) $A + \overline{B} + C = A + \overline{B} + C + D\overline{D} = (A + \overline{B} + C + D)(A + \overline{B} + C + \overline{D})$
논리식 간소화
논리식은 다음 방식으로 간소화할 수 있다.
진리표 기반 불 대수 법칙 적용(Quine-McCluskey 알고리즘)
대표적인 예로 Quine-McCluskey 알고리즘이 있다. Quine-McCluskey 알고리즘은 카르노맵과 원리는 유사하지만 처리 과정에 알고리즘화 가능함.
Q-M 알고리즘은 모든 항을 2진수로 표현한 뒤, 1의 개수에 따라 각 항을 그룹화하며, 각 그룹에서 unit distance인 경우에 대해 간소화를 진행한다.
- Quine-McCluskey 알고리즘 동작 순서
- 모든 항을 2진수로 표현
- 1의 개수에 따라 그룹화
- 각 그룹간 unit distance 그룹에 대해 결합
- 결합이 안되는 항은 PI(Prime Implicant)으로 기록
- PI를 모아 EPI(Essential Prime Implicant)를 기록
- EPI외의 나머지 항은 최소식으로 선택하여 항을 구성
- 최종식 완성
카르노맵 기반 논리식 간소화
- 카르노맵 규칙
- 출력이 같은 항을 2의 제곱수 개수만큼 묶는다
- 바로 이웃한 항들끼리 묶는다
- 반드시 직사각형이나 정사각형의 형태로 묶어야 한다
(XOR나 XNOR의 경우 대각선의 형태로 구성되는 점은 참고하기) - 최대한 크게 묶는다
- 중복하여 묶어서 간소화된다면 중복하여 묶는다
- 무관항의 경우 간소화될 수 있으면 묶어 주고, 그렇지 않으면 묶지 않는다
- 카르노맵 예시 (3변수 기준)
| $AB \setminus C$ | $0$ | $1$ |
|---|---|---|
| $00$ | $m_0$ | $m_1$ |
| $01$ | $m_2$ | $m_3$ |
| $11$ | $m_6$ | $m_7$ |
| $10$ | $m_4$ | $m_5$ |
주의: 변수의 순서는 그레이 코드(Gray Code) 순서($00 \to 01 \to 11 \to 10$)를 따라야 인접성이 유지된다.
수의 표현
- 2진법 : $0$, $1$로 구성
- 8진법 : $0$ ~ $7$로 구성
- 16진법 : $0$ ~ $9$, $A(10)$, $B(11)$, $C(12)$, $D(13)$, $E(14)$, $F(15)$로 구성
10진법 : $0$ ~ $9$로 구성
- BCD(Binary Coded Decimal)
8421 코드라고도 불림- 10진법 체계를 2진수로 표현한 형태, 한 자리수마다 1byte(4bit)을 사용
- BCD 기반의 연산과정에서 9를 넘어가는 수에 대해 $0110_2$$(6)$을 더하여 다음 자리수로 넘김
- Gray Code
- 숫자가 올라갈 때마다 1bit만 변화하는 이진 표현 방법
- 2진법 수의 표현은 디지털 시스템 안에서 잘못된 데이터 처리를 야기할 수 있음
예) $0111_2 \to 1000_2$ 으로 전환 시 4개의 비트가 전환되는데, 이 과정에서 $1111_2, 1011_2, 1001_2$ 등 변환 중간에 디지털 시스템이 변수를 인식하는 케이스가 발생할 수 있음
- 2진법 수의 표현은 디지털 시스템 안에서 잘못된 데이터 처리를 야기할 수 있음
- 기존 2진법의 형태로 수를 나열할 때, 다음 그림과 같이 그레이코드가 변함

- Gray Code ←→ 2진법 변환 방법
- 2진법 → Gray Code
- 첫 비트(LSB)는 유지
- 두 번째 비트부터 2진법의 이전 비트와 XOR 연산
ex) $1011_2$ → $1,(1\oplus0),(0\oplus1),(1\oplus1) = 1110_{gray}$
- Gray Code → 2진법
- 첫 비트(LSB)는 유지
- 두 번째 비트부터 동일자릿수 Gray Code와 이전 2진수 비트를 XOR 연산
ex) $1011_{gray}$ → $1,(1\oplus0),(1\oplus1),(0\oplus1) = 1101_2$
- 2진법 → Gray Code
- 숫자가 올라갈 때마다 1bit만 변화하는 이진 표현 방법
- $R$ 진법의 보수 연산
- ($R-1$)의 보수 : 최대값 - $N$
- ($R$)의 보수 : ($R-1$)의 보수 $+1$
- 예시
- $100$의 $9$의 보수 : $999 - 100 = 899$
- $(100)_2$의 $2$의 보수 : $(111)_2 - (100)_2 + (001)_2 = (100)_2$
2진법 부동소수점 표현
- IEEE 754 : 부호(Sign), 지수(Exponent), 가수(Fraction/Mantissa) 의 세 부분으로 구성
| 형식 | 전체 비트 | 부호 (Sign) | 지수 (Exponent) | 가수 (Fraction) | 바이어스 (Bias) |
|---|---|---|---|---|---|
| 단정밀도 (Single) | 32-bit | 1-bit | 8-bit | 23-bit | 127 |
| 배정밀도 (Double) | 64-bit | 1-bit | 11-bit | 52-bit | 1023 |
- 부호 비트 ($S$)
0: 양수 ($+$)1: 음수 ($-$)
- 지수부 ($E$) : Bias 표현법
- 실제 지수 $e = E - \text{Bias}$
- 가수부 ($M$) : 정규화
- 모든 숫자는 $1.xxxx…$ 형태로 정규화하여 저장. 이때 소수점 앞의 $1$은 항상 존재하므로 생략하고 소수점 아래 부분만 저장(Hidden Bit 방식).
- 특수 값 표현
| 상태 | 지수부 ($E$) | 가수부 ($F$) | 의미 |
|---|---|---|---|
| Zero | 0 | 0 | 0을 표현 ($+0$ 또는 $-0$) |
| Denormalized | 0 | 0이 아님 | 아주 작은 수 (정규화 불가능) |
| Infinity | 모든 비트 1 | 0 | 무한대 ($\infty$) |
| NaN | 모든 비트 1 | 0이 아님 | 숫자가 아님 (Not a Number) |
2진법 고정소수점 표현
| 형식 | 전체 비트 | 부호 (Sign) | 정수부 (Integer) | 소수부 (Fraction) |
|---|---|---|---|---|
| 32bit 데이터 | 32-bit | 1-bit | 16-bit | 15-bit |
| 64bit 데이터 | 64-bit | 1-bit | 32-bit | 31-bit |
- 부호 비트 ($S$)
0: 양수 ($+$)1: 음수 ($-$)
정수부 ($E$) : 일반 2진수 사용
소수부 ($M$) : $2^{-n}$ 가중치로 표현
Q 포맷 : 고정 소수점의 표현 규격. $Qm.n$으로 표현.$m$은 정수비트, $n$은 소수비트
- 부동소수점 vs 고정소수점 :
고정소수점은 소수점 위치가 고정 → 연산 속도 빠름, 하드웨어 단순 부동소수점(IEEE 754)은 소수점 위치가 유동 → 넓은 표현 범위, 하드웨어 복잡 (FPU 필요)