Encoder/Decoder 설계

 

 

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 설계

Encoder Simulation Waveform

 

 

 

Decoder

 

Decoder의 정의

디코딩을 수행하는 회로를 디코더라고 한다.

디코더는 n개의 입력을 받아 $2^n$(또는 그 이하)의 출력을 생성한다.

 

디코딩은 n-bit 입력 코드를 m-bit 출력 코드로 변환하는 과정이다. 

이때, $n \leq m \leq 2^n$ 의 조건을 만족하며, 각 유효한 코드 단어는 고유한 출력 코드를 생성한다.

 

Decoder 예시

1-to-2 Line Decoder

1개의 입력을 받아 2개의 출력을 생성하는 1-to-2 Line Decoder의 예시이다.

 

 

2-to-4 Line Decoder

2개의 입력을 받아 4개의 출력을 생성하는 2-to-4 Line Decoder의 예시이다.

 

  • 출력 AND 게이트의 수: 4
  • 출력 AND 게이트를 구동하는 디코더의 Input 개수 : 2
  • 분할
    • 두 개의 1-to-2 Line decoder

3-to-8 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 설계

Decoder Simulation Waveform