Aasta kestnud arenduse tulemusena on valminud uus märkimisväärne vabavaraline digitaalsete signaalide töötlemise platvorm GNU Radio 3.10. Platvorm sisaldab programmi ja raamatukogude kogumit, mis võimaldavad luua erinevaid raadio süsteeme, modulatsiooniskeeme ja signaalide vastuvõtmise ja edastamise vorme, mida saab programmeerida, samal ajal kui signaalide jäädvustamiseks ja genereerimiseks kasutatakse lihtsamaid riistvaraseadmeid. Projekt levitatakse GPLv3 litsentsi alusel. Suur osa GNU Radio komponente on kirjutatud Pythonis, samas kui jõudluse ja latentsuse poolest kriitilised osad on kirjutatud C++ keeles, mis võimaldab paketti kasutada reaalajas ülesannete lahendamisel.
Ühendatuna universaalsete programmeeritavate saatjate ja vastuvõtjatega, mis ei ole seotud sagedusvahemiku ja signaalimoodulatsiooniga, saab platvormi kasutada selliste seadmete, nagu GSM-võrkude baastehnika, RFID-siltide kaugloetavad seadmed (elektroonilised isikutunnistused ja pääsmed, nutikaardid), GPS-vastuvõtjad, WiFi, FM-raadio vastuvõtjad ja saatjad, TV-dekooderid, passiivsed radarid, spektraalanalüsaatorid jms valmistamiseks. Lisaks USRP-le saab paketis kasutada ka muid riistvarakomponente signaalide sisendi ja väljundi jaoks, näiteks on saadaval draiverid helikaartidele, TV-tuuneritele, BladeRF-seadmetele, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP ja S-Mini.
Komplekti kuulub ka filtreid, kanalikoodekeid, synchroniseerimise mooduleid, demodulaatoreid, ekvalaisereid, häälekoodekeid, dekoodereid ja muid elemente, mis on vajalikud raadiotehnika loomisel. Need elemendid võivad olla kasutatud ehitusplokkidena valmis süsteemi komponeerimiseks, võimaldades andmevoogude määratlemist plokkide vahel, mis võimaldab raadiotehnika projekteerimist isegi ilma programmeerimisoskusteta.
Peamised muudatused:
- Lisatud on uus gr-pdu moodul, mis sisaldab tööriistu PDU (Protokolli Andmeühik) objektidega manipuleerimiseks, mis on mõeldud GNU Radio plokkide vahel andmete edastamiseks. Kõik PDU plokid on gr-blocks moodulist viidud gr-network ja gr-pdu moodulitesse, jättes gr-blocks'i kohale kihistuse tagamaks tagasipööratavust. Vektortüübid PDU on nüüd saadaval gr::types nimes, samas kui PDU-ga manipuleerimise funktsioonid on gr::pdu nimes.
- Lisatud on uus gr-iio moodul, mis pakub sisendi/väljundi raamistiku, et korraldada andmevahetust GNU Radio ja tööstusseadmete, mis põhinevad IIO (Tööstuse Sisendi/Väljundi) alamsüsteemil, nagu PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO ja AD-FMCOMMS5-EBZ vahel.
- Pakutakse eksperimentaalset tuge Custom Buffer klassile, mis lihtsustab andmete edastamist GNU Radio plokkide ja GPU, FPGA ja DSP-põhiste riistvarakiirendite vahel. custom_buffer'i kasutamine võimaldab vältida erilise ploki kirjutamist GPU kiirenduse kasutamiseks ning annab võimaluse edastada andmeid otse GNU Radio ringbufferist GPU mällu, käivitada CUDA tuumasid ja tagastada tulemused GNU Radio pufferitesse.
- Logide haldamiseks on infrastruktuur uuendatud spdlog teegi kasutamiseks, mis on parendanud logidega töö mugavust, võimaldanud vältida iostream ja cstdio kasutamist, pakkunud libfmt väljendite toetust stringide vormindamiseks ja moderniseerinud API-t. Varasemalt kasutatud Log4CPP teek on eemaldatud sõltuvustest.
- Arenduses on ülemineku toimunud C++17 standardile. boost::filesystem teek on asendatud std::filesystemiga.
- Tõstetud on nõuded kompilaatoreile (GCC 9.3, Clang 11, MSVC 1916) ja sõltuvustele (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).
- Lisatud on Python'i sidemed RFNoC plokkide jaoks.
- gr-qtgui plokkidesse on lisatud Qt 6.2 tugi. GRC (GNU Radio Companion) graafilisse liidesesse on lisatud valik „—output“ hierarhiliste plokkide jaoks.
Allikas: opennet.ru
