Encoder
Encoder의 정의와 역할
인코더는 주어진 입력을 특정한 출력 코드로 변환하는 디지털 회로이다.
이는 주로 입력 신호를 더 작은 비트 크기의 이진 코드로 변환하는 데 사용된다.
데이터 전송, 데이터 압축, 오류 검출 및 수정 등의 다양한 디지털 시스템에서 중요한 역할을 한다.
다시말해서,
m-bit input code를 n-bit output code로 변환하는 장치이다. (여기서 $n \leq m \leq 2n$)
인코더는 $2^n$ (또는 그 이하)개의 input lines과 n개의 output lines를 가지며,
입력 값에 해당하는 이진 코드를 생성하게 된다.
일반적으로 인코더는 1인 비트가 하나만 있는 코드를 이 비트가 나타나는 위치에 해당하는 이진 코드로 변환한다.
$2^n$-to-n 인코더는 n개의 OR 게이트로 구현할 수 있다.
Encoder의 종류
Binary Encoder (이진 인코더)
이진 인코더는 n개의 입력 신호 중 하나만이 활성화되는 경우에 대해 출력 이진코드를 생성하게 된다.
예를 들어 4 to 2 Encoder는 4개의 입력을 2비트 이진 코드로 변환한다.
4 to 2 Encoder 예시
입력 ($D_3$, $D_2$, $D_1$, $D_0$) | 출력 ($A_1$, $A_0$) |
0001 | 00 |
0010 | 01 |
0100 | 10 |
1000 | 11 |
$A_0 = D_1 + D_3$
$A_1 = D_2 + D_3$
Octal(8) to Binary Encoder 예시
입력 ($D_7$, $D_6$, $D_5$, $D_4$, $D_3$, $D_2$, $D_1$, $D_0$ ) |
출력 ($A_2$, $A_1$, $A_0$ ) |
00000001 | 000 |
00000010 | 001 |
00000100 | 010 |
00001000 | 011 |
00010000 | 100 |
00100000 | 101 |
01000000 | 110 |
10000000 | 111 |
$A_0 = D_1+ D_3 + D_5+ D_7$
$A_1 = D_2+ D_3 + D_6+ D_7$
$A_2 = D_4+ D_5 + D_6+ D_7$
- Inputs (입력) : 8진수 숫자에 해당하는 8 bits 입력
- Output (출력) : 3bits 이진 코드
Priority Encoder (우선순위 인코더)
Priority Encoder는 여러 입력 값 중 하나 이상의 값이 1일 때, 가장 높은 우선순위의 입력 위치를 선택하여 해당 위치에 대한 이진 코드를 출력하는 디지털 회로이다.
이는 일반적인 인코더가 여러 입력 값이 동시에 1일 때 제대로 동작하지 않는 문제를 해결하기 위해 사용된다.
동작원리
- 여러 입력 값 중 1이 여러개일 경우, 가장 중요한 입력 위치(또는 가장 덜 중요한 입력 위치)에 있는 1을 선택한다.
- 선택된 입력 위치에 해당하는 이진 코드를 출력한다.
- V 출력은 적어도 하나의 입력 값이 1인지 여부를 나타낸다.
입력 ( $D_3$, $D_2$, $D_1$, $D_0$ ) | 출력 ( $A_1$, $A_0$, $V$ ) |
0000 | xx,0 |
0001 | 00,1 |
001x | 01,1 |
01xx | 10,1 |
1xxx | 11,1 |
$A_0 = D_3 + D_1 \bar {D_2}$
$A_1 = D_2 + D_3$
$V = D_0 + D_1 + D_2 +D_3$
Encoder 설계
Decoder
Decoder의 정의
디코딩을 수행하는 회로를 디코더라고 한다.
디코더는 n개의 입력을 받아 $2^n$(또는 그 이하)의 출력을 생성한다.
디코딩은 n-bit 입력 코드를 m-bit 출력 코드로 변환하는 과정이다.
이때, $n \leq m \leq 2^n$ 의 조건을 만족하며, 각 유효한 코드 단어는 고유한 출력 코드를 생성한다.
Decoder 예시
1개의 입력을 받아 2개의 출력을 생성하는 1-to-2 Line Decoder의 예시이다.
2개의 입력을 받아 4개의 출력을 생성하는 2-to-4 Line Decoder의 예시이다.
- 출력 AND 게이트의 수: 4
- 출력 AND 게이트를 구동하는 디코더의 Input 개수 : 2
- 분할
- 두 개의 1-to-2 Line decoder
3개의 입력을 받아 8개의 출력을 생성하는 3-to-8 Line Decoder의 예시이다.
- 출력 AND 게이트의 수: 8
- 출력 AND 게이트를 구동하는 디코더의 Input 개수 : 2
- 분할
- 2-to-4 Line Decoder
- 1-to-2 Line Decoder
Decoder의 확장 방법
두 개의 작은 디코더를 결합하여 더 큰 디코더로 확장하는 방법이다.
두 디코더의 출력을 결합하여 더 큰 디코더를 만든다.
$n_1$-to-$2^{n1}$ Decoder $n_2$-to-$2^{n2}$ Decoder $2^{n1+n2}$ 2-input ANDs |
($n_1 + n_2$)-to-$2^(n_1+n_2)$ Decoder |
Decoder 설계
'Verilog-Basic' 카테고리의 다른 글
All Bit Zero/One Detector 설계 (0) | 2024.08.06 |
---|---|
9 Bit Parity Generator 설계 (0) | 2024.07.15 |
ALU(Arithmetic Logic Unit, 산술 논리 연산 장치) - ALU 74181 설계 (0) | 2024.07.11 |
Multiplexer (MUX, 멀티플렉서)/Demultiplexer(Demux) 설계 (0) | 2024.07.10 |
Carry-Lookahead Adder 설계 (0) | 2024.07.09 |