banner
홈페이지 / 블로그 / GNU 라디오 시작하기
블로그

GNU 라디오 시작하기

Jun 18, 2023Jun 18, 2023

전자 장치 대신 소프트웨어를 사용하여 무선 신호를 처리하는 기능인 SDR(소프트웨어 정의 라디오)은 매우 매력적입니다. 그러나 기성 SDR 소프트웨어를 사용하는 것과 직접 작성하는 것에는 큰 차이가 있습니다. 결국 SDR에는 고속으로 많은 디지털 신호 처리(DSP)가 필요합니다.

현대적인 PC를 처음부터 만들 수 있는 사람은 많지 않지만 거의 모든 사람이 마더보드, 일부 I/O 카드, 전원 공급 장치, 케이스를 구입하여 맞춤형 시스템을 구성할 수 있습니다. 이것이 GNU Radio와 SDR의 아이디어입니다. GNU Radio는 정교한 SDR 애플리케이션(또는 실제로 모든 DSP 애플리케이션)을 만드는 데 사용할 수 있는 풍부한 Python 기능을 제공합니다.

Python이 아직 적합하지 않은 경우(또는 그렇다면) GNU Radio를 사용하는 훨씬 더 쉬운 방법이 있습니다: GNU Radio Companion(GRC)입니다. 이는 대부분 그래픽 방식으로 모듈을 그래픽 방식으로 연결하고 간단한 GUI를 구축하여 새 라디오를 제어할 수 있는 그래픽 방식입니다.

일반적으로 GRC를 라디오에 관한 것으로 생각하지만 실제로는 모든 종류의 DSP 애플리케이션을 구축하기 위한 좋은 프레임워크이며 이것이 바로 아래 비디오에서 보여드리겠습니다. GRC에는 신호 발생기 블록이 있고 사운드 카드에 대한 인터페이스가 있습니다. 파일 시스템에 데이터를 읽고 쓸 수 있는 기능도 있으므로 추가 하드웨어 없이 많은 DSP 애플리케이션이나 시뮬레이션을 수행하는 데 사용할 수 있습니다.

업데이트:SDRPlay를 사용하여 GNU Radio 기반 수신기를 구축하는 후속 게시물을 놓치지 마세요.

SDR을 가능하게 하기 위해 결합되는 몇 가지 주요 구성 요소가 있습니다. 첫 번째는 특정 샘플링 속도로 샘플링되는 일부 입력 장치(소스)입니다. 오디오 장치의 경우 샘플은 실수입니다. 그러나 무선 장치는 I 및 Q 구성 요소가 포함된 복소수를 제공할 가능성이 높습니다.

신호를 I 및 Q 구성 요소(구적 데이터라고도 함)로 표현하는 데 익숙하지 않다면 이는 큰 주제입니다(Tektronix의 훌륭한 3D 설명과 National Instruments의 훌륭한 3D 설명 포함). 그러나 GRC를 시작하기 위해 직교 신호 뒤에 있는 이론을 직접 이해할 필요는 없습니다. I 및 Q 신호가 결합되어 모든 파형을 표현할 수 있으며, 반대로 모든 파형이 일련의 I 및 Q 값으로 분할될 수 있다는 점만 알아두십시오. 하지만 GRC를 사용하면 PCI 익스프레스 버스에 어떤 신호가 있는지 정확히 알지 못해도 비디오 카드를 사용할 수 있는 것처럼 이를 이해하는 것이 (대부분의 경우) 그다지 중요하지 않습니다.

아래 비디오에서 간단한 시작 프로젝트를 찾을 수 있습니다. GRC는 블록 다이어그램(흐름 그래프)을 사용하여 프로젝트를 나타냅니다. 새 흐름 그래프를 생성하면 두 개의 블록이 이미 존재하는 것을 볼 수 있습니다. 하나는 옵션용이고 다른 하나는 samp_rate라는 변수입니다. 옵션 블록의 가장 중요한 부분은 사용하려는 그래픽 도구 키트(WX 그래픽 위젯 또는 QT 위젯)를 설정합니다. 우리의 목적에서는 별로 중요하지 않지만 비디오에서는 Qt를 선택하겠습니다. 샘플링 속도는 디자인에 매우 중요하므로 이에 대한 특별한 변수가 있습니다. 대부분의 다른 블록은 이 변수의 값을 선택하여 샘플링 속도로 사용합니다. 그러나 이것이 항상 원하는 것은 아니지만 좋은 출발점이 됩니다. 이 예에서는 결국 사운드 카드에서 입력을 받게 되므로 대부분의 사운드 카드가 지원하는 샘플 속도(48kHz)를 원했습니다. 하지만 우선 위의 다이어그램에서 볼 수 있듯이 예제를 매우 간단하게 유지했습니다.

우선 흐름 그래프에 IQ 데이터(복소수)를 생성하는 신호 소스를 배치합니다. 신호 발생기 블록은 실제로 너무 많은 데이터를 생성하여 CPU 속도를 저하시킬 수 있습니다. 샘플링 속도가 48kHz이므로 초당 48,000개 이상의 샘플을 생성하는 것은 의미가 없습니다. 이를 확인하기 위해 스로틀 블록을 추가하고 이를 발전기에 연결합니다.

동일한 색상(따라서 동일한 데이터 유형)을 갖는 포트를 연결하는 것은 간단합니다. 한 포트를 클릭한 다음 다른 포트를 클릭하기만 하면 됩니다. 순서는 중요하지 않으며 하나의 출력에 둘 이상의 입력을 연결할 수 있습니다. 포트 데이터 유형이 일치하지 않으면 유형 변환기를 사용해야 합니다(예제 비디오에서는 나중에 이를 보여줍니다).