GNU Radio Signal Generator GUI
with auto-duc automatic center frequency tracking, allows
you to just set absolute frequency and go.
usrp_siggen_gui.py The code so far.
It needs these green numerals
Screenshot of siggen GUI alongside the hf-explorer - signal generator
is creating a signal at 3949Khz, looped back at the usrp with an analog physical
external coax between basic-RX and basic-TX daughterboards, and received
with hf_explorer_11 tuned to 3950Khz lower-sideband, generating a 1khz audio tone:
Operating notes: Frequency is set with a slider (very coarse), thumbwheels,
spin control buttons, typing frequency into spin control or spinning a
powermate knob. The GUI is based on gnuradio-examples/python/usrp/usrp_siggen.py
but the definition of frequency is different. Here frequency is absolute, not
relative to the digital-upconverter (DUC) center. usrp_siggen_gui.py takes the same
command line arguments as usrp_siggen.py. Once the gui is running you can
press the auto-duc button to automatically set the center frequency
appropriate for the given interpolation and requested output frequency, then
press run to start the signal generator. DUC center, frequency and amplitude
can be changed with the generator running. Waveform (sine, random gaussian
or uniform) or interpolation will stop the generator to effect changes
and you have to press 'run' again. With auto-DUC on, you can change frequency
and the DUC center frequency will automatically track with appropriate
values. If output becomes corrupted, which can happen
if another gnuradio application is started with the generator running, just
press 'run' twice to stop and then rebuild/restart the flow graph.
Wow, playing around with the siggen and the usrp_scope.py you can
get some really artistic dsp effects, like playing with two signal
generators making Lissajous figures on a crt in the old analog days.
The one just above slowly rotates the 4 point sine waves in a
smooth undulating pattern when the frequency is set just right,
at 199,973hz on the siggen and 5uSec/div on the scope.