Na een jaar van ontwikkeling is er een nieuwe belangrijke release van het gratis platform voor digitale signaalverwerking GNU Radio 3.10. Het platform bevat een set programma's en bibliotheken waarmee willekeurige radiosystemen kunnen worden gemaakt, evenals modulatieschema's en de vormen van verzonden en ontvangen signalen die programmatisch zijn gedefinieerd, waarbij eenvoudige hardware wordt gebruikt voor de signaalopname en -generatie. Het project wordt verspreid onder de GPLv3-licentie. De meeste componenten van GNU Radio zijn geschreven in Python, terwijl performance- en latency-kritieke delen zijn geschreven in C++, waardoor het pakket kan worden gebruikt voor realtime toepassingen.
In combinatie met universele programmeerbare zenders en ontvangers, die niet zijn gebonden aan een frequentieband of het type modulatie van het signaal, kan het platform worden gebruikt voor het creƫren van apparaten zoals basisstations voor GSM-netwerken, apparaten voor het op afstand uitlezen van RFID-tags (elektronische identificaties en toegangspassen, smart cards), GPS-ontvangers, WiFi, FM-radiozenders en -ontvangers, TV-decoders, passieve radar, spectrale analysers, enz. Naast USRP kan het pakket ook andere hardwarecomponenten voor signaalinvoer en -uitvoer gebruiken, zoals drivers voor geluidskaarten, TV-tuners, BladeRF-apparaten, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, USRP en S-Mini.
Ook bevat het een verzameling filters, kanaalcodecs, synchronisatied modules, demodulatoren, equalizers, spraakcodecs, decoders en andere noodzakelijke elementen voor het bouwen van radiosystemen. De genoemde elementen kunnen worden gebruikt als bouwstenen voor het samenstellen van een compleet systeem, wat in combinatie met de mogelijkheden voor het definiƫren van datastromen tussen blokken het mogelijk maakt om radiosystemen te ontwerpen zonder programmeerkennis.
Belangrijkste wijzigingen:
- Een nieuwe module gr-pdu is toegevoegd, waarin de tools voor het manipuleren van objecten van het type PDU (Protocol Data Unit), gebruikt voor gegevens die tussen de blokken van GNU Radio worden overgedragen, zijn ondergebracht. Uit de module gr-blocks zijn alle PDU-blokken overgedragen naar de modules gr-network en gr-pdu, terwijl er voor gr-blocks een laag is behouden voor terugwaartse compatibiliteit. Vector PDU-typen zijn nu beschikbaar in de namespace gr::types, en functies voor het manipuleren van PDU's zijn te vinden in de namespace gr::pdu.
- Een nieuwe gr-iio-module is toegevoegd, die een invoer-/uitvoerframework biedt voor de organisatie van gegevensuitwisseling tussen GNU Radio en industriƫle apparaten op basis van de IIO (Industrial I/O) subsystemen, zoals PlutoSDR, AD-FMCOMMS2-EBZ, AD-FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO en AD-FMCOMMS5-EBZ.
- Experimentele ondersteuning voor de Custom Buffer-klasse is voorgesteld, die de gegevensoverdracht tussen de blokken van GNU Radio en hardwareversnellers op basis van GPU, FPGA en DSP vereenvoudigt. Het gebruik van custom_buffer maakt het mogelijk om geen speciale blokken te schrijven voor versnelling aan de GPU-zijde en biedt de mogelijkheid om gegevens direct van de ringbuffer van GNU Radio naar het GPU-geheugen te verplaatsen, CUDA-kernels uit te voeren en gegevens met de resultaten terug te brengen naar de buffers van GNU Radio.
- De infrastructuur voor logboekregistratie is overgestapt naar het gebruik van de spdlog-bibliotheek, wat het gebruiksgemak met logs heeft verbeterd, het gebruik van iostream en cstdio heeft geƫlimineerd, ondersteuning voor libfmt-expressies voor het formatteren van strings heeft geboden en de programmeerinterface heeft gemoderniseerd. De eerder gebruikte Log4CPP-bibliotheek is verwijderd uit de afhankelijkheden.
- De overstap naar de ontwikkeling met de C++17-standaard is gerealiseerd. De boost::filesystem-bibliotheek is vervangen door std::filesystem.
- De vereisten voor compilers zijn verhoogd (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-bindings voor RFNoC-blokken zijn toegevoegd.
- In de blokken voor het bouwen van de grafische interface gr-qtgui is ondersteuning voor Qt 6.2 toegevoegd. De grafische interface GRC (GNU Radio Companion) heeft de optie "--output" toegevoegd voor hiƫrarchische blokken.
Bron: opennet.ru
