Line Coding (선로 부호화)
1. Line Coding (선로 부호화)이란?
Line Coding은 디지털 데이터를 전기적 디지털 신호로 변환하는 과정이다. 이 과정에서 데이터를 전송 매체에 맞춰 변환함으로써 신호 왜곡을 줄이고, 오류 검출과 복구를 용이하게 하는 역할을 한다.
2. Line Code의 분류
2.1 Unipolar (단극형) ( A+, 0 )
Unipolar 방식은 신호를 하나의 전압 레벨로 표현한다. 즉, 데이터 비트가 1일 때는 일정한 전압(+A)을 사용하고, 비트가 0일 때는 0 전압을 사용한다. 이 방식은 단순하지만, DC 성분이 포함되기 쉽고, 클럭 동기화가 어렵기 때문에 장거리 전송에 적합하지 않다.
- 대표 방식 : Unipolar RZ, Unipolar NRZ
2.2 Polar (극형) ( +A, -A )
Polar 방식에서는 두 가지 전압 레벨이 사용되어 비트 1은 +A 전압으로, 비트 0은 -A 전압으로 표현된다. 이 방식은 Unipolar에 비해 신호의 변화가 더 뚜렷해져 클럭 복구 및 동기화에 유리하지만 여전히 DC 성분이 발생할 수 있다.
- 대표 방식 : Polar RZ, Polar NRZ, NRZI
2.3 Bipolar (양극형) ( +A, 0, -A )
Bipolar 방식은 세 가지 전압 레벨(+A, 0, -A)을 사용한다. 주로 비트 1을 +A와 -A로 교대로 표현하고, 비트 0은 0 전압으로 유지된다. 이 방식은 DC 성분을 제거하는 장점이 있고, 대칭적인 신호로 인해 데이터 전송의 신뢰성이 높이는데 유리하다.
- 대표 방식 : AMI(Bipolar RZ, Bipolar NRZ), BnZs, HDB-3, 4B3T
2.4 Split-phase (분할 위상형) ( +A, - A )
Split-phase형은 각 비트 주기 내에서 전압의 극성이 반드시 변화하는 방식이다. 즉, 1비트가 주어지면 주기 중간에 전압이 반전되어 클럭 동기화가 용이해지며, 신호 전환을 통해 데이터와 클럭 정보를 함께 전송할 수 있다. 이 방식은 전압 레벨이 양극(+A)과 음극(-A) 사이에서 변화하지만, 비트 값에 상관없이 반드시 주기 중간에 전압이 전환된다.
- 대표 방식 : Manchester
2.5 Multilevel (다준위형)
Multilevel은 신호를 표현하기 위해 2개의 전압 레벨이 아닌, 세 개 이상의 전압 레벨을 사용하는 방식이다. 이 방식은 동일한 주파수 대역에서 더 많은 정보를 전송할 수 있는 장점이 있다.
- 대표 방식 : 2B1Q
2.6 Multitransition (다천이형)
Multitransition은 데이터 전송 중 하나의 비트에서 여러 번 전압 변화가 일어나는 방식을 말한다. 이 방식은 전압 변화 패턴을 통해 데이터를 인코딩하며, 전송 중 발생할 수 있는 에러를 줄이고 클럭 동기화를 더 용이하게 만든다.
- 대표 방식 : MLT-3
2.7 Multiline (다선로형)
Multiline은 데이터를 전송할 때 여러 신호 선로를 사용하는 방식이다. 데이터를 인코딩한 후, 인코딩된 데이터를 여러 전송 선로를 통해 동시에 병렬로 전송함으로써 전송 속도를 크게 향상시킬 수 있다.
- 대표 방식 : 8B6T
2.8 mB/nB Block Code (블록코드 형)
Block Code는 데이터를 일정한 크기의 블록으로 나누고, 이를 다른 고정된 비율의 코드로 변환하여 전송하는 방식이다. 블록 코딩 방식은 연속된 0이나 1로 인한 클럭 동기화 문제를 해결하여 신호 전송의 신뢰성을 높이고, 오류 검출 및 수정 기능을 강화한다.
- 대표 방식 : 4B/5B, 8B/10B
3. Line Code의 종류
3.1 RZ (Return to Zero)
RZ 코딩은 각 비트 주기 내에서 신호가 중간에 0으로 돌아오는 방식이다. 예를 들어, 1을 나타낼 때는 먼저 +A의 전압을 사용하고, 주기 중간에 0으로 돌아온다. Polar 형일 경우에는 0일 때는 -A 전압을 사용하고, 역시 중간에 0으로 돌아온다.
3.2 NRZ (Non-Return-to-Zero)
NRZ 코딩은 RZ와 달리 비트 주기 내에서 신호가 0으로 돌아오지 않는다. 즉, 비트 1은 높은 전압(+A)로, 비트 0은 낮은 전압(-A) 또는 0 전압으로 유지된다.
3.3 NRZI (Non-Return-to-Zero Inverted)
NRZI 코딩은 NRZ의 변형으로 비트 1이 나올 때마다 신호가 반전되고, 비트 0일 때는 이전 신호 레벨을 유지한다. 즉, 전압 변화를 통해 데이터를 표현하는 방식이다.
3.4 2B1Q (2 Binary 1 Quaternary)
2B1Q는 2개의 이진 데이터(00, 01, 11, 10)를 1개의 4진 심볼(-3, -1, +1, +3)로 변환하여 전송하는 방식이다. 이진 데이터의 첫째 비트는 극성을, 둘째 비트는 심볼의 크기를 의미한다.
2B1Q는 1 심볼로 2 비트를 한 번에 전송하므로 전송 속도는 동일하면서 대역폭을 절반으로 절약할 수 있다.
3.5 4B/5B
4B/5B 코딩은 사전 정의된 변환 테이블을 사용해 4비트 데이터를 5비트로 변환하여 전송하는 방식이다. 해당 테이블의 5비트 패턴은 신호 전송 중에 연속된 0이나 1이 너무 길게 나오지 않도록 설계되어 있어 DC 균형을 유지하고 하여 신호 왜곡을 방지한다. 4B/5B 인코딩은 대표적으로 이더넷(100BASE-TX)에서 사용된다.
✔️ 100BASE-TX의 전송방식은 4B/5B 인코딩과 NRZI 인코딩을 결합한 형태인데 이더넷 물리계층의 부계층에서 해당 인코딩 디코딩 작업을 수행한다.
3.5 8B/10B
8B/10B 코딩역시 사전 변환 테이블을 이용하여, 8비트 데이터를 10비트로 변환해 전송하는 방식이다. 이 변환 테이블은 256개의 8비트 입력값을 각각 10비트로 변환하는 값을 정의하는데 DC 균형을 유지하기 위해 같은 데이터 값이라도 전송 중에 + 또는 -로 구분된 서로 다른 코드를 사용할 수 있다. 예를 들어, 0이 많이 전송되었다면 다음에는 1이 더 많은 패턴으로 보정하는 방식이다.
8B/10B 코딩은 주로 HDMI, PCI Express와 같은 고속 직렬 통신에서 사용되며, 신호의 균형을 유지하고 오류 검출 기능을 강화한다.
3.6 AMI (Alternate Mark Inversion)
AMI 코딩은 1을 전송할 때마다 +A와 -A로 번갈아가며 전송하고, 0은 0 전압으로 표현하는 방식이다. 주로 전화 네트워크에서 사용되며 DC 성분을 제거하고, 신호 전송의 균형을 맞추는 기능을 한다.
3.7 Manchester
Manchester 코딩은 각 비트의 중간에서 전압이 반드시 반전되는 방식이다. 비트 1은 0에서 1로 상향 천이하고, 0은 1에서 0으로 하향 천이한다. 이를 통해 클럭 정보와 데이터가 함께 전송되어 수신측에서 동기타이밍을 쉽게 찾을 수 있다. Manchester 방식은 주로 이더넷에서 사용된다.