Na een jaar ontwikkeling is er een nieuwe, belangrijke release van het gratis digitale signaalverwerkingsplatform GNU Radio 3.10 uitgebracht. Het platform bevat een reeks programma's en bibliotheken waarmee u willekeurige radiosystemen kunt creëren. De modulatieschema's en de vorm van de ontvangen en verzonden signalen worden programmatisch ingesteld, en de eenvoudigste hardware wordt gebruikt om signalen te verzamelen en te genereren. Het project wordt gedistribueerd onder de GPLv3-licentie. De code voor de meeste GNU Radio-componenten is geschreven in Python, de onderdelen die cruciaal zijn voor prestaties en latentie zijn geschreven in C++, waardoor u het pakket kunt gebruiken bij het oplossen van problemen in realtime.
In combinatie met universeel programmeerbare transceivers die niet gebonden zijn aan de frequentieband en het type signaalmodulatie, kan het platform worden gebruikt om apparaten te maken zoals basisstations voor GSM-netwerken, apparaten voor het op afstand lezen van RFID-tags (elektronische ID's en passen, smartcards), GPS-ontvangers, WiFi, FM-radio-ontvangers en -zenders, tv-decoders, passieve radars, spectrum-analysatoren, enz. Naast USRP kan het pakket ook andere hardwarecomponenten gebruiken voor de in- en uitvoer van signalen, bijvoorbeeld zijn er drivers beschikbaar voor geluidskaarten, tv-tuners, BladeRF, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP en S-Mini-apparaten.
De structuur omvat ook een verzameling filters, kanaalcodecs, synchronisatiemodules, demodulatoren, equalizers, spraakcodecs, decoders en andere elementen die nodig zijn voor het creëren van radiosystemen. Deze elementen kunnen worden gebruikt als bouwstenen om een kant-en-klaar systeem samen te stellen, waardoor u, in combinatie met de mogelijkheid om gegevensstromen tussen blokken te bepalen, zelfs zonder programmeervaardigheden radiosystemen kunt ontwerpen.
Grote veranderingen:
- Er is een nieuwe module gr-pdu toegevoegd, die tools bevat voor het bewerken van objecten met het PDU-type (Protocol Data Unit), dat wordt gebruikt voor gegevensoverdracht tussen GNU Radio-blokken. Alle PDU's zijn verplaatst van de gr-blocks-module naar de gr-network- en gr-pdu-modules, en er is een laag toegevoegd ter vervanging van gr-blocks om achterwaartse compatibiliteit te garanderen. Vector-PDU-typen zijn nu beschikbaar in de gr::types-naamruimte en functies voor het bewerken van PDU's bevinden zich in de gr::pdu-naamruimte.
- Er is een nieuwe module gr-iio toegevoegd, die een I/O-framework biedt voor het organiseren van gegevensuitwisseling tussen GNU Radio en industriële apparaten op basis van het Industrial I/O (IIO)-subsysteem, zoals PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO en AD-FMCOMMS5-EBZ.
- Er wordt experimentele ondersteuning voor de Custom Buffer-klasse voorgesteld, die de gegevensoverdracht tussen GNU Radio-blokken en hardwareversnellers op basis van GPU, FPGA en DSP vereenvoudigt. Door custom_buffer te gebruiken, is het niet langer nodig om speciale blokken te schrijven om versnelling aan de GPU mogelijk te maken en is het mogelijk om gegevens rechtstreeks van de GNU Radio-ringbuffer naar het GPU-geheugen te verplaatsen, CUDA-kernels uit te voeren en gegevens met het resultaat terug te sturen naar GNU Radio-buffers.
- De logginginfrastructuur is overgeschakeld naar de spdlog-bibliotheek. Dit heeft de bruikbaarheid van het werken met logs verbeterd, de noodzaak voor toegang tot iostream en cstdio geëlimineerd, ondersteuning geboden voor libfmt-expressies voor het opmaken van strings en de software-interface gemoderniseerd. De voorheen gebruikte Log4CPP-bibliotheek is verwijderd uit de afhankelijkheden.
- De overstap naar de C++17-standaard in de ontwikkeling is gemaakt. De boost::filesystem-bibliotheek is vervangen door std::filesystem.
- Verhoogde vereisten voor compilers (GCC 9.3, Clang 11, MSVC 1916) en afhankelijkheden (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).
- Python-bindingen toegevoegd voor RFNoC-blokken.
- Ondersteuning voor Qt 6.2 is toegevoegd aan de gr-qtgui GUI-bouwstenen. De GRC (GNU Radio Companion) GUI heeft nu de optie "--output" voor hiërarchische blokken.
Bron: opennet.ru
