După un an de dezvoltare, a fost lansată o nouă versiune semnificativă a platformei open-source GNU Radio 3.10 pentru procesarea digitală a semnalelor. Platforma include un set de programe și biblioteci care permit crearea de sisteme radio personalizate, scheme de modulație și forme de semnale primite și transmise definite prin programare, iar pentru captarea și generarea semnalelor sunt utilizate echipamente hardware simple. Proiectul este distribuit sub licența GPLv3. Codul majorității componentelor GNU Radio este scris în Python, în timp ce părțile critice din punct de vedere al performanței și latenței sunt scrise în C++, ceea ce permite utilizarea pachetului pentru sarcini în timp real.
În combinație cu transceivere programabile universale, care nu sunt legate de banda de frecvență și tipul de modulație a semnalului, platforma poate fi utilizată pentru a crea dispozitive precum stații de bază pentru rețele GSM, dispozitive pentru citirea de etichete RFID (carte de identitate electronică și permise, carduri inteligente), receptoare GPS, WiFi, receptoare și transceivere FM-radio, decodoare TV, radare pasive, analizatoare spectrale etc. Pe lângă USRP, pachetul poate utiliza și alte componente hardware pentru intrare și ieșire de semnale, de exemplu, sunt disponibile drivere pentru plăci de sunet, tunere TV, dispozitive BladeRF, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP și S-Mini.
De asemenea, este inclus un set de filtre, codecuri canal, module de sincronizare, demodulatori, egalizatoare, codecuri vocale, decodoare și alte elemente necesare pentru crearea sistemelor radio. Aceste elemente pot fi utilizate ca blocuri de construcție pentru formarea unui sistem finit, ceea ce, împreună cu capabilitățile de definiție a fluxurilor de date între blocuri, permite proiectarea sistemelor radio chiar și fără abilități de programare.
Modificări principale:
- A fost adăugat un nou modul gr-pdu, în care au fost mutate instrumentele pentru manipularea obiectelor de tip PDU (Protocol Data Unit), utilizate pentru datele transferate între blocurile GNU Radio. Din modulul gr-blocks, toate blocurile PDU au fost mutate în modulele gr-network și gr-pdu, iar în locul gr-blocks a fost lăsată o interfață pentru a asigura compatibilitatea inversă. Tipurile vectoriale PDU sunt acum disponibile în spațiul de nume gr::types, iar funcțiile pentru manipularea PDU în spațiul de nume gr::pdu.
- A fost adăugat un nou modul gr-iio, care oferă un cadru de intrare/ieșire pentru gestionarea schimbului de date între GNU Radio și dispozitive industriale bazate pe subsistemul IIO (Industrial I/O), cum ar fi PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO și AD-FMCOMMS5-EBZ.
- A fost propus un suport experimental pentru clasa Custom Buffer, care simplifică transferul de date între blocurile GNU Radio și acceleratoarele hardware bazate pe GPU, FPGA și DSP. Utilizarea custom_buffer permite evitarea scrierii de blocuri speciale pentru activarea accelerării pe partea de GPU și oferă posibilitatea de a muta direct datele din bufferul circular GNU Radio în memoria GPU, de a rula nuclee CUDA și de a returna datele cu rezultatul în buffer-ele GNU Radio.
- Infrastructura pentru gestionarea jurnalelor a fost migrată la utilizarea bibliotecii spdlog, ceea ce a permis îmbunătățirea experienței de lucru cu jurnalele, eliminând necesitatea apelării la iostream și cstdio, asigurând suport pentru expresiile libfmt pentru formatarea șirurilor de caractere și modernizând interfața de programare. Biblioteca Log4CPP, utilizată anterior, a fost eliminată din dependențe.
- S-a realizat tranziția la utilizarea standardului C++17 în dezvoltare. Biblioteca boost::filesystem a fost înlocuită cu std::filesystem.
- Au fost ridicate cerințele pentru compilatoare (GCC 9.3, Clang 11, MSVC 1916) și dependențe (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).
- Au fost adăugate binnding-uri Python pentru blocurile RFNoC.
- În blocurile pentru construirea interfeței grafice gr-qtgui a fost adăugat suport pentru Qt 6.2. În interfața grafică GRC (GNU Radio Companion) a fost adăugată opțiunea „—output” pentru blocurile ierarhice.
Sursa: opennet.ro
