다중 레벨 이진 인코딩: Difference between revisions

From IT Wiki
(새 문서: 섬네일|다중 레벨 이진 인코딩 '''Multilevel Binary Encoding''' == Bipolar-AMI == '''Bipolar Alternate Mark Inversion''' 한국에서는 '''양극성 AMI''' 또는 '''양극성 대체 마크 반전'''이라는 표현들이 간혹 사용되나 영어 그대로 사용하는 경우가 많다. * 이진 값이 0일 땐 전압도 0이다. * 이진 값이 1일 땐 전압이 움직인다. 이때 교대로 움직인다. ** 첫번...)
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[파일:다중 레벨 이진 인코딩.png|섬네일|다중 레벨 이진 인코딩]]
[[파일:다중 레벨 이진 인코딩.png|섬네일|다중 레벨 이진 인코딩]]
* '''상위 문서: [[디지털 신호 인코딩]]'''
'''Multilevel Binary Encoding'''
'''Multilevel Binary Encoding'''


Line 65: Line 68:
=== 장점 ===
=== 장점 ===


* 직류 성분이 없다.
* '''직류 성분이 없다:'''
* 에러 탐지가 가능하다.
** 멀티레벨 바이너리 신호는 평균적으로 양의 전압과 음의 전압이 균형을 이루어 순 DC 성분이 없다.
** 이는 장거리 전송 시 DC 성분으로 인한 신호 왜곡을 줄이는 데 도움이 된다.
* '''에러 탐지가 가능하다:'''
** 예를 들어 Bipolar-AMI에서 이진 비트 1값을 표현하려고 양의 전압이 쓰였으면 그 다음엔 음의 전압이 나와야 한다.
** 예를 들어 Bipolar-AMI에서 이진 비트 1값을 표현하려고 양의 전압이 쓰였으면 그 다음엔 음의 전압이 나와야 한다.
*** 양의 전압 이후 0으로 유지되다가 다시 양의 전압이 사용되면 이는 오류다.
*** 양의 전압 이후 0으로 유지되다가 다시 양의 전압이 사용되면 이는 오류다.
** ex) 0, 5, 0, 0, 5  
** ex) 0, 5, 0, 0, 5  
*** 0, 5, 0, 0 뒤에는 0 또는 -5 밖에 올 수 없다. 5가 왔다는 건 최소 하나의 신호가 전달되지 않았다는 뜻이다.
*** 0, 5, 0, 0 뒤에는 0 또는 -5 밖에 올 수 없다. 5가 왔다는 건 최소 하나의 신호가 전달되지 않았다는 뜻이다.
* 동기화가 가능하다.
* '''동기화가 가능하다.'''
* 필요 대역폭이 낮다.
** 위에서 설명하였듯이 극성 변화로 인해 일부 예상되는 신호가 있으므로 이를 이용해 동기화를 정확하게 유지할 수 있다.
* '''필요 대역폭이 낮다.'''


=== 단점 ===
=== 단점 ===
 
아래 내용을 실제로는 거의 동일한 단점을 여러 관점에서 설명한 것이다. 주로 NRZ에 비해 효율이 떨어지는 단점에 관한 내용들이다.
* 한 시그널이 1비트 밖에 표현하지 못한다.
* '''NRZ(Non-Return-to-Zero)만큼 효율적이지 않음:'''
** NRZ와 동일한 비효율성이다.  
** NRZ 방식은 두 가지 레벨(예: 0과 1)만 사용하여 데이터를 전송한다.
* 기본적으로 0, +, -로 이루어진 3-Level System은 Log<sub>2</sub>3 = 1.58bit 을 전달할 능력이 있다.
** 반면에 멀티레벨 바이너리는 더 많은 레벨을 사용하지만, 각 신호 요소가 비트만을 나타내므로 정보 밀도가 낮아질 수 있다.
** 그러나 다중 레벨 이진 인코딩은 고작 1bit만 전달한다.
* '''각 신호 요소가 한 비트만을 나타냄:'''
* 리시버가 3가지 레벨을 인식할 수 있는 능력을 가져야 한다.
** 멀티레벨 바이너리에서 각 신호 요소는 단일 비트 정보만을 나타내므로, 정보 전송 효율이 떨어질 수 있다.  
** 이는 같은 오류율을 유지하기 위해서 최소 3dB의 신호 강도가 필요하단 것이다.
** 예를 들어, NRZ에서는 두 가지 상태(0과 1)만을 사용하여 한 비트를 나타내지만, 멀티레벨 바이너리에서는 여러 상태를 사용해도 각 신호가 한 비트만을 나타낼 수 있다.
* '''3레벨 시스템에서는 log2(3) = 1.58 비트를 나타낼 수 있음:'''
** 3레벨 시스템에서는 세 가지 상태(+A, -A, 0)를 사용한다.  
** 이 경우, 정보 이론적으로는 log2(3) ≈ 1.58 비트를 나타낼 수 있지만, 실제로는 각 신호 요소가 한 비트만을 나타내기 때문에 이론적인 정보 밀도를 완전히 활용하지 못한다.
* '''수신기가 세 가지 레벨을 구분해야 함 (+A, -A, 0):'''
** 수신기는 +A, -A, 0의 세 가지 신호 레벨을 정확히 구분해야 한다.  
** 이는 두 가지 레벨만 구분하는 것보다 더 복잡하고, 신호 간섭이나 잡음이 있을 때 오류가 발생할 가능성이 높다.
* '''동일한 비트 오류 확률을 위해 약 3dB 더 많은 신호 전력이 필요함:'''
** 멀티레벨 신호는 더 많은 레벨을 구분해야 하므로, 동일한 비트 오류 확률을 유지하기 위해 더 강한 신호 전력이 필요하다.
** 이는 수신기가 신호를 정확히 구분할 수 있도록 하기 위함.


== 같이 보기 ==
== 같이 보기 ==
Line 87: Line 102:
* [[NRZ 인코딩]]
* [[NRZ 인코딩]]
* [[이중 위상 인코딩]]
* [[이중 위상 인코딩]]
* [[스크램블 인코딩]]

Latest revision as of 04:06, 10 October 2024

다중 레벨 이진 인코딩

Multilevel Binary Encoding

Bipolar-AMI[edit | edit source]

Bipolar Alternate Mark Inversion

한국에서는 양극성 AMI 또는 양극성 대체 마크 반전이라는 표현들이 간혹 사용되나 영어 그대로 사용하는 경우가 많다.

  • 이진 값이 0일 땐 전압도 0이다.
  • 이진 값이 1일 땐 전압이 움직인다. 이때 교대로 움직인다.
    • 첫번째 1은 양의 전압으로, 두번째 1은 음의 전압으로
    • 1이 연속해서 나올 경우 양/음으로 진동한다.

알고리즘[edit | edit source]

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[edit | edit source]

한국에서는 유사 3진법이라는 표기가 간혹 쓰이나, 영어로 그대로 쓰는 경우가 많다.

  • Bipolar-AMI와 동일한 방식이지만 이진값 0과 1에 대한 인식만 반대다.
  • 이진 값이 1일 땐 전압이 0이다.
  • 이진 값이 0일 땐 전압이 움직인다. 이때 교대로 움직인다.
    • 첫번째 0은 양의 전압으로, 두번째 0은 음의 전압으로
    • 0이 연속해서 나올 경우 양/음으로 진동한다.

알고리즘[edit | edit source]

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))

장단점[edit | edit source]

장점[edit | edit source]

  • 직류 성분이 없다:
    • 멀티레벨 바이너리 신호는 평균적으로 양의 전압과 음의 전압이 균형을 이루어 순 DC 성분이 없다.
    • 이는 장거리 전송 시 DC 성분으로 인한 신호 왜곡을 줄이는 데 도움이 된다.
  • 에러 탐지가 가능하다:
    • 예를 들어 Bipolar-AMI에서 이진 비트 1값을 표현하려고 양의 전압이 쓰였으면 그 다음엔 음의 전압이 나와야 한다.
      • 양의 전압 이후 0으로 유지되다가 다시 양의 전압이 사용되면 이는 오류다.
    • ex) 0, 5, 0, 0, 5
      • 0, 5, 0, 0 뒤에는 0 또는 -5 밖에 올 수 없다. 5가 왔다는 건 최소 하나의 신호가 전달되지 않았다는 뜻이다.
  • 동기화가 가능하다.
    • 위에서 설명하였듯이 극성 변화로 인해 일부 예상되는 신호가 있으므로 이를 이용해 동기화를 정확하게 유지할 수 있다.
  • 필요 대역폭이 낮다.

단점[edit | edit source]

아래 내용을 실제로는 거의 동일한 단점을 여러 관점에서 설명한 것이다. 주로 NRZ에 비해 효율이 떨어지는 단점에 관한 내용들이다.

  • NRZ(Non-Return-to-Zero)만큼 효율적이지 않음:
    • NRZ 방식은 두 가지 레벨(예: 0과 1)만 사용하여 데이터를 전송한다.
    • 반면에 멀티레벨 바이너리는 더 많은 레벨을 사용하지만, 각 신호 요소가 한 비트만을 나타내므로 정보 밀도가 낮아질 수 있다.
  • 각 신호 요소가 한 비트만을 나타냄:
    • 멀티레벨 바이너리에서 각 신호 요소는 단일 비트 정보만을 나타내므로, 정보 전송 효율이 떨어질 수 있다.
    • 예를 들어, NRZ에서는 두 가지 상태(0과 1)만을 사용하여 한 비트를 나타내지만, 멀티레벨 바이너리에서는 여러 상태를 사용해도 각 신호가 한 비트만을 나타낼 수 있다.
  • 3레벨 시스템에서는 log2(3) = 1.58 비트를 나타낼 수 있음:
    • 3레벨 시스템에서는 세 가지 상태(+A, -A, 0)를 사용한다.
    • 이 경우, 정보 이론적으로는 log2(3) ≈ 1.58 비트를 나타낼 수 있지만, 실제로는 각 신호 요소가 한 비트만을 나타내기 때문에 이론적인 정보 밀도를 완전히 활용하지 못한다.
  • 수신기가 세 가지 레벨을 구분해야 함 (+A, -A, 0):
    • 수신기는 +A, -A, 0의 세 가지 신호 레벨을 정확히 구분해야 한다.
    • 이는 두 가지 레벨만 구분하는 것보다 더 복잡하고, 신호 간섭이나 잡음이 있을 때 오류가 발생할 가능성이 높다.
  • 동일한 비트 오류 확률을 위해 약 3dB 더 많은 신호 전력이 필요함:
    • 멀티레벨 신호는 더 많은 레벨을 구분해야 하므로, 동일한 비트 오류 확률을 유지하기 위해 더 강한 신호 전력이 필요하다.
    • 이는 수신기가 신호를 정확히 구분할 수 있도록 하기 위함.

같이 보기[edit | edit source]