Efter ett Ärs utveckling har en ny betydande version av plattformen för digital signalbearbetning GNU Radio 3.10 skapats. Plattformen inkluderar ett set av program och bibliotek som gör det möjligt att skapa skrÀddarsydda radiosystem, moduleringstekniker och former för mottagna och skickade signaler som definieras genom programvara, samt anvÀnder enkla hÄrdvaruenheter för att fÄnga och generera signaler. Projektet distribueras under GPLv3-licensen. Större delen av komponenterna i GNU Radio Àr skrivna i Python, medan prestandakritiska och latenskÀnsliga delar Àr skrivna i C++, vilket möjliggör anvÀndning av paketet för realtidsuppgifter.
I kombination med universella programerbara sÀndare/mottagare, som inte Àr bundna till frekvensband och moduleringstyp, kan plattformen anvÀndas för att skapa enheter som basstationer för GSM-nÀt, enheter för fjÀrravlÀsning av RFID-taggar (elektroniska ID-kort och pass, smartkort), GPS-mottagare, WiFi, FM-radio mottagare och sÀndare, TV-dekoderare, passiva radarsystem, spektrumanalysatorer m.m. Förutom USRP kan paketet Àven anvÀnda andra hÄrdvarukomponenter för signalin- och utmatning, till exempel finns det drivrutiner för ljudkort, TV-mottagare, enheter som BladeRF, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP och S-Mini.
Det ingÄr ocksÄ en kollektion av filter, kanalkodare, synkroniseringsmoduler, demodulatorer, equalizers, röstkodare, dekodare och andra element som Àr nödvÀndiga för skapandet av radiosystem. Dessa element kan anvÀndas som byggstenar för att sÀtta ihop ett fÀrdigt system, vilket i kombination med möjligheterna att bestÀmma datastreamar mellan block gör det möjligt att designa radiosystem Àven utan programmeringskunskaper.
Huvudsakliga förÀndringar:
- En ny modul gr-pdu har lagts till som innehÄller verktyg för att manipulera objekt av typen PDU (Protocol Data Unit), som anvÀnds för data som överförs mellan blocken i GNU Radio. FrÄn modulen gr-blocks har alla PDU-block flyttats till modulerna gr-network och gr-pdu, och en mellanliggande komponent har bevarats i gr-blocks för bakÄtkompatibilitet. Vektortyper för PDU Àr nu tillgÀngliga i namnrymden gr::types, och funktioner för manipulering av PDU finns i namnrymden gr::pdu.
- En ny modul gr-iio har lagts till som tillhandahÄller en in- och utmatningsram för att organisera datautbyte mellan GNU Radio och industriella enheter baserade pÄ IIO (Industrial I/O) subsystem, sÄsom PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO och AD-FMCOMMS5-EBZ.
- Experimentellt stöd för klassen Custom Buffer har införts, vilket förenklar dataöverföring mellan GNU Radio-block och hÄrdvaruacceleratorer baserade pÄ GPU, FPGA och DSP. AnvÀndning av custom_buffer gör det möjligt att undvika att skriva speciella block för att utnyttja acceleration pÄ GPU-sidan och ger möjlighet att direkt flytta data frÄn GNU Radios ringbuffert till GPU-minnet, köra CUDA-kÀrnor och returnera data med resultatet till GNU Radio-buffrar.
- Infrastrukturen för loggning har övergÄtt till att anvÀnda biblioteken spdlog, vilket har förbÀttrat anvÀndarvÀnligheten vid arbete med loggar, eliminerat beroendet av iostream och cstdio, sÀkerstÀllt stöd för libfmt-uttryck för strÀngformatering och moderniserat det programmeringsgrÀnssnittet. Det tidigare anvÀnda biblioteket Log4CPP har tagits bort frÄn beroenden.
- ĂvergĂ„ng till anvĂ€ndning av C++17-standarden har genomförts vid utvecklingen. Biblioteket boost::filesystem har ersatts med std::filesystem.
- Krav pÄ kompilatorer (GCC 9.3, Clang 11, MSVC 1916) och beroenden (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) har höjts.
- Python-bindningar har lagts till för RFNoC-block.
- Stöd för Qt 6.2 har lagts till i blocken för grafiskt grĂ€nssnitt gr-qtgui. GRC (GNU Radio Companion) har fĂ„tt en ny funktion "âoutput" för hierarkiska block.
KĂ€lla: opennet.ru
