banner
Casa / Blog / Iniziare con GNU Radio
Blog

Iniziare con GNU Radio

Jun 18, 2023Jun 18, 2023

La Software Defined Radio (SDR), ovvero la capacità di elaborare segnali radio utilizzando il software anziché l'elettronica, è innegabilmente affascinante. Tuttavia, c'è un grande divario tra la possibilità di utilizzare software SDR standard e scriverne uno proprio. Dopotutto, gli SDR richiedono molta elaborazione del segnale digitale (DSP) ad alte velocità.

Non molte persone potrebbero costruire un PC moderno da zero, ma quasi chiunque può procurarsi una scheda madre, alcune schede I/O, un alimentatore e un case e mettere insieme un sistema personalizzato. Questa è l'idea alla base di GNU Radio e SDR. GNU Radio fornisce una vasta gamma di funzioni Python che puoi utilizzare per creare sofisticate applicazioni SDR (o, in effetti, qualsiasi applicazione DSP).

Se Python non è ancora nelle tue corde (o anche se lo è), c'è un modo ancora più semplice per usare GNU Radio: GNU Radio Companion (GRC). Si tratta di un approccio prevalentemente grafico, che consente di collegare graficamente i moduli e creare semplici GUI per controllare la nuova radio.

Anche se di solito si pensa che GRC riguardi le radio, in realtà è un buon framework per creare qualsiasi tipo di applicazione DSP, ed è quello che ti mostrerò nel video qui sotto. GRC ha un blocco generatore di segnale e si interfaccia con la tua scheda audio. Ha anche la capacità di leggere e scrivere dati nel file system, quindi puoi usarlo per fare molte applicazioni o simulazioni DSP senza hardware aggiuntivo.

AGGIORNAMENTO:Non perdere il post successivo che utilizza SDRPlay per creare un ricevitore basato su GNU Radio.

Esistono diversi elementi chiave che si combinano per rendere possibile l’SDR. Il primo è un dispositivo di input (una sorgente) campionato a una certa frequenza di campionamento. Per un dispositivo audio, i campioni saranno numeri reali. Tuttavia, i dispositivi radio forniranno più probabilmente numeri complessi con componenti I e Q.

Se non hai familiarità con l'espressione dei segnali come componenti I e Q (a volte noti come dati di quadratura), questo è un argomento importante (con un'ottima spiegazione 3D, una di Tektronix e un'altra di National Instruments). Tuttavia, non è necessario comprendere direttamente la teoria alla base dei segnali di quadratura per iniziare con GRC. Sappi solo che i segnali I e Q possono combinarsi per esprimere qualsiasi forma d'onda e, viceversa, qualsiasi forma d'onda può scomporsi in una serie di valori I e Q. Con GRC, tuttavia, non è così importante (nella maggior parte dei casi) capirlo, proprio come è possibile utilizzare una scheda video senza sapere esattamente quali segnali ci sono sul bus PCI Express.

Puoi trovare un semplice progetto iniziale nel video qui sotto. GRC utilizza un diagramma a blocchi (un grafico di flusso) per rappresentare il tuo progetto. Quando crei un nuovo grafico di flusso, vedrai due blocchi già presenti: uno per le opzioni e una variabile denominata samp_rate. La parte più importante del blocco opzioni imposta il toolkit grafico che desideri utilizzare (widget grafici WX o widget QT). Per il nostro scopo non ha molta importanza, ma nel video selezionerò Qt. La frequenza di campionamento è così parte integrante del tuo progetto che esiste una variabile speciale per essa. La maggior parte degli altri blocchi prenderà il valore di questa variabile e lo utilizzerà per la frequenza di campionamento. Tuttavia, questo non è sempre quello che desideri, ma è un buon punto di partenza. Per questo esempio, alla fine riceverò l'input da una scheda audio, quindi volevo una frequenza di campionamento supportata dalla maggior parte delle schede audio (48 kHz). Per cominciare, però, ho mantenuto l'esempio molto semplice, come puoi vedere nel diagramma sopra.

Per cominciare, posizionerai una sorgente di segnale che genera dati IQ (come numeri complessi) sul grafico di flusso. Il blocco del generatore di segnale può effettivamente generare troppi dati e rallentare la CPU. Dato che la frequenza di campionamento è di 48 kHz, non ha senso generare più di 48.000 campioni al secondo. Per assicurarti che ciò accada, aggiungerai un blocco dell'acceleratore e lo collegherai al generatore.

Collegare le porte che hanno lo stesso colore (e, quindi, lo stesso tipo di dati) è semplice. Basta fare clic su una porta e poi fare clic sull'altra. L'ordine non ha importanza ed è possibile collegare più di un ingresso a una singola uscita. Se il tipo di dati della porta non corrisponde, dovrai utilizzare un convertitore di tipi (e il video di esempio lo mostrerà più tardi).