Signal Source: Difference between revisions

From GNU Radio
Jump to navigation Jump to search
(14 intermediate revisions by the same user not shown)
Line 14: Line 14:
: options: [Constant, Sine, Cosine, Square, Triangle, Saw Tooth]
: options: [Constant, Sine, Cosine, Square, Triangle, Saw Tooth]
: For selection with a variable, the following values should be used:
: For selection with a variable, the following values should be used:
  * Constant = 100
:* Constant = 100
  * Sine = 101
:* Sine = 101
  * Cosine = 102
:* Cosine = 102
  * Square = 103
:* Square = 103
  * Triangle = 104
:* Triangle = 104
  * Sawtooth = 105
:* Sawtooth = 105


; Frequency (''R'')
; Frequency (''R'')
Line 37: Line 37:
; cmd
; cmd
: The 'cmd' message port accepts message [https://wiki.gnuradio.org/index.php/Polymorphic_Types_(PMTs)#Pairs pairs].
: The 'cmd' message port accepts message [https://wiki.gnuradio.org/index.php/Polymorphic_Types_(PMTs)#Pairs pairs].
*: 'freq' . float value
:*'freq' . float value
*: 'ampl' . float value
:*'ampl' . float value
*: 'phase' . float value
:*'phase' . float value
*: 'offset' . float value
:*'offset' . float value
: For GNU Radio 3.8, the messages dont work correctly with pairs, but they do work fine with a dictionary. This issue is explained [https://github.com/gnuradio/gnuradio/issues/4239 here].
: The amplitude of the signal source can be changed to 0.5 by adding the following PMT to the message strobe block.
: <syntaxhighlight lang="python">
pmt.dict_add(pmt.make_dict(), pmt.intern("ampl"), pmt.from_double(0.5))
</syntaxhighlight>
: The above command creates a dictionary and adds a pmt pair of ("ampl", 0.5) to the dictionary.


; freq
; freq
: The value of frequency in the signal source can be changed by connecting a message strobe with the Message PMT set to '''pmt.from_float(new_freq)'''. In this way, the frequency of the signal source will be changed to new_freq value after the specified period in the message strobe. In the following example, the frequency of the signal source is changed to 1k Hz after 5 seconds.
: The value of frequency in the signal source can be changed by connecting a message strobe. The Message PMT parameter can be set to '''pmt.from_float(new_freq)'''. In this way, the frequency of the signal source will be changed to new_freq value after the specified period in the message strobe.  
[[File:Message_strobe_settings.PNG | 300px]]
 
[[File:Signal_source_freq_msg_port.PNG]]


: The 'freq' message port has been <code>deprecated in 3.9</code> in favor of the 'cmd' message port.
: The 'freq' message port has been <code>deprecated in 3.9</code> in favor of the 'cmd' message port.
Line 83: Line 86:


; C++ files
; C++ files
: [https://github.com/gnuradio/gnuradio/blob/master/gr-analog/lib/sig_source_impl.cc]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-analog/lib/sig_source_impl.cc sig_source_impl.cc]


; Header files
; Header files
: [https://github.com/gnuradio/gnuradio/blob/master/gr-analog/lib/sig_source_impl.h]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-analog/lib/sig_source_impl.h sig_source_impl.h]


; Public header files
; Public header files
: [https://github.com/gnuradio/gnuradio/blob/master/gr-analog/include/gnuradio/analog/sig_source.h Base]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-analog/include/gnuradio/analog/sig_source.h Base]
: [https://github.com/gnuradio/gnuradio/blob/master/gr-analog/include/gnuradio/analog/sig_source_waveform.h Waveforms]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-analog/include/gnuradio/analog/sig_source_waveform.h Waveforms]


; Block definition
; Block definition
: [https://github.com/gnuradio/gnuradio/blob/master/gr-analog/grc/analog_sig_source_x.block.yml]
: [https://github.com/gnuradio/gnuradio/blob/main/gr-analog/grc/analog_sig_source_x.block.yml analog_sig_source_x.block.yml]

Revision as of 07:39, 26 January 2022

Signal generator: generates a variety of waveforms.

Supports an output of type complex, float, int, and short

Parameters

(R): Run-time adjustable

Sample Rate (R)
Default value: samp_rate
Sample rate (fs) is the average number of samples obtained in one second. Its units are samples per second or hertz e.g. 48,000 sample rate is 48 kHz.
Waveform (R)
options: [Constant, Sine, Cosine, Square, Triangle, Saw Tooth]
For selection with a variable, the following values should be used:
  • Constant = 100
  • Sine = 101
  • Cosine = 102
  • Square = 103
  • Triangle = 104
  • Sawtooth = 105
Frequency (R)
Frequency of the waveform (default: 1000)
Amplitude (R)
Amplitude of the output (default: 1)
Offset (R)
Offset from zero (default: 0)
Initial Phase (Radians) (R)
Default: 0

Message Ports

cmd
The 'cmd' message port accepts message pairs.
  • 'freq' . float value
  • 'ampl' . float value
  • 'phase' . float value
  • 'offset' . float value
For GNU Radio 3.8, the messages dont work correctly with pairs, but they do work fine with a dictionary. This issue is explained here.
The amplitude of the signal source can be changed to 0.5 by adding the following PMT to the message strobe block.
 pmt.dict_add(pmt.make_dict(), pmt.intern("ampl"), pmt.from_double(0.5))
The above command creates a dictionary and adds a pmt pair of ("ampl", 0.5) to the dictionary.
freq
The value of frequency in the signal source can be changed by connecting a message strobe. The Message PMT parameter can be set to pmt.from_float(new_freq). In this way, the frequency of the signal source will be changed to new_freq value after the specified period in the message strobe.
The 'freq' message port has been deprecated in 3.9 in favor of the 'cmd' message port.

Example Flowgraph

This flowgraph is for version 3.9+.

Signal-source-ex.png

Example Output

Types of Waveforms:

Cosine (complex):

Signal-source-cosine.png

Constant:

Signal-source-constant.png

Square:

Signal-source-square.png

Triangle:

Signal-source-triangle.png

Sawtooth:

Signal-source-sawtooth.png

Source Files

C++ files
sig_source_impl.cc
Header files
sig_source_impl.h
Public header files
Base
Waveforms
Block definition
analog_sig_source_x.block.yml