포스트

[데이터통신] 변조와 복조, 디지털 to 아날로그

서론

지난 시간에는 PCM을 기반으로 아날로그 신호를 디지털화해서 송/수신을 진행했습니다.

하지만 반대로 디지털 신호를 아날로그화 해서 송/수신 할 수는 없을까요?

됩니다! 디지털 신호를 아날로그 신호를 바꿔봅시다.

핵심 용어 정리

변조(modulation) 정의

변조란, 디지털 신호를 아날로그 신호로 바꾸는 것을 말합니다.

변조가 필요한 이유

단순히 디지털 신호를 보낸다면, 손실·간섭·속도에 제한이 생깁니다.

우선 알아야 할 것이.. 전선이든 무선 랜이든 채널(=물리 매체)은 아날로그 신호만 전달 가능하다는 것을 알아야 합니다.

그렇다면 아날로그 신호로 보내야하는데 굳이 1/0으로 만들어 보낼 수 없죠. 그래서 디지털 신호를 아날로그 신호로 바꾸는 변조라는 기술이 있는 것입니다.

복조(demodulation)

그렇다면, 디지털에서 아날로그 신호를 바꾼 복조가 있다면, 이를 다시 아날로그 -> 디지털 신호로 바꿔줄 존재가 필요한데, 그게 바로 복조입니다.

모뎀(modem: modulation and demodulation)

모뎀의 종류

이러한 두 쌍을 모뎀이라고 부를 수 있습니다.

그렇다면 어떻게 아날로그 신호를 여러 개의 상태로 표현할 수 있을까요?

방법 4개가 있습니다.

  1. ASK(Amplitude Shift Keying) (기준: 진폭)
  2. FSK(Frequency Shift Keying) (기준: 주파수)
  3. PSK(Phase Shift Keying) (기준: 위상)
  4. QAM(Quadrature Amplitude Modulation) (기준: 진폭 + 위상)

이 4가지 방법에 대해 알아봅시다.

ASK

송신(변조)는 binary 신호에 따라 진폭이 다른 사인파를 보내주기만 하면 됩니다.

수신(복조)는 여러 가지 방법을 사용해 복원할 수 있는데.

대표적으로 다음과 같은 방법이 존재합니다.

  1. 표준편차 이용
  2. 에너지 계산(신호의 제곱합)
  3. 동기 검파(수신 측에서 동일한 캐리어를 다시 생성해서 입력 신호와 곱한 뒤 적분한다는데.. 솔직히 무슨 소린지 잘 모르겠습니다.)
  4. 비동기 검파(입력 신호의 진폭 외피를 추적하는 방식으로도 가능한데, 진폭 외피가 뭔지 잘 모르겠습니다.)

실습 때 합니다..!

FSK

송신(변조)는 binary 신호에 따라 주파수가 다른 사인파를 보내주기만 하면 됩니다.

수신(복조)는 여러 가지 방법을 사용해 복원할 수 있는데,

그중 가장 대표적인 방법은, Fast Fourier Transform(FFT) 알고리즘을 이용해 주파수를 분리하는 것입니다.

FFT로 주요 주파수를 찾고, start신호, end신호 등을 이용해 데이터 수집, 디코딩을 진행합니다.

  • FFT를 이용해, 주요 주파수가 아닌 주파수를 필터링 할 수 있습니다.
  • bit chunk 단위로 변환 후 바이트 생성
  • reed-solomon 코드로 검증
1
2
3
4
5
6
7
8
def dominant(frame_rate, chunk):
    w = np.fft.fft(chunk)
    freqs = np.fft.fftfreq(len(chunk))
    
    peak_coeff = np.argmax(np.abs(w))
    peak_freq = freqs[peak_coeff]
    
    return abs(peak_freq * frame_rate)  # in Hz 

코드에서도 볼 수 있듯이, FSK 방식을 사용할 때 주파수와 시간길이를 약속해야합니다.

이외에도 필터기반, 제로 크로싱 등의 다양한 방법이 존재합니다.

PSK

송신(변조)는 binary 신호에 따라 위상이 다른 사인파를 보내주기만 하면 됩니다.

수신(복조)는 여러 가지 방법을 사용해 복원할 수 있는데.

  1. 동기 복조
  2. 비동기 복조

가 존재합니다. 주파수를 절대적으로 계산하냐, 상대적으로 계산하냐 정도의 차이입니다.

QAM(ASK + PSK 에 가까움)

위 3가지 방법은 2가지 상태만 써서 1비트를 전송할 수 있습니다.

반면, QAM은 진폭과 크기의 조합을 이용해 한 번에 여러 비트를 전송할 수 있습니다.

복조 과정은, 이러한 점들은 2차원 평면 위에 존재하는데, 최근접 심볼 점을 찾아 해당 비트를 복원합니다.

높은 QAM을 사용하려면 SNR(신호대잡음비)가 충분히 높아야 합니다. 일종의 속도와 잡음의 트레이드오프입니다.

아래는 QAM을 표현하는 수식입니다.

\[s(t) = I \cdot \cos(2\pi f_c t) + Q \cdot \sin(2\pi f_c t)\] \[A = \sqrt{I^2 + Q^2}\] \[\phi = \arctan\left(\frac{Q}{I}\right)\] \[s(t) = \Re \left\{ A e^{j(2\pi f_c t + \phi)} \right\}\]

모뎀의 진행 단계

FSK를 포함한 여러 통신 방식에서는 다음과 같은 단계를 거쳐 데이터가 전송됩니다:

  1. 초기 신호 송신 (carrier tone, 주파수 협상)
    • 예: 2100 Hz 또는 2600 Hz 사용
    • 상대방과의 연결을 알리고 통신 준비
  2. 핸드셰이크 (프로토콜 협상)
    • 속도 협상 (예: 56 kbps vs. 33.6 kbps)
    • 사용 가능한 모드 결정
  3. 동기화 및 압축 설정
    • 데이터 압축 여부 결정
    • 타이밍 동기화 및 흐름 제어 협상
  4. 본 데이터 전송
    • 실제 데이터는 다양한 변조 방식으로 전송:
      • 주파수 변조 (FSK)
      • 위상 변조 (PSK/PM)
      • 진폭 변조 (ASK/AM)
      • 또는 이들의 조합 (예: QAM)
  5. 연결 종료
    • 세션 종료 신호 송신
    • 자원 해제

의 순서로 진행됩니다!

송신자의 오류 복구 비트

앞서 살펴본 4가지 방법을 진폭 주파수 크기만 바꾸는 것이 아닌, 오류 복구 비트까지 포함하여 송신할 수 있습니다.

다음과 같은 작업을 수행합니다.

  1. 보낼 텍스트에 대해서 Reed Solomon 인코딩 계산하기
  2. handshake start frequency 전송하기
  3. 보낼 텍스트 chunk 비트크기로 나누고, 해당 주파수로 변환하기
  4. handshake end frequency 전송하기

Reed-solomon

근데 Reed-solomon Code가 뭘까요..?

갈루아체 수학 이론 기반으로, $n$개 데이터 전송시 $k$개 심볼이 원래 데이터, $n-k$개 심볼이 오류 정정 코드라고 하면, $\frac{n-k}{2} = t$개 이하 오류라면, 어떤 오류라도 고칠 수 있음.

이외의 에러 탐지와 복구 기술들

  1. CRC, 이더넷에서 사용하고, 오류 탐지 전용이다.
  2. Checksum, IP/TCP/UDP에서 사용하고, 헤더 한정 단순 오류 탐지에 강하다.
  3. FEC, 멀티미디어에서 사용되고 오류 정정까지 강한 기법이다.

FEC로 Hamming Code, BCH, Reed-solomon Code등이 존재한다.

아날로그 데이터를 아날로그 신호로 바꾸기

AM: 신호의 진폭(A)을 아날로그 데이터에 따라 바꿈

FM: 신호의 주파수를 아날로그 데이터에 따라 바꿈

  1. Modulating signal 원본 신호가 있다고 해봅시다.
  2. 고정 주파수를 갖는 사인파가 존재하면
  3. 이를 기준으로 주파수를 증가/감소시켜 FM 신호를 얻는 방식입니다.

PM: 신호의 위상(phase)를 아날로그 데이터에 따라 변화시킴

아날로그 변조 방식은 캐리어 신호의 특정 속성(진폭, 주파수, 위상)을 아날로그 데이터에 따라 변화시켜, 정보를 전파에 실어 보내는 기술입니다.

LTE(Long term evolution) 모뎀

LTE는 4세대 이동통신표준으로써 스마트폰과 기지국 간의 무선 통신의 핵심 기반입니다.

다양한 프로토콜 기술이 물리적으로 결합되어있습니다!

  1. 주파수가 커 여러 국가 나라에서 다양한 대역을 사용합니다.
  2. 대역폭을 묶어 전송 속도 향상이 가능합니다.
  3. 송신 전력을 최소화해 전력을 아낍니다, 실시간 조정, 기지국 간 간섭을 줄입니다.
  4. 하나의 단말기/기지국에서 여러 안테나를 사용합니다.
  5. 신뢰성 향상을 위해 중복 정보를 제공합니다.
  6. 오류가 있는 경우, 빠르게 재전송 요청, 이전 데이터 부분적 활용, 지연 감소, 신뢰성 향상 등의 효과가 있습니다!
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.