소프트웨어 정의 라디오를 사용한 신호 수신
이 예제에서는 SDR Receiver 앱을 사용하여 신호를 수신하도록 소프트웨어 정의 라디오(SDR)를 조정하는 방법을 보여줍니다. 이 예제에서는 다음을 수행합니다.
- 연속 신호 수신을 위해 SDR을 구성합니다. 
- IQ 샘플, 파워 스펙트럼 및 성상도를 시각화합니다. 
- RF 손상을 보정합니다. 
- 앱 구성을 MATLAB™ 스크립트로 내보냅니다. 
필요한 하드웨어와 소프트웨어
이 예제를 실행하려면 다음 라디오 중 하나와 해당 소프트웨어 지원 패키지가 필요합니다.
- USRP™ N2xx 시리즈 또는 B2xx 시리즈 라디오 및 Communications Toolbox Support Package for USRP Radio. 자세한 내용은 USRP 라디오 및 Supported Hardware and Required Software 항목을 참조하십시오. 
- USRP™ N3xx 시리즈, X 시리즈 또는 E320 라디오 및 Wireless Testbench Support Package for NI USRP Radios. 자세한 내용은 Supported Radio Devices (Wireless Testbench)(Wireless Testbench) 항목을 참조하십시오. 
- ADALM-PLUTO 라디오 및 Communications Toolbox Support Package for Analog Devices® ADALM-PLUTO Radio. 자세한 내용은 ADALM-Pluto 라디오 항목을 참조하십시오. 
- RTL-SDR 라디오 및 Communications Toolbox™ Support Package for RTL-SDR Radio. 자세한 내용은 RTL-SDR 라디오 항목을 참조하십시오. 
소개
SDR은 디지털 기능을 수행하기 위해 FPGA 또는 프로그래밍할 수 있는 시스템 온 칩(SoC)을 탑재한 구성 가능한 RF 프론트엔드로 구성된 무선 장치입니다. 상업적으로 사용되는 SDR은 FM, LTE, WLAN, 5G와 같은 무선 표준을 구현하기 위해 다양한 주파수에서 신호를 송신하고 수신합니다.

SDR을 사용할 때 사용자는 다음 문제에 마주치게 됩니다.
- 올바른 이득 값 얻기. 
- 올바른 위상 및 주파수 오프셋 값 식별하기. 
SDR Receiver 앱을 사용하면 선택한 SDR의 이득을 대화형 방식으로 조정하고 위상은 물론 성긴 주파수 오프셋과 조밀 주파수 오프셋을 모두 얻을 수 있습니다. 이 영상은 SDR Receiver 앱에서 사용되는 워크플로의 개략도를 보여줍니다.
SDR Receiver 앱 열기
다음 명령을 실행하여 SDR Receiver 앱을 엽니다.
app = SDRReceiver();

SDR 구성하기
SDR 선택하기
SDR Type: SDR 유형을 선택합니다. USRP, RTL-SDR 또는 PLUTO를 선택할 수 있습니다. SDR Type을 변경할 때마다 앱은 사용 가능한 SDR 목록을 새로 고칩니다.
SDR Name: 드롭다운 목록에서 SDR 플랫폼을 선택합니다.
SDR Address: 드롭다운 목록에서 필요한 라디오의 SDR 주소를 선택합니다.
Refresh SDR List: 목록에서 라디오를 확인할 수 없는 경우 Refresh SDR List를 클릭합니다.
신호 파라미터 구성하기
Center Frequency (Hz): Center Frequency를 음이 아닌 스칼라로 지정합니다. Center Frequency 값의 유효한 범위는 다음 고려 사항에 따라 SDR마다 다릅니다.
- USRP 라디오의 경우 Center Frequency의 유효한 범위는 RF 도터 카드에 따라 다릅니다. 
- PLUTO 라디오의 경우 Center Frequency의 유효한 조정 범위는 325MHz~3.8GHz입니다. Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio를 사용하면 AD9364 펌웨어를 사용하여 라디오가 동작하도록 구성함으로써 인증된 조정 범위 밖에서 PLUTO 라디오를 사용할 수 있습니다. Center Frequency 범위를 확장하려면 MATLAB 명령 프롬프트에 - configurePlutoRadio('AD9364')를 입력하십시오.
- RTL-SDR, 튜너 칩 목록 및 각각의 Center Frequency 범위는 [1]을 참조하십시오. 
Rx Gain (dB): SDR 수신기 이득(단위: dB)을 지정합니다. Rx Gain 값의 유효 범위는 다음 고려 사항에 따라 SDR마다 다릅니다.
- USRP 라디오의 경우 Rx Gain의 유효 범위는 RF 도터 카드에 따라 다릅니다. 유효한 이득 값을 얻으려면 - comm.SDRuReceiver의- info()메서드를 사용하십시오.
- PLUTO 라디오의 경우 Rx Gain 범위는 -4dB~71dB입니다. 
- RTL-SDR의 경우 Rx Gain 값의 유효 범위는 튜너 칩에 따라 다릅니다. 유효한 이득 값을 얻으려면 - comm.SDRRTLReceiver의- info()메서드를 사용하십시오.
Sample Rate (Hz): 다음 고려 사항에 따라 무선통신 프론트엔드의 기저대역 샘플 레이트(단위: Hz)를 양의 숫자형 스칼라로 지정합니다.
- USRP 라디오의 경우 Sample Rate는 마스터 클록 속도(MCR) 및 데시메이션 인자에 따라 달라집니다. 자세한 내용은 - comm.SDRuReceiver항목을 참조하십시오.
- PLUTO 라디오의 경우, Sample Rate는 - comm.SDRRxPluto의- BasebandSampleRate속성과 동일한 값입니다. 범위는 초당 65105개~61.44e6개 샘플입니다.
- RTL-SDR의 경우 유효한 Sample Rate의 범위는 [225, 300]kHz 및 [900, 3200](kHz)입니다. Sample Rate를 2560kHz보다 크게 설정하면 샘플이 삭제될 수 있습니다. 신뢰할 수 있는 최대 샘플 레이트에 대한 자세한 내용은 [1]을 참조하십시오. 
Frame Size: 출력 신호의 프레임당 샘플 수로, 다음 고려 사항에 따라 양의 정수로 지정합니다.
- USRP 라디오의 경우 Frame Size는 - comm.SDRuReceiver의- SamplesPerFrame속성과 동일한 값입니다. 자세한 내용은- comm.SDRuReceiver항목을 참조하십시오.
- PLUTO 라디오의 경우 Frame Size는 - comm.SDRRxPluto의- SamplesPerFrame속성과 동일한 값입니다. Frame Size를 2에서 16,777,216 사이의 양의 짝수 정수로 지정하십시오.
- RTL-SDR의 경우 Frame Size는 - comm.SDRRTLReceiver의- SamplesPerFrame속성과 동일한 값입니다. 자세한 내용은- comm.SDRRTLReceiver항목을 참조하십시오.
파라미터의 범위에 대한 자세한 내용은 해당 수신기 System object의 info() 메서드를 사용하십시오.
신호 수신하기
Start/Pause: 신호를 수신하려면 START를 클릭합니다. 신호 수신을 일시 중지하려면 PAUSE를 클릭합니다. 수신이 시작되면 다음과 같이 진행됩니다.
- Select SDR이 비활성화됩니다. 
- 앱에 수신 상태가 Receiving [Total Overruns = <Count of overruns>]로 표시됩니다. 수신이 시작되기 전에 오버런 횟수는 0으로 초기화됩니다. 
RF 보정 적용하기
무선 주파수(RF) 통신 시스템에서는 정확한 신호 송신 및 수신을 보장하기 위해 RF 보정(예: 위상 오프셋 및 주파수 오프셋)이 필수적입니다. 위상 오프셋은 수신된 신호와 기준 신호 간의 위상 차이를 나타내며, 이는 전송된 데이터의 무결성에 영향을 줄 수 있습니다. 주파수 오프셋은 예상 반송 주파수와 실제 수신된 주파수 간의 차이를 나타내며, 이는 잠재적으로 정렬 불량 및 신호 품질 저하로 이어질 수 있습니다. 이러한 오프셋을 보정하는 것은 무선 통신 시스템에서 최적의 성능과 신뢰성을 유지하는 데 중요합니다.
SDR Receiver 앱을 사용하면 시뮬레이션 중에 Phase Offset (deg), Coarse Frequency (Hz), Fine Frequency (Hz)를 사용하여 대화형 방식으로 위상 오프셋 및 주파수 오프셋을 추정할 수 있습니다. 이러한 파라미터를 변경하여 Constellation 플롯에 어떤 영향을 미치는지 확인하십시오.
수신된 신호 시각화하기
다음 세 가지 플롯을 사용하여 수신 신호를 시각화할 수 있습니다.
IQ Plot: 수신 신호의 실수부와 허수부를 플로팅합니다. 여기서 X-axis는 Samples이고 Y-axis는 Amplitude입니다.
Power Spectrum Plot: 수신된 신호의 파워 스펙트럼을 플로팅합니다. 이 앱은 SpectrumAnalyzer 앱을 사용하여 이러한 플롯을 생성합니다. 플롯에서 X-axis는 Frequency(단위: Hz)이고 Y-axis는 dBFS(전체 스케일에 상대적인 데시벨)입니다. 자세한 내용은 spectrumAnalyzer 항목을 참조하십시오.
Constellation Plot: 수신된 신호의 성상도를 플로팅하고 위상 오프셋 및 주파수 오프셋을 추정합니다.
수신 중지하기
Stop: 시뮬레이션을 중지하려면 STOP을 클릭합니다. 수신이 중지되면 앱에서 Select SDR 컨트롤이 활성화되므로 라디오를 변경할 수 있습니다.

MATLAB 스크립트로 내보내기
MATLAB 스크립트로 내보내기: MATLAB 스크립트로 내보내기 버튼을 클릭하여 현재 SDR Receiver 앱 구성을 위한 MATLAB 스크립트를 생성합니다.
앱 닫기
창을 닫거나 다음을 사용하여 열려 있는 SDR Receiver 앱을 닫습니다.
app.delete();
결론 및 심층 탐구
이 예제에서는 SDR을 조정하고 필요에 따라 위상 오프셋 및 주파수 오프셋을 추정합니다. SDR에 대한 자세한 내용은 다음 예제를 참조하십시오.
- 소프트웨어 정의 라디오를 사용하는 QPSK 송신기. 
- 소프트웨어 정의 라디오를 사용하는 QPSK 수신기. 
- 신호의 스펙트럼 분석. 
- FM 방송 수신기. 
참고 문헌
[1] SDR (Software Defined Radio)
헬퍼 함수
- SDRReceiver.m
- helperUISDRRxWidgets.m
- helperUISDRRxController.m