|
|
Line 1: |
Line 1: |
| '''Non-Return to Zero'''
| | #넘겨주기 [[NRZ 인코딩]] |
| | |
| 참고로 아래 문서에서 말하는 +5v는 그냥 예를 들기 위한 전압이다. 항상 +5v여야 하는 것은 아니며 그냥 특정 양의 전압 또는 음의 전압이면 된다.
| |
| [[파일:NRZ 기법.png|대체글=NRZ-L과 NRZI 기법|섬네일|NRZ-L과 NRZI 기법]] | |
| | |
| == 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 함수<syntaxhighlight lang="python3" line="1">
| |
| 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))
| |
| </syntaxhighlight>
| |