Veröffentlichung von GNU Radio 3.10.0

Nach einem Jahr der Entwicklung wurde eine neue bedeutende Version der kostenlosen digitalen Signalverarbeitungsplattform GNU Radio 3.10 veröffentlicht. Die Plattform umfasst eine Reihe von Programmen und Bibliotheken, mit denen Sie beliebige Funksysteme, Modulationsschemata und die Form empfangener und gesendeter Signale erstellen können, die programmgesteuert festgelegt werden, und einfache Hardwaregeräte werden zum Erfassen und Erzeugen von Signalen verwendet. Das Projekt wird unter der GPLv3-Lizenz vertrieben. Der Code für die meisten GNU Radio-Komponenten ist in Python geschrieben, die Teile, die für Leistung und Latenz entscheidend sind, sind in C++ geschrieben, wodurch das Paket bei der Lösung von Problemen in Echtzeit verwendet werden kann.

In Kombination mit universell programmierbaren Transceivern, die nicht an das Frequenzband und die Art der Signalmodulation gebunden sind, können mit der Plattform Geräte wie Basisstationen für GSM-Netze, Geräte zum Fernlesen von RFID-Tags (elektronische Zertifikate und Ausweise, Smartcards) erstellt werden ), GPS-Empfänger, WLAN, UKW-Radioempfänger und -sender, TV-Decoder, passive Radargeräte, Spektrumanalysatoren usw. Neben USRP kann das Paket weitere Hardwarekomponenten zur Signalein- und -ausgabe nutzen, beispielsweise sind Treiber für Soundkarten, TV-Tuner, BladeRF-Geräte, Myriad-RF, HackRF, UmTRX, Softrock, Comedi, Funcube, FMCOMMS, verfügbar. USRP und S-Mini.

Die Struktur umfasst auch eine Sammlung von Filtern, Kanalcodecs, Synchronisationsmodulen, Demodulatoren, Equalizern, Sprachcodecs, Decodern und anderen Elementen, die zum Erstellen von Funksystemen erforderlich sind. Diese Elemente können als Bausteine ​​für das fertige System verwendet werden, was Ihnen in Kombination mit der Fähigkeit, Datenflüsse zwischen Blöcken zu bestimmen, den Entwurf von Funksystemen auch ohne Programmierkenntnisse ermöglicht.

Wichtigste Änderungen:

  • Es wurde ein neues gr-pdu-Modul hinzugefügt, das Werkzeuge zum Bearbeiten von Objekten mit dem PDU-Typ (Protocol Data Unit) bereitstellt, der für die Datenübertragung zwischen GNU-Radio-Blöcken verwendet wird. Vom gr-blocks-Modul wurden alle PDUs in die gr-network- und gr-pdu-Module verschoben und anstelle von gr-blocks wurde eine Ebene belassen, um die Abwärtskompatibilität sicherzustellen. Vektor-PDU-Typen sind jetzt im Namespace gr::types und PDU-Manipulationsfunktionen im Namespace gr::pdu verfügbar.
  • Es wurde ein neues gr-iio-Modul hinzugefügt, das ein I/O-Framework für die Organisation des Datenaustauschs zwischen GNU Radio und Industriegeräten basierend auf dem IIO-Subsystem (Industrial I/O) bereitstellt, wie z. B. PlutoSDR, AD-FMCOMMS2-EBZ, AD- FMCOMMS3-EBZ, AD-FMCOMMS4-EBZ, ARRADIO und AD-FMCOMMS5-EBZ.
  • Es wurde experimentelle Unterstützung für die Custom Buffer-Klasse vorgeschlagen, die die Datenübertragung zwischen GNU-Radio-Blöcken und Hardware-Beschleunigern auf Basis von GPU, FPGA und DSP vereinfacht. Die Verwendung von „custom_buffer“ vermeidet das Schreiben spezieller Blöcke, um eine Beschleunigung auf der GPU-Seite zu ermöglichen, und ermöglicht es, Daten direkt vom GNU Radio-Ringpuffer in den GPU-Speicher zu verschieben, CUDA-Kernel auszuführen und Daten mit dem Ergebnis an GNU Radio-Puffer zurückzugeben.
  • Die Protokollierungsinfrastruktur wurde auf die Verwendung der spdlog-Bibliothek umgestellt, wodurch die Arbeit mit Protokollen komfortabler gestaltet, Aufrufe von iostream und cstdio entfallen, libfmt-Ausdrücke für die Zeichenfolgenformatierung unterstützt und die Programmierschnittstelle modernisiert werden konnten. Die zuvor verwendete Log4CPP-Bibliothek wurde aus den Abhängigkeiten entfernt.
  • Der Übergang zur Verwendung bei der Entwicklung des C++ 17-Standards ist erfolgt. Die boost::filesystem-Bibliothek wurde durch std::filesystem ersetzt.
  • Erhöhte Anforderungen an Compiler (GCC 9.3, Clang 11, MSVC 1916) und Abhängigkeiten (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-Bindungen für RFNoC-Blöcke hinzugefügt.
  • Den Blöcken zum Erstellen der grafischen Schnittstelle gr-qtgui wurde Unterstützung für Qt 6.2 hinzugefügt. Option „--output“ für hierarchische Blöcke zur GRC-GUI (GNU Radio Companion) hinzugefügt.

Source: opennet.ru

Kommentar hinzufügen