This webpage introduces some software frameworks for developing and testing software-defined radio (SDR) applications. SDR is a radio communication system where components that are traditionally implemented in hardware (such as mixers, filters, amplifiers, modulators, demodulators, etc.) are instead implemented by software on a personal computer or embedded system. SDR enables the creation of flexible, reconfigurable, and adaptable radio systems for various purposes and standards.
The following sections describe three popular SDR frameworks: LabVIEW, GNU Radio, and MATLAB. Each section provides a brief overview of the framework, its features and capabilities, and some examples of its usage.
LabVIEW is a graphical programming environment for designing, prototyping, and deploying applications that require test, measurement, and control. LabVIEW can be used with external radio frequency (RF) hardware to create SDR applications, or without hardware in a simulation-like environment. LabVIEW provides a large set of built-in functions and toolboxes for signal processing, analysis, visualization, and communication. LabVIEW also supports integration with other languages and platforms, such as Python, C/C++, .NET, and MathWorks MATLAB1.
Some examples of SDR applications that can be developed with LabVIEW are:
Spectrum monitoring and analysis
RF signal generation and modulation
Wireless communication protocols (such as LTE, WLAN, Bluetooth, etc.)
Radar and electronic warfare systems
Cognitive radio and dynamic spectrum access
Teaching and fast prototyping
GNU Radio is a free and open-source software development toolkit that provides signal processing blocks to implement SDR applications. GNU Radio can be used with readily-available low-cost external RF hardware to create SDR systems, or without hardware in a simulation-like environment. GNU Radio offers a graphical user interface (GUI) called GNU Radio Companion (GRC) for creating signal flow graphs by dragging and dropping blocks. GNU Radio also supports scripting in Python and C++ for more advanced users. GNU Radio has a large and active community of developers and users who contribute new blocks, modules, and applications2.
Some examples of SDR applications that can be developed with GNU Radio are:
FM radio receiver and transmitter
Digital audio broadcasting (DAB) receiver
Software-defined GPS receiver
Amateur radio modes (such as PSK31, SSTV, etc.)
Software-defined networking (SDN) and network coding
MATLAB is a programming and numeric computing platform that is widely used by engineers and scientists to analyze data, develop algorithms, and create models. MATLAB can be used with external RF hardware to create SDR applications, or without hardware in a simulation-like environment. MATLAB provides a rich set of functions and toolboxes for signal processing, machine learning, deep learning, image processing, computer vision, wireless communication, and more. MATLAB also supports integration with other languages and platforms, such as Python, C/C++, Java, Simulink, and LabVIEW3.
Some examples of SDR applications that can be developed with MATLAB are:
Channel estimation and equalization
OFDM modulation and demodulation
MIMO systems and beamforming
Speech recognition and synthesis
Neural network-based modulation classification