다중 레벨 이진 인코딩
From CS Wiki
Revision as of 15:25, 8 October 2024 by 파네라 (talk | contribs) (새 문서: 섬네일|다중 레벨 이진 인코딩 '''Multilevel Binary Encoding''' == Bipolar-AMI == '''Bipolar Alternate Mark Inversion''' 한국에서는 '''양극성 AMI''' 또는 '''양극성 대체 마크 반전'''이라는 표현들이 간혹 사용되나 영어 그대로 사용하는 경우가 많다. * 이진 값이 0일 땐 전압도 0이다. * 이진 값이 1일 땐 전압이 움직인다. 이때 교대로 움직인다. ** 첫번...)
Bipolar-AMI
Bipolar Alternate Mark Inversion
한국에서는 양극성 AMI 또는 양극성 대체 마크 반전이라는 표현들이 간혹 사용되나 영어 그대로 사용하는 경우가 많다.
- 이진 값이 0일 땐 전압도 0이다.
- 이진 값이 1일 땐 전압이 움직인다. 이때 교대로 움직인다.
- 첫번째 1은 양의 전압으로, 두번째 1은 음의 전압으로
- 1이 연속해서 나올 경우 양/음으로 진동한다.
알고리즘
def bipolar_ami(nrzl_input):
output = []
current_level = 0 # 0 means no signal
for bit in nrzl_input:
if bit == 1:
# 1이면 양의 전압과 음의 전압을 교대로 바꿈
current_level = 1 if current_level <= 0 else -1
output.append(current_level)
else:
# 0은 신호가 없음
output.append(0)
return output
# 실행 예시
nrzl_input = [0,1,0,0,1,1,0,0,0,1,1]
print("Bipolar-AMI:", bipolar_ami(nrzl_input))
Pseudoternary
한국에서는 유사 3진법이라는 표기가 간혹 쓰이나, 영어로 그대로 쓰는 경우가 많다.
- Bipolar-AMI와 동일한 방식이지만 이진값 0과 1에 대한 인식만 반대다.
- 이진 값이 1일 땐 전압이 0이다.
- 이진 값이 0일 땐 전압이 움직인다. 이때 교대로 움직인다.
- 첫번째 0은 양의 전압으로, 두번째 0은 음의 전압으로
- 0이 연속해서 나올 경우 양/음으로 진동한다.
알고리즘
def pseudoternary(nrzl_input):
output = []
current_level = 0 # 초기 상태는 0으로 가정 (전압 없음)
for bit in nrzl_input:
if bit == 0:
# 0일 때 전압이 교대로 반전 (양->음, 음->양)
current_level = 1 if current_level <= 0 else -1
output.append(current_level)
else:
# 1일 때는 전압 없음 (0)
output.append(0)
return output
# 실행 예시
nrzl_input = [0,1,0,0,1,1,0,0,0,1,1]
print("Pseudoternary:", pseudoternary(nrzl_input))
장단점
장점
- 직류 성분이 없다.
- 에러 탐지가 가능하다.
- 예를 들어 Bipolar-AMI에서 이진 비트 1값을 표현하려고 양의 전압이 쓰였으면 그 다음엔 음의 전압이 나와야 한다.
- 양의 전압 이후 0으로 유지되다가 다시 양의 전압이 사용되면 이는 오류다.
- ex) 0, 5, 0, 0, 5
- 0, 5, 0, 0 뒤에는 0 또는 -5 밖에 올 수 없다. 5가 왔다는 건 최소 하나의 신호가 전달되지 않았다는 뜻이다.
- 예를 들어 Bipolar-AMI에서 이진 비트 1값을 표현하려고 양의 전압이 쓰였으면 그 다음엔 음의 전압이 나와야 한다.
- 동기화가 가능하다.
- 필요 대역폭이 낮다.
단점
- 한 시그널이 1비트 밖에 표현하지 못한다.
- NRZ와 동일한 비효율성이다.
- 기본적으로 0, +, -로 이루어진 3-Level System은 Log23 = 1.58bit 을 전달할 능력이 있다.
- 그러나 다중 레벨 이진 인코딩은 고작 1bit만 전달한다.
- 리시버가 3가지 레벨을 인식할 수 있는 능력을 가져야 한다.
- 이는 같은 오류율을 유지하기 위해서 최소 3dB의 신호 강도가 필요하단 것이다.