NRZ 인코딩
From IT Wiki
- 상위 문서: 디지털 신호 인코딩
Non-Return to Zero
참고로 아래 문서에서 말하는 +5v는 그냥 예를 들기 위한 전압이다. 항상 +5v여야 하는 것은 아니며 그냥 특정 양의 전압 또는 음의 전압이면 된다.
NRZ-L
Non-Return to Zero-Level
- 두개의 다른 볼트(예를 들어 0과 +5V)가 0과 1비트에 맞게 변한다.
- 하나의 볼트값은 하나의 비트에 할당된다. 예를 들어 0을 +5v에 할당할 경우
- 011011은
- 0v, +5v, +5v, 0v, +5v, +5v로 변환된다.
장점
- 매우 직관적이다.
- 구현이 간단하고 경제적이다.
단점
- 동기화가 매우 어렵다. 1클럭만 어긋나버려도 모든 값이 달라진다.
- 특히 연속된 값 중 동기화가 어긋나면 이를 교정할 방법이 없다.
NRZI
Non-Return to Zero Inverted
- 바이너리 값이 1일 때만 값이 변한다.
- 즉 볼트값이 0v에서 +5v로 바뀌는 것, 그리고 +5v에서 0v로 바뀌는 것은 모두 값이 1이라는 것이다.
- 1값이 연속될 경우 볼트가 계속 진동한다.
- 볼트값이 0v이든 +5v이든 멈춰 있다면 그건 0이라는 의미이다.
예시
아래 예시에서 0은 0v, 5는 +5v를 의미한다.
- 예시1
- 0, 1, 0, 0
- 0, 5, 5, 5
- 예시2
- 0, 1, 0, 1
- 0, 5, 5, 0
- 예시3
- 0, 1, 1, 1, 1, 0
- 0, 5, 0, 5, 0, 0
알고리즘
Python 함수
def nrzi(nrzl_input):
output = []
current_level = 0 # 초기 상태는 0으로 가정 (낮은 전압)
for bit in nrzl_input:
if bit == 1:
current_level = 1 - current_level # 1이면 상태 변경 (반전)
output.append(current_level) # 상태 유지 또는 반전된 값 기록
return output
# 실행 예시
nrzl_input = [0,1,0,0,1,1,0,0,0,1,1]
print("NRZI:", nrzi(nrzl_input))