Tutorials: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
No edit summary
Tag: Manual revert
No edit summary
Line 1: Line 1:
= GNU Radio Academy =
For someone brand new to GNU Radio, we recommend doing 1) all beginner tutorials 2) the three "Core GNU Radio Mechanics" pages 3) a couple intermediate tutorials.


The following sequence of tutorials will carry a new user through the core GNU Radio concepts, while providing examples along the way.  If you already have experience with GNU Radio, feel free to skip the first several.
{|
 
|- valign="top"
# [[Guided_Tutorial_Introduction|'''A Brief Introduction to GNU Radio, SDR, and DSP''']]
|{{BeginnerTutorials}}
# [[Guided_Tutorial_GRC|'''Introduction to GNU Radio Usage: GRC and Flowgraphs''']]
|
# [[Porting_Existing_Flowgraphs_to_a_Newer_Version|'''Porting Existing Flowgraphs to a Newer Version''']]
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"
# [[Sample_Rate_Tutorial|'''Understanding Sample Rate''']]
|'''Intermediate Tutorials'''
# [[IQ_Complex_Tutorial|'''IQ and Complex Signals''']]
Modulation and Demodulation
# '''Simulation Examples (we recommend going through at least one):'''
# [[Simulation_example:_Narrowband_FM_transceiver|Narrowband FM]]
#* [[Simulation_example:_FSK|'''Frequency Shift Keying (FSK)''']]
# [[Simulation_example:_Single_Sideband_transceiver|Single Sideband (SSB)]]
#* [[Simulation_example:_AM_transmitter_and_receiver|'''AM transmitter and receiver''']]
# [[Simulation_example:_BPSK_Demodulation|BPSK Demodulation]]
#* [[Simulation_example:_Single_Sideband_transceiver|'''Single Sideband transceiver''']]
# [[Guided_Tutorial_PSK_Demodulation|QPSK Mod and Demod]]
#* [[Simulation_example:_Narrowband_FM_transceiver|'''Narrowband FM transceiver''']]
# [[Simulation_example:_FSK|Frequency Shift Keying (FSK)]]
#* [[Guided_Tutorial_PSK_Demodulation|'''QPSK Modulation / Demodulation''']]
# [[Basic_OFDM_Tutorial|OFDM Basics]]
#* [[Simulation_example:_BPSK_Demodulation|'''BPSK Demodulation''']]
# [[Packet_Communications|Packet Communications]]
#* [[Basic_OFDM_Tutorial|'''OFDM Basics''']]
Misc
# [[Guided_Tutorial_Hardware_Considerations|'''Using GNU Radio with Hardware''']]
# [[IQ_Complex_Tutorial|IQ and Complex Signals]]
# [[Flowgraph_Python_Code|'''Understanding a Flowgraph's Python Code''']]
# [[Sample_Rate_Tutorial|Understanding Sample Rate]]
# [[Embedded_Python_Block|'''Writing your own block''' (using Embedded Python Block)]]
# [[Guided_Tutorial_Hardware_Considerations|Using GNU Radio With SDRs]]
# [[Polymorphic Types (PMTs)|'''Polymorphic Types (PMTs)''']]
# [[Understanding_ZMQ_Blocks|Understanding ZMQ Blocks]]
# [[Stream Tags|'''Stream Tags''']]
|}
# [[Message Passing|'''Message Passing''']]
|
# [[Understanding_ZMQ_Blocks|'''Understanding ZMQ Blocks''']]
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"
# [[Understanding_XMLRPC_Blocks|'''Remote Control and Automation of Flowgraphs with XMLRPC''']]
| '''Reference Pages'''
# [[Packet_Communications|'''Packet Communications''']]
Core GNU Radio Mechanics
# [[OutOfTreeModules|'''Out of Tree modules''']]
# [[Stream_Tags|Stream Tags]]
# [[XML_GRC|'''Writing the XML file for a block''' (for 3.7)]] or [[YAML_GRC|'''Writing the YAML file for a block''' (for 3.8+)]]
# [[Polymorphic_Types_(PMTs)|Polymorphic Types (PMTs)]]
# [[Guided_Tutorial_GNU_Radio_in_C++|'''Writing blocks in C++''']]
# [[Message_Passing|Message Passing]]
 
Creating Custom Blocks
= Developer Resources =
# [[Flowgraph_Python_Code|Understanding a Flowgraph's Python Code]]
* [[VOLK_Guide|'''Volk- what it does, why it rocks, how to write new kernels''']]
# [[OutOfTreeModules|Out of Tree Modules]]
* [[GNU Radio 3.8 OOT Module Porting Guide|'''Porting Existing OOTs from 3.7 to 3.8''']]
# [[Guided_Tutorial_GNU_Radio_in_C%2B%2B|Writing blocks in C++]]
* [[GNU Radio 3.9 OOT Module Porting Guide|'''Porting Existing OOTs from 3.8 to 3.9''']]
# [[YAML_GRC|Writing the YAML file for a block (GR 3.8+)]]
* [[ALSAPulseAudio|'''Working with ALSA and Pulse Audio''']]
# [[XML_GRC|Writing the XML file for a block (GR v3.7)]]
* [[UsingVSCode|'''Using Visual Studio Code for Source level debugging of C++ OOTs''']]
Porting Blocks and Flowgraphs
* [[UsingEclipse|'''Using Eclipse for Building and Source level debugging C++ OOTs''']]
# [[Porting_Existing_Flowgraphs_to_a_Newer_Version|Porting Existing Flowgraphs to Newer Version]]
* [[UsingCB|'''Using Code::Blocks IDE for GNU Radio Development''']]
# [[GNU_Radio_3.8_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.7 to 3.8]]
* [[DevelopingWithGit|'''Git and GNU Radio''']]
# [[GNU_Radio_3.9_OOT_Module_Porting_Guide|Porting Existing OOTs from 3.8 to 3.9]]
* [[Octave|'''How to use Octave or Matlab with GNU Radio''']]
|}
* [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.html '''The GNU Radio Scheduler''']
{| class="wikitable" style="background-color:#f1edff;" cellpadding="10"
* [[CustomBuffers| '''Using Custom Buffers for Hardware Accelerated Blocks''']]
|'''Developer Resources'''
# [[VOLK_Guide|Volk- what it does, why it rocks, how to write new kernels]]
# [[ALSAPulseAudio|Working with ALSA and Pulse Audio]]
# [[UsingVSCode|Using Visual Studio Code for Source level debugging of C++ OOTs]]
# [[UsingEclipse|Using Eclipse for Building and Source level debugging C++ OOTs]]
# [[UsingCB|Using Code::Blocks IDE for GNU Radio Development]]
# [[DevelopingWithGit|Git and GNU Radio]]
# [[Octave|How to use Octave or Matlab with GNU Radio]]
# [http://www.trondeau.com/blog/2013/9/15/explaining-the-gnu-radio-scheduler.htmlThe GNU Radio Scheduler]
# [[CustomBuffers|Using Custom Buffers for Hardware Accelerated Blocks]]
# [[Understanding_XMLRPC_Blocks|Remote Control and Automation of Flowgraphs with XMLRPC]]
|}
|}

Revision as of 06:02, 2 February 2022

For someone brand new to GNU Radio, we recommend doing 1) all beginner tutorials 2) the three "Core GNU Radio Mechanics" pages 3) a couple intermediate tutorials.

Beginner Tutorials

Introducing GNU Radio

  1. What is GNU Radio?
  2. Installing GNU Radio
  3. Your First Flowgraph

Flowgraph Fundamentals

  1. Python Variables in GRC
  2. Variables in Flowgraphs
  3. Runtime Updating Variables
  4. Signal Data Types
  5. Converting Data Types
  6. Packing Bits
  7. Streams and Vectors
  8. Hier Blocks and Parameters

Creating and Modifying Python Blocks

  1. Creating Your First Block
  2. Python Block With Vectors
  3. Python Block Message Passing
  4. Python Block Tags

DSP Blocks

  1. Low Pass Filter Example
  2. Designing Filter Taps
  3. Sample Rate Change
Intermediate Tutorials

Modulation and Demodulation

  1. Narrowband FM
  2. Single Sideband (SSB)
  3. BPSK Demodulation
  4. QPSK Mod and Demod
  5. Frequency Shift Keying (FSK)
  6. OFDM Basics
  7. Packet Communications

Misc

  1. IQ and Complex Signals
  2. Understanding Sample Rate
  3. Using GNU Radio With SDRs
  4. Understanding ZMQ Blocks
Reference Pages

Core GNU Radio Mechanics

  1. Stream Tags
  2. Polymorphic Types (PMTs)
  3. Message Passing

Creating Custom Blocks

  1. Understanding a Flowgraph's Python Code
  2. Out of Tree Modules
  3. Writing blocks in C++
  4. Writing the YAML file for a block (GR 3.8+)
  5. Writing the XML file for a block (GR v3.7)

Porting Blocks and Flowgraphs

  1. Porting Existing Flowgraphs to Newer Version
  2. Porting Existing OOTs from 3.7 to 3.8
  3. Porting Existing OOTs from 3.8 to 3.9
Developer Resources
  1. Volk- what it does, why it rocks, how to write new kernels
  2. Working with ALSA and Pulse Audio
  3. Using Visual Studio Code for Source level debugging of C++ OOTs
  4. Using Eclipse for Building and Source level debugging C++ OOTs
  5. Using Code::Blocks IDE for GNU Radio Development
  6. Git and GNU Radio
  7. How to use Octave or Matlab with GNU Radio
  8. GNU Radio Scheduler
  9. Using Custom Buffers for Hardware Accelerated Blocks
  10. Remote Control and Automation of Flowgraphs with XMLRPC