Dopo un anno di sviluppo, è stata rilasciata una nuova e significativa versione della piattaforma open source per l'elaborazione digitale dei segnali GNU Radio 3.10. La piattaforma include un insieme di programmi e librerie che consentono di creare sistemi radio personalizzati, modelli di modulazione e forme di segnali ricevuti e trasmessi definite attraverso software, mentre per la cattura e la generazione dei segnali vengono utilizzati semplici dispositivi hardware. Il progetto è distribuito sotto licenza GPLv3. Gran parte dei componenti di GNU Radio è scritta in Python, mentre le parti critiche per le prestazioni e la latenza sono scritte in C++, il che consente di utilizzare il pacchetto per affrontare problemi in tempo reale.
Combinato con trasmettitori e ricevitori programmabili universali, non vincolati a banda di frequenza e tipo di modulazione del segnale, la piattaforma può essere utilizzata per creare dispositivi come stazioni base per reti GSM, dispositivi per la lettura a distanza di etichette RFID (documenti elettronici e permessi, smart card), ricevitori GPS, WiFi, ricevitori e trasmettitori FM radio, decoder TV, radar passivi, analizzatori spettrali, e altro. Oltre a USRP, il pacchetto può utilizzare altri componenti hardware per l'ingresso e l'uscita dei segnali, come i driver per schede audio, tuner TV, dispositivi BladeRF, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP e S-Mini.
Include anche una collezione di filtri, codec di canale, moduli di sincronizzazione, demodulatori, equalizzatori, codec vocali, decoder e altri elementi necessari per la creazione di sistemi radio. Gli elementi indicati possono essere utilizzati come mattoncini per assemblare un sistema completo, il che, unito alle capacità di definire flussi di dati tra i blocchi, consente di progettare sistemi radio anche senza abilità di programmazione.
Principali modifiche:
- È stato aggiunto un nuovo modulo gr-pdu, che include gli strumenti per la manipolazione di oggetti di tipo PDU (Protocol Data Unit), utilizzati per i dati trasmessi tra i blocchi di GNU Radio. Tutti i blocchi PDU sono stati trasferiti dai moduli gr-blocks ai moduli gr-network e gr-pdu, mentre nel posto di gr-blocks è rimasto un layer per garantire la compatibilità retroattiva. I tipi di PDU vettoriali sono ora disponibili nello spazio dei nomi gr::types, mentre le funzioni per la manipolazione delle PDU si trovano nello spazio dei nomi gr::pdu.
- È stato aggiunto un nuovo modulo gr-iio, che fornisce un framework di input/output per organizzare lo scambio di dati tra GNU Radio e dispositivi industriali basati sulla sottosistema IIO (Industrial I/O), come PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO e AD-FMCOMMS5-EBZ.
- È stata proposta un supporto sperimentale per la classe Custom Buffer, che semplifica la trasmissione di dati tra i blocchi di GNU Radio e gli acceleratori hardware basati su GPU, FPGA e DSP. L'uso di custom_buffer consente di evitare la scrittura di blocchi speciali per sfruttare l'accelerazione sul lato GPU e permette di spostare direttamente i dati dal buffer circolare di GNU Radio alla memoria GPU, avviare i kernel CUDA e restituire i dati con il risultato nei buffer di GNU Radio.
- L'infrastruttura per la gestione dei log è stata aggiornata per utilizzare la libreria spdlog, migliorando così la facilità d'uso dei log, eliminando la necessità di chiamate a iostream e cstdio, garantendo il supporto per le espressioni libfmt nel formattare le stringhe e modernizzando l'interfaccia di programmazione. La libreria Log4CPP precedentemente utilizzata è stata rimossa dalle dipendenze.
- È stato effettuato il passaggio all'uso dello standard C++17 nello sviluppo. La libreria boost::filesystem è stata sostituita da std::filesystem.
- Sono stati innalzati i requisiti per i compilatori (GCC 9.3, Clang 11, MSVC 1916) e per le dipendenze (Python 3.6.5, numpy 1.17.4, VOLK 2.4.1, CMake 3.16.3, Boost 1.69, Mako 1.1.0, PyBind11 2.4.3, pygccxml 2.0.0).
- Aggiunti i binding Python per i blocchi RFNoC.
- Nei blocchi per la costruzione dell'interfaccia grafica gr-qtgui è stato aggiunto il supporto per Qt 6.2. Nell'interfaccia grafica GRC (GNU Radio Companion) è stata aggiunta l'opzione «—output» per i blocchi gerarchici.
Fonte: opennet.ru
