오늘 주제는 아날로그의 대장이고 아날로그 변조방식의 백미~! 바로바로 FM방송 입니다.
여러 지상파FM방송이 많지만, 여기서는 RDS(Radio Data System) 서비스를 하는 몇 안되는 방송 중 KBS클래식FM(청주 94.1 ㎑ )를 선택했습니다. 영화 '파반느'에서 여주가 광고없는 클래식FM을 좋아하고 추천해 주죠. ㅎㅎㅎ

여기서는 FM방송의 주채널, 부채널, 파일럿, RDS를 살펴보고, mono와 stereo 음성 복조를 수행해볼게요!
마찬가지로 GQRX로 전파신호를 먼저 IQ데이터 형태로 캡처 합니다. 아래 그림 오른쪽 밑 RDS 디코딩도 동시에 되네요.
송신소에서 약 20km 밖 실내에서도 잘 수신되는 것이 새삼 놀랍네요.

이상태로는 용량이 너무 커서 한 채널을 포함하는 10초 길이의 240 ㎑ 대역폭 신호로 축소하고 작업을 시작할게요.
아래파일은 샘플레이트 240㎑ 이고, 1샘플은 64비트 복소수 입니다.
이제 RF신호를 베이스밴드신호로 복조를 합니다.
x가 메시지신호라고 할때, FM신호는 아래와 같이 표현할 수 있습니다.
FM(t) = A·cos{wct + kf·∫x(τ)dτ}
위상을 시간에 대해 미분하면, 순시주파수 wi(t) = wc + kf ·x(t) 가 되므로 연속된 샘플들 간의 위상 차이를 계산하여 FM 복조(Quadrature Demod)할 수 있습니다. FM 복조에서 편리한 점은 수신 신호의 진폭 변화가 AM 라디오와 달리 오디오 볼륨을 실제로 바꾸지 않는다는 것입니다.
-xp<x(t)<xp를 만족하므로 FM변조된 신호의 최대 주파수 변화(편이) △w = 2xpkf , 편이비 β = △w/wm , 일반적으로 β>0.2인 경우 WFM이라고 합니다.

복조한 결과를 보면, 흔히 MPX 혹은 컴포지트 신호라 불리는 아래같은 기저대역 스펙트럼을 볼 수 있습니다. 당황스럽긴 한데, 압축을 풀었더니 그 속에 또 압축파일이 있는 느낌이에요.
< MPX 혹은 컴포지트 신호 >
ㅇ 모노와 스테레오 오디오는 단순히 아날로그 오디오 신호를 전달하며, 더하고 빼면 왼쪽과 오른쪽 채널이 나옴
ㅇ 19 kHz 파일럿 톤은 스테레오 오디오를 복조하는 데 사용됩니다. 톤을 두 배로 하면 스테레오 오디오 신호가 38 ㎑에 위치해 있기 때문에 주파수와 위상 기준 역할을 합니다.
ㅇ RDS는 57 ㎑ 채널(대역폭 약 4 ㎑)에서 방송국 식별, 프로그램 정보, 시간 및 기타 기타 정보를 BPSK로 초당 1187.5개의 심볼 전송ㅇ SCA는 67 ㎑ 채널 사용하여 스테레오 음성 보조 프로그램(보조 채널) 전송. 사용하지 않는 것 같음ㅇ RDS2는 새로운 확장표준으로, UTF-8 문자 인코딩, 그래픽 RadioText, 하이브리드 라디오 기능 등을 지원.중심주파수는 57 ㎑ , 66.5 ㎑ , 71.25 ㎑ , 76 ㎑ 이용
스테레오FM방송은 전파형식이 260KF9W 으로 표현되는데, 이는 변조형식:FM(F)·신호특성:아날로그와 디지털 채널 조합-MPX(9),정보형태:음악와 데이터 조합(W)과 카슨법칙에 따른 대략 대역폭 2*(편이 75 ㎑ + 신호최대주파수 59 ㎑ ) ≒ 260 ㎑ 를 의미합니다.

그다음은 복조한 신호가 이미 오디오의 고주파수대역을 높인 프리엠파시스를 적용했기때문에 (아래 주파수응답 참조),
다시 최종 원음으로 복원하기 위해서는 디엠파시스를 필터처리해야 합니다.

바로 (15 ㎑ 이상 불필요한 부분은 날려 버리는) 다운샘플링해서 '94.1_classic_Pre-emphasis_mono' 오디오를 만들고,
디엠파시스 필터를 적용하여 원래대로 복원한 후 다운샘플링해서 '94.1_classic_De-emphasis_mono' 오디오 생성하고,
디엠파시스 필터를 적용한 주채널(L+R)과 주파수이동하고 디엠파시스 필터적용한 부채널(L-R)를 더하거나 빼서 좌우 입체음향을 주는 '94.1_classic_De-emphasis_stereo' 오디오 생성합니다.
![]() Pre-emphasis_mono |
![]() |
프리엠파시스 적용된 mono오디오는 고대역이 강조되어 날카로운 느낌이고, 디엠파시스 적용 mono는 가장자리가 처지면서 둥글둥글한 느낌이네요. 일단 둘 다 충분히 고음질로 느껴집니다. 다만, 15 ㎑ 이상 초음파에 가까워질 수록 나이가 들면 잘 안들리고(ㅠㅠ) 음질에 크게 영향을 끼치지 않아서 FM방송에서도 제한한다고 합니다.
마지막으로 아래 참고자료1를 보면, RDS도 디코딩이 가능한데 복잡해서 여기서는 생략하고 수행했던 소스코드를 공유할게요.
읽어주셔서 감사드립니다! 다음에는 BPSK 디코딩을 해 보겠습니다!! 두둥!!
<참고자료>
1. End-to-End Example | PySDR: A Guide to SDR and DSP using Python
'통신이론' 카테고리의 다른 글
| SSTV 디코딩 실습(feat. Robot8, 24, 36) (0) | 2026.01.29 |
|---|---|
| ATIS_비행정보방송(feat. SDR) (0) | 2025.12.18 |
| 동기화(Synchronization) (0) | 2025.09.30 |
| 간단한 OFDM 체험기 (8) | 2025.08.15 |
| 대역확산스펙트럼 기술들(DSSS, FHSS) (1) | 2025.06.17 |

