이중 위상 인코딩: Difference between revisions

From IT Wiki
No edit summary
No edit summary
 
Line 1: Line 1:
* '''상위 문서: [[디지털 신호 인코딩]]'''
'''Biphase Encoding'''
'''Biphase Encoding'''


Line 39: Line 41:


=== 알고리즘 코드 ===
=== 알고리즘 코드 ===
<syntaxhighlight lang="python3" line="1">
def differential_manchester(nrzl_input):
    output = []
    previous_level = 0  # Assume initial level is high (0)
   
    for bit in nrzl_input:
        if bit == 0:
            # Transition at the start, and again in the middle
            output.append((1 - previous_level, previous_level))
        else:
            # No transition at the start, transition in the middle
            output.append((previous_level, 1 - previous_level))
            previous_level = 1 - previous_level  # Always flip in the middle
   
    return output
# 실행 예시
nrzl_input = [0,1,0,0,1,1,0,1,0,0]
print("Differential Manchester:", differential_manchester(nrzl_input))
</syntaxhighlight>
* 결과 값: Differential Manchester: [(1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (1, 0), (1, 0)]


== 장단점 ==
== 장단점 ==
Line 56: Line 80:


[[파일:NRZ와 맨체스터 변조율 차이.png]]
[[파일:NRZ와 맨체스터 변조율 차이.png]]
== 같이 보기 ==
* [[NRZ 인코딩]]
* [[다중 레벨 이진 인코딩]]
* [[스크램블 인코딩]]

Latest revision as of 02:41, 10 October 2024

Biphase Encoding

이중 위상 인코딩은 한 신호 안에 두개의 위상이 다 있기 때문에 이중 위상(Biphase)이라고 불린다. 한 신호 안에서 올라가고 내려가는 방향을 통해 0 또는 1을 나타낸다.

맨체스터(Manchester)[edit | edit source]

500x500픽셀

  • 각 이진 값을 전달하는 그 사이에 전압이 바뀐다.
    • 중간에 올라가면 1, 중간에 내려가면 0이다.

알고리즘 코드[edit | edit source]

def manchester(nrzl_input):
    output = []
    for bit in nrzl_input:
        if bit == 0:
            output.append((1, 0))  # High-to-low transition
        else:
            output.append((0, 1))  # Low-to-high transition
    return output

# 실행 예시
nrzl_input = [0,1,0,0,1,1,0,0,0,1,1]
print("Manchester:", manchester(nrzl_input))

변동 맨체스터(Differential Manchester)[edit | edit source]

500x500픽셀

  • 한 신호 중간에 항상 전압이 바뀌는 것은 동일하다.
    • 단 변동 맨체스터 기법에서 중간의 전압 변동은 동기화를 위해서만 사용된다.
  • 이진 값이 무엇이냐에 따라 방향이 전환되거나 유지되거나 한다.
    • 이진 값이 0이면 방향이 유지된다.
    • 이진 값이 1이면 방향이 전환된다.
  • 다른 말로 하면 다음 비트가 무엇이냐에 따라 시작 비트가 바뀌거나 유지되거나 한다.
    • 이진 값이 0이면 시작 위치가 바뀐다. (중간에 변동이 있어야 하므로, 시작 위치가 바뀐다는 건 방향이 유지된다는 것이다.)
    • 이진 값이 1이면 시작 위치가 유지된다. (중간에 변동이 있어야 하므로, 시작 위치가 유지 된다는 건 방향이 바뀐다는 뜻이다.)
  • IEEE 802.5에서 사용된다.

알고리즘 코드[edit | edit source]

def differential_manchester(nrzl_input):
    output = []
    previous_level = 0  # Assume initial level is high (0)
    
    for bit in nrzl_input:
        if bit == 0:
            # Transition at the start, and again in the middle
            output.append((1 - previous_level, previous_level))
        else:
            # No transition at the start, transition in the middle
            output.append((previous_level, 1 - previous_level))
            previous_level = 1 - previous_level  # Always flip in the middle
    
    return output

# 실행 예시
nrzl_input = [0,1,0,0,1,1,0,1,0,0]
print("Differential Manchester:", differential_manchester(nrzl_input))
  • 결과 값: Differential Manchester: [(1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (1, 0), (1, 0)]

장단점[edit | edit source]

장점[edit | edit source]

  • 동기화가 용이하다:
    • 중간에 전압이 바뀌므로 어디가 시작점이고 끝점인지 판단하기가 명확하다.
  • DC 성분이 없다.
  • 에러 탐지가 가능하다.
    • 중간에 전압이 안 바뀌면 에러

단점[edit | edit source]

  • 큰 대역폭이 요구된다.
  • 최대 NRZ 대비 2배의 변조율(modulation rate)이 사용된다.

NRZ와 맨체스터 변조율 차이.png

같이 보기[edit | edit source]