This commit is contained in:
Kurt Moraw
2020-10-27 16:41:16 +01:00
parent 647db711c4
commit 3deb0a09fd
514 changed files with 242695 additions and 2 deletions
+919
View File
@@ -0,0 +1,919 @@
options:
parameters:
author: kurt
category: '[GRC Hier Blocks]'
cmake_opt: ''
comment: 'requires GNU Radio 3.8xxx
does NOT work with 3.7x'
copyright: ''
description: requires GNU Radio 3.8xxx
gen_cmake: 'Off'
gen_linking: dynamic
generate_options: no_gui
hier_block_src_path: '.:'
id: rx_8psk
max_nouts: '0'
output_language: python
placement: (0,0)
qt_qss_theme: ''
realtime_scheduling: ''
run: 'True'
run_command: '{python} -u {filename}'
run_options: run
sizing_mode: fixed
thread_safe_setters: ''
title: 8PSK Modem DJ0ABR
window_size: ''
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [16, 12.0]
rotation: 0
state: enabled
blocks:
- name: mixf
id: variable
parameters:
comment: 'mid frequency
in the audio
spectrum. Set to get
lowest and highest
frequency within the
transceiver filter range.'
value: '1500'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [336, 12.0]
rotation: 0
state: enabled
- name: nfilts
id: variable
parameters:
comment: ''
value: '32'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1112, 12.0]
rotation: 0
state: enabled
- name: outputsps
id: variable
parameters:
comment: 'Samples/Symbol
fixed value,
do not change.
Used to adjust
bitrate vs. bandwidth'
value: '7'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [40, 180.0]
rotation: 0
state: enabled
- name: rrc_taps
id: variable
parameters:
comment: ''
value: firdes.root_raised_cosine(nfilts, nfilts, 1.1/float(sps), 0.2, 11*sps*nfilts)
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1184, 12.0]
rotation: 0
state: enabled
- name: sps
id: variable
parameters:
comment: 'Samples/Symbol
fixed value,
do not change'
value: '4'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [488, 12.0]
rotation: 0
state: enabled
- name: analog_agc2_xx_0_0
id: analog_agc2_xx
parameters:
affinity: ''
alias: ''
attack_rate: 1e-2
comment: Costas loop needs AGC (loop gain depends on input level)
decay_rate: '0.2'
gain: '2'
max_gain: '3'
maxoutbuf: '0'
minoutbuf: '0'
reference: '1'
type: complex
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [400, 620.0]
rotation: 0
state: enabled
- name: analog_const_source_x_0
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: 'Marker to find the start
of the values'
const: '1000'
maxoutbuf: '0'
minoutbuf: '0'
type: int
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [472, 916.0]
rotation: 180
state: true
- name: analog_const_source_x_0_0
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: 'Marker to find the start
of the values'
const: '1000'
maxoutbuf: '0'
minoutbuf: '0'
type: int
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [536, 1076.0]
rotation: 180
state: true
- name: analog_const_source_x_0_1
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: ''
const: '16777216'
maxoutbuf: '0'
minoutbuf: '0'
type: float
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [792, 1044.0]
rotation: 180
state: true
- name: analog_sig_source_x_0_0_0
id: analog_sig_source_x
parameters:
affinity: ''
alias: ''
amp: '1'
comment: 'the modulator output is in the baseband at 0 Hz.
Mix it with the required audio mid frequency.
cos and -sin are used to combine I and Q
into the frinal signal.
Use it als for RX in the reverse direction'
freq: mixf
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
phase: '0'
samp_rate: samp_rate
type: complex
waveform: analog.GR_COS_WAVE
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [592, 76.0]
rotation: 0
state: enabled
- name: audio_source_0
id: audio_source
parameters:
affinity: ''
alias: ''
comment: get audio from transceiver
device_name: ''
maxoutbuf: '0'
minoutbuf: '0'
num_outputs: '1'
ok_to_block: 'True'
samp_rate: samp_rate
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1384, 364.0]
rotation: 180
state: true
- name: blocks_complex_to_float_0
id: blocks_complex_to_float
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [824, 1160.0]
rotation: 180
state: true
- name: blocks_complex_to_float_1
id: blocks_complex_to_float
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [816, 104.0]
rotation: 0
state: enabled
- name: blocks_float_to_complex_0
id: blocks_float_to_complex
parameters:
affinity: ''
alias: ''
comment: 'combile I and Q
to complex signal'
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [552, 336.0]
rotation: 180
state: true
- name: blocks_float_to_int_0
id: blocks_float_to_int
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
scale: '16777216'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [632, 1156.0]
rotation: 180
state: true
- name: blocks_float_to_int_0_0
id: blocks_float_to_int
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
scale: '16777216'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [632, 1204.0]
rotation: 180
state: true
- name: blocks_float_to_int_0_1
id: blocks_float_to_int
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
scale: '1'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [520, 1012.0]
rotation: 180
state: true
- name: blocks_interleave_0
id: blocks_interleave
parameters:
affinity: ''
alias: ''
blocksize: '1'
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_streams: '2'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [360, 1000.0]
rotation: 180
state: true
- name: blocks_interleave_0_0
id: blocks_interleave
parameters:
affinity: ''
alias: ''
blocksize: '1'
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_streams: '3'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [328, 1128.0]
rotation: 180
state: true
- name: blocks_multiply_xx_0_0_0
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: make I
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [744, 304.0]
rotation: 180
state: enabled
- name: blocks_multiply_xx_0_1
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: make Q
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [808, 400.0]
rotation: 180
state: enabled
- name: blocks_multiply_xx_0_1_0
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [648, 984.0]
rotation: 180
state: enabled
- name: blocks_udp_sink_0
id: blocks_udp_sink
parameters:
affinity: ''
alias: ''
comment: 'send RX data to UDP
port 1235 on the local machine'
eof: 'False'
ipaddr: 127.0.0.1
port: '40135'
psize: '344'
type: byte
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1272, 516.0]
rotation: 0
state: true
- name: blocks_udp_sink_0_0
id: blocks_udp_sink
parameters:
affinity: ''
alias: ''
comment: 'send QPSK Constellation data to UDP
port 1236 on the local machine'
eof: 'False'
ipaddr: 127.0.0.1
port: '40136'
psize: '120'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [72, 1004.0]
rotation: 180
state: enabled
- name: blocks_udp_sink_0_0_0
id: blocks_udp_sink
parameters:
affinity: ''
alias: ''
comment: 'send QPSK Constellation data to UDP
port 1236 on the local machine'
eof: 'False'
ipaddr: 127.0.0.1
port: '40137'
psize: '120'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [72, 1132.0]
rotation: 180
state: enabled
- name: digital_constellation_decoder_cb_0
id: digital_constellation_decoder_cb
parameters:
affinity: ''
alias: ''
comment: '8PSK decoding, same
parameters as modulator'
constellation: digital.constellation_8psk_natural().base()
maxoutbuf: '0'
minoutbuf: '0'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [824, 540.0]
rotation: 0
state: enabled
- name: digital_costas_loop_cc_0
id: digital_costas_loop_cc
parameters:
affinity: ''
alias: ''
comment: 'locks the signal and
converts into baseband'
maxoutbuf: '0'
minoutbuf: '0'
order: '8'
use_snr: 'False'
w: '0.15'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [584, 528.0]
rotation: 0
state: enabled
- name: digital_diff_decoder_bb_0
id: digital_diff_decoder_bb
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
modulus: '8'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1048, 540.0]
rotation: 0
state: enabled
- name: digital_lms_dd_equalizer_cc_0
id: digital_lms_dd_equalizer_cc
parameters:
affinity: ''
alias: ''
cnst: digital.constellation_8psk_natural().base()
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
mu: '0.01'
num_taps: '15'
sps: outputsps
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [304, 468.0]
rotation: 0
state: enabled
- name: digital_pfb_clock_sync_xxx_0
id: digital_pfb_clock_sync_xxx
parameters:
affinity: ''
alias: ''
comment: 'synchronize the Clock,
works very well with drifting
QO-100 signal'
filter_size: nfilts
init_phase: nfilts/16
loop_bw: '0.06'
max_dev: '2'
maxoutbuf: '0'
minoutbuf: '0'
osps: outputsps
sps: sps
taps: rrc_taps
type: ccf
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [80, 556.0]
rotation: 0
state: enabled
- name: low_pass_filter_0
id: low_pass_filter
parameters:
affinity: ''
alias: ''
beta: '6.76'
comment: 'Anti-Aliasing filter
Level correction
and decimation'
cutoff_freq: '3900'
decim: '1'
gain: '12'
interp: '1'
maxoutbuf: '0'
minoutbuf: '0'
samp_rate: samp_rate
type: fir_filter_fff
width: '3300'
win: firdes.WIN_HAMMING
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1048, 316.0]
rotation: 180
state: enabled
- name: mmse_resampler_xx_0
id: mmse_resampler_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
phase_shift: '0'
resamp_ratio: resamp
type: complex
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [136, 352.0]
rotation: 180
state: true
- name: mmse_resampler_xx_0_0
id: mmse_resampler_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
phase_shift: '0'
resamp_ratio: samp_rate / 8000
type: float
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [776, 904.0]
rotation: 180
state: true
- name: qtgui_const_sink_x_0
id: qtgui_const_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
alpha4: '1.0'
alpha5: '1.0'
alpha6: '1.0'
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
autoscale: 'False'
axislabels: 'True'
color1: '"blue"'
color10: '"red"'
color2: '"red"'
color3: '"red"'
color4: '"red"'
color5: '"red"'
color6: '"red"'
color7: '"red"'
color8: '"red"'
color9: '"red"'
comment: ''
grid: 'False'
gui_hint: ''
label1: ''
label10: ''
label2: ''
label3: ''
label4: ''
label5: ''
label6: ''
label7: ''
label8: ''
label9: ''
legend: 'True'
marker1: '0'
marker10: '0'
marker2: '0'
marker3: '0'
marker4: '0'
marker5: '0'
marker6: '0'
marker7: '0'
marker8: '0'
marker9: '0'
name: '""'
nconnections: '1'
size: '1024'
style1: '0'
style10: '0'
style2: '0'
style3: '0'
style4: '0'
style5: '0'
style6: '0'
style7: '0'
style8: '0'
style9: '0'
tr_chan: '0'
tr_level: '0.0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_slope: qtgui.TRIG_SLOPE_POS
tr_tag: '""'
type: complex
update_time: '0.10'
width1: '1'
width10: '1'
width2: '1'
width3: '1'
width4: '1'
width5: '1'
width6: '1'
width7: '1'
width8: '1'
width9: '1'
xmax: '2'
xmin: '-2'
ymax: '2'
ymin: '-2'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [824, 756.0]
rotation: 0
state: disabled
- name: qtgui_const_sink_x_0_0
id: qtgui_const_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
alpha4: '1.0'
alpha5: '1.0'
alpha6: '1.0'
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
autoscale: 'False'
axislabels: 'True'
color1: '"blue"'
color10: '"red"'
color2: '"red"'
color3: '"red"'
color4: '"red"'
color5: '"red"'
color6: '"red"'
color7: '"red"'
color8: '"red"'
color9: '"red"'
comment: ''
grid: 'False'
gui_hint: ''
label1: ''
label10: ''
label2: ''
label3: ''
label4: ''
label5: ''
label6: ''
label7: ''
label8: ''
label9: ''
legend: 'True'
marker1: '0'
marker10: '0'
marker2: '0'
marker3: '0'
marker4: '0'
marker5: '0'
marker6: '0'
marker7: '0'
marker8: '0'
marker9: '0'
name: '""'
nconnections: '1'
size: '1024'
style1: '0'
style10: '0'
style2: '0'
style3: '0'
style4: '0'
style5: '0'
style6: '0'
style7: '0'
style8: '0'
style9: '0'
tr_chan: '0'
tr_level: '0.0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_slope: qtgui.TRIG_SLOPE_POS
tr_tag: '""'
type: complex
update_time: '0.10'
width1: '1'
width10: '1'
width2: '1'
width3: '1'
width4: '1'
width5: '1'
width6: '1'
width7: '1'
width8: '1'
width9: '1'
xmax: '2'
xmin: '-2'
ymax: '2'
ymin: '-2'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [864, 628.0]
rotation: 0
state: disabled
- name: resamp
id: parameter
parameters:
alias: ''
comment: "Resampling Rate\nfrom Audio Rate\nto 8kS/s which is\nthe input of the\
\ \nPolypashe Clock"
hide: none
label: resamp
short_id: r
type: intx
value: '6'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [328, 156.0]
rotation: 0
state: true
- name: samp_rate
id: parameter
parameters:
alias: ''
comment: Audio Rate
hide: none
label: samp_rate
short_id: s
type: intx
value: '48000'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [200, 156.0]
rotation: 0
state: true
connections:
- [analog_agc2_xx_0_0, '0', digital_costas_loop_cc_0, '0']
- [analog_const_source_x_0, '0', blocks_interleave_0, '0']
- [analog_const_source_x_0_0, '0', blocks_interleave_0_0, '0']
- [analog_const_source_x_0_1, '0', blocks_multiply_xx_0_1_0, '1']
- [analog_sig_source_x_0_0_0, '0', blocks_complex_to_float_1, '0']
- [audio_source_0, '0', low_pass_filter_0, '0']
- [audio_source_0, '0', mmse_resampler_xx_0_0, '0']
- [blocks_complex_to_float_0, '0', blocks_float_to_int_0, '0']
- [blocks_complex_to_float_0, '1', blocks_float_to_int_0_0, '0']
- [blocks_complex_to_float_1, '0', blocks_multiply_xx_0_1, '1']
- [blocks_complex_to_float_1, '1', blocks_multiply_xx_0_0_0, '1']
- [blocks_float_to_complex_0, '0', mmse_resampler_xx_0, '0']
- [blocks_float_to_int_0, '0', blocks_interleave_0_0, '1']
- [blocks_float_to_int_0_0, '0', blocks_interleave_0_0, '2']
- [blocks_float_to_int_0_1, '0', blocks_interleave_0, '1']
- [blocks_interleave_0, '0', blocks_udp_sink_0_0, '0']
- [blocks_interleave_0_0, '0', blocks_udp_sink_0_0_0, '0']
- [blocks_multiply_xx_0_0_0, '0', blocks_float_to_complex_0, '0']
- [blocks_multiply_xx_0_1, '0', blocks_float_to_complex_0, '1']
- [blocks_multiply_xx_0_1_0, '0', blocks_float_to_int_0_1, '0']
- [digital_constellation_decoder_cb_0, '0', digital_diff_decoder_bb_0, '0']
- [digital_costas_loop_cc_0, '0', blocks_complex_to_float_0, '0']
- [digital_costas_loop_cc_0, '0', digital_constellation_decoder_cb_0, '0']
- [digital_costas_loop_cc_0, '0', qtgui_const_sink_x_0, '0']
- [digital_costas_loop_cc_0, '0', qtgui_const_sink_x_0_0, '0']
- [digital_diff_decoder_bb_0, '0', blocks_udp_sink_0, '0']
- [digital_lms_dd_equalizer_cc_0, '0', analog_agc2_xx_0_0, '0']
- [digital_pfb_clock_sync_xxx_0, '0', digital_lms_dd_equalizer_cc_0, '0']
- [low_pass_filter_0, '0', blocks_multiply_xx_0_0_0, '0']
- [low_pass_filter_0, '0', blocks_multiply_xx_0_1, '0']
- [mmse_resampler_xx_0, '0', digital_pfb_clock_sync_xxx_0, '0']
- [mmse_resampler_xx_0_0, '0', blocks_multiply_xx_0_1_0, '0']
metadata:
file_format: 1
+391
View File
@@ -0,0 +1,391 @@
options:
parameters:
author: kurt
category: '[GRC Hier Blocks]'
cmake_opt: ''
comment: 'requires GNU Radio 3.8xxx
does NOT work with 3.7x'
copyright: ''
description: requires GNU Radio 3.8xxx
gen_cmake: 'Off'
gen_linking: dynamic
generate_options: no_gui
hier_block_src_path: '.:'
id: tx_8psk
max_nouts: '0'
output_language: python
placement: (0,0)
qt_qss_theme: ''
realtime_scheduling: ''
run: 'True'
run_command: '{python} -u {filename}'
run_options: run
sizing_mode: fixed
thread_safe_setters: ''
title: 8PSK Modem DJ0ABR
window_size: ''
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [8, 8]
rotation: 0
state: enabled
blocks:
- name: mixf
id: variable
parameters:
comment: 'mid frequency
in the audio
spectrum. Set to get
lowest and highest
frequency within the
transceiver filter range.'
value: '1500'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [336, 12.0]
rotation: 0
state: enabled
- name: nfilts
id: variable
parameters:
comment: ''
value: '32'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [504, 12.0]
rotation: 0
state: enabled
- name: sps
id: variable
parameters:
comment: 'Samples/Symbol
fixed value,
do not change.
Used to adjust
bitrate vs. bandwidth'
value: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [944, 36.0]
rotation: 0
state: enabled
- name: analog_sig_source_x_0_0_0
id: analog_sig_source_x
parameters:
affinity: ''
alias: ''
amp: '1'
comment: 'the modulator output is in the baseband at 0 Hz.
Mix it with the required audio mid frequency.
cos and -sin are used to combine I and Q
into the final signal.'
freq: mixf
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
phase: '0'
samp_rate: samp_rate
type: complex
waveform: analog.GR_COS_WAVE
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [64, 484.0]
rotation: 0
state: enabled
- name: audio_sink_0_0
id: audio_sink
parameters:
affinity: ''
alias: ''
comment: 'send audio to
transceiver'
device_name: ''
num_inputs: '1'
ok_to_block: 'True'
samp_rate: samp_rate
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [840, 420.0]
rotation: 0
state: enabled
- name: blocks_add_xx_0
id: blocks_add_xx
parameters:
affinity: ''
alias: ''
comment: 'generate the analog
output signal.'
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [568, 344.0]
rotation: 0
state: true
- name: blocks_complex_to_float_1
id: blocks_complex_to_float
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [400, 344.0]
rotation: 0
state: enabled
- name: blocks_multiply_const_vxx_0
id: blocks_multiply_const_vxx
parameters:
affinity: ''
alias: ''
comment: 'reduce level for the
audio output, improves
linearity'
const: '0.05'
maxoutbuf: '0'
minoutbuf: '0'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [680, 420.0]
rotation: 0
state: true
- name: blocks_multiply_xx_0_0
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: "mix I und Q \nto the mid \nfrequency\nspecified in\n\"mixf\""
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: complex
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [288, 344.0]
rotation: 0
state: enabled
- name: blocks_udp_source_0
id: blocks_udp_source
parameters:
affinity: ''
alias: ''
comment: "receive an UDP data stream\nwith the bitrate of (see \ncomment samp_rate)\n\
The stream is buffered, \nso send some bytes ahead\nto prefill the buffer\n\
and avoid underrun"
eof: 'False'
ipaddr: 127.0.0.1
maxoutbuf: '0'
minoutbuf: '0'
port: '40134'
psize: '258'
type: byte
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [736, 164.0]
rotation: 180
state: true
- name: digital_constellation_modulator_0
id: digital_constellation_modulator
parameters:
affinity: ''
alias: ''
comment: 'This modulator expects "Packed Bytes"
which are 8 bits within one byte.
The UDP source block deliveres bytes,
so it fits perfectly.'
constellation: digital.constellation_8psk_natural().base()
differential: 'True'
excess_bw: '0.25'
log: 'False'
maxoutbuf: '0'
minoutbuf: '0'
samples_per_symbol: resamprate
verbose: 'False'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [272, 172.0]
rotation: 180
state: enabled
- name: qtgui_freq_sink_x_0
id: qtgui_freq_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
alpha4: '1.0'
alpha5: '1.0'
alpha6: '1.0'
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
autoscale: 'False'
average: '0.1'
axislabels: 'True'
bw: samp_rate
color1: '"blue"'
color10: '"dark blue"'
color2: '"red"'
color3: '"green"'
color4: '"black"'
color5: '"cyan"'
color6: '"magenta"'
color7: '"yellow"'
color8: '"dark red"'
color9: '"dark green"'
comment: ''
ctrlpanel: 'False'
fc: '0'
fftsize: '1024'
freqhalf: 'False'
grid: 'True'
gui_hint: ''
label: Relative Gain
label1: ''
label10: ''''''
label2: ''''''
label3: ''''''
label4: ''''''
label5: ''''''
label6: ''''''
label7: ''''''
label8: ''''''
label9: ''''''
legend: 'True'
maxoutbuf: '0'
minoutbuf: '0'
name: '""'
nconnections: '1'
showports: 'False'
tr_chan: '0'
tr_level: '0.0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_tag: '""'
type: float
units: dB
update_time: '0.10'
width1: '1'
width10: '1'
width2: '1'
width3: '1'
width4: '1'
width5: '1'
width6: '1'
width7: '1'
width8: '1'
width9: '1'
wintype: firdes.WIN_BLACKMAN_hARRIS
ymax: '10'
ymin: '-140'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [552, 552.0]
rotation: 0
state: disabled
- name: resamprate
id: parameter
parameters:
alias: ''
comment: ''
hide: none
label: resamprate
short_id: r
type: intx
value: '24'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [808, 12.0]
rotation: 0
state: true
- name: samp_rate
id: parameter
parameters:
alias: ''
comment: Audio Rate
hide: none
label: samp_rate
short_id: s
type: intx
value: '48000'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [696, 12.0]
rotation: 0
state: true
connections:
- [analog_sig_source_x_0_0_0, '0', blocks_multiply_xx_0_0, '1']
- [blocks_add_xx_0, '0', blocks_multiply_const_vxx_0, '0']
- [blocks_add_xx_0, '0', qtgui_freq_sink_x_0, '0']
- [blocks_complex_to_float_1, '0', blocks_add_xx_0, '0']
- [blocks_complex_to_float_1, '1', blocks_add_xx_0, '1']
- [blocks_multiply_const_vxx_0, '0', audio_sink_0_0, '0']
- [blocks_multiply_xx_0_0, '0', blocks_complex_to_float_1, '0']
- [blocks_udp_source_0, '0', digital_constellation_modulator_0, '0']
- [digital_constellation_modulator_0, '0', blocks_multiply_xx_0_0, '0']
metadata:
file_format: 1
+973
View File
@@ -0,0 +1,973 @@
options:
parameters:
author: DJ0ABR
category: '[GRC Hier Blocks]'
cmake_opt: ''
comment: 'send and receive a datastream
with 3500 bit/s via a QO-100
SSB channel with 2700 Hz bandwidth
works with Gnu Radio 3.8.xxx ONLY
does not work with 3.7.x'
copyright: ''
description: works with Gnu Radio 3.8.xxx
gen_cmake: 'Off'
gen_linking: dynamic
generate_options: no_gui
hier_block_src_path: '.:'
id: qpsk_rx
max_nouts: '0'
output_language: python
placement: (0,0)
qt_qss_theme: ''
realtime_scheduling: ''
run: 'True'
run_command: '{python} -u {filename}'
run_options: run
sizing_mode: fixed
thread_safe_setters: ''
title: QPSK RX-Modem
window_size: ''
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [8, 8]
rotation: 0
state: enabled
blocks:
- name: mixf
id: variable
parameters:
comment: 'mid frequency
in the audio
spectrum. Set to get
lowest and highest
frequency within the
transceiver filter range.'
value: '1500'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [328, 12.0]
rotation: 0
state: enabled
- name: nfilts
id: variable
parameters:
comment: ''
value: '32'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [704, 12.0]
rotation: 0
state: enabled
- name: outputsps
id: variable
parameters:
comment: 'Samples/Symbol
fixed value,
do not change.
Used to adjust
bitrate vs. bandwidth'
value: '7'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [8, 212.0]
rotation: 0
state: enabled
- name: qpsk__constellation
id: variable_constellation_rect
parameters:
comment: ''
const_points: '[0.707+0.707j, -0.707+0.707j, -0.707-0.707j, 0.707-0.707j]'
imag_sect: '2'
precision: '8'
real_sect: '2'
rot_sym: '4'
soft_dec_lut: '''auto'''
sym_map: '[0, 1, 2, 3]'
w_imag_sect: '1'
w_real_sect: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [976, 12.0]
rotation: 0
state: enabled
- name: sps
id: variable
parameters:
comment: 'Resampling Rate
of the Polyphase
Clock Sync and its filter'
value: '4'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [568, 12.0]
rotation: 0
state: enabled
- name: analog_agc2_xx_0_0
id: analog_agc2_xx
parameters:
affinity: ''
alias: ''
attack_rate: '0.01'
comment: 'Costas loop needs AGC
loop gain depends on input level'
decay_rate: '0.2'
gain: '1'
max_gain: '3'
maxoutbuf: '0'
minoutbuf: '0'
reference: '1'
type: complex
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [544, 636.0]
rotation: 0
state: enabled
- name: analog_const_source_x_0
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: 'Marker to find the start
of the values'
const: '1000'
maxoutbuf: '0'
minoutbuf: '0'
type: int
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [464, 788.0]
rotation: 180
state: true
- name: analog_const_source_x_0_0
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: 'Marker to find the start
of the values'
const: '1000'
maxoutbuf: '0'
minoutbuf: '0'
type: int
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [536, 948.0]
rotation: 180
state: true
- name: analog_const_source_x_0_0_0
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: 'Marker to find the start
of the values'
const: '0'
maxoutbuf: '0'
minoutbuf: '0'
type: float
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [824, 1140.0]
rotation: 180
state: disabled
- name: analog_const_source_x_0_1
id: analog_const_source_x
parameters:
affinity: ''
alias: ''
comment: ''
const: '16777216'
maxoutbuf: '0'
minoutbuf: '0'
type: float
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [792, 916.0]
rotation: 180
state: true
- name: analog_sig_source_x_0_0_0
id: analog_sig_source_x
parameters:
affinity: ''
alias: ''
amp: '1'
comment: 'the modulator output is in the baseband at 0 Hz.
Mix it with the required audio mid frequency.
cos and -sin are used to combine I and Q
into the frinal signal.
Use it als for RX in the reverse direction'
freq: mixf
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
phase: '0'
samp_rate: samp_rate
type: complex
waveform: analog.GR_COS_WAVE
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [200, 220.0]
rotation: 0
state: enabled
- name: analog_sig_source_x_1
id: analog_sig_source_x
parameters:
affinity: ''
alias: ''
amp: '1'
comment: "Markers for the \nFrequ.Sink"
freq: '1500'
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
phase: '0'
samp_rate: samp_rate
type: float
waveform: analog.GR_COS_WAVE
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [712, 140.0]
rotation: 0
state: disabled
- name: analog_sig_source_x_1_0
id: analog_sig_source_x
parameters:
affinity: ''
alias: ''
amp: '1'
comment: ''
freq: '3000'
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
phase: '0'
samp_rate: samp_rate
type: float
waveform: analog.GR_COS_WAVE
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [704, 300.0]
rotation: 0
state: disabled
- name: audio_source_0
id: audio_source
parameters:
affinity: ''
alias: ''
comment: get audio from transceiver
device_name: ''
maxoutbuf: '0'
minoutbuf: '0'
num_outputs: '1'
ok_to_block: 'True'
samp_rate: samp_rate
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1328, 468.0]
rotation: 180
state: true
- name: blocks_complex_to_float_0
id: blocks_complex_to_float
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [824, 1032.0]
rotation: 180
state: enabled
- name: blocks_complex_to_float_1
id: blocks_complex_to_float
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [456, 248.0]
rotation: 0
state: enabled
- name: blocks_float_to_complex_0
id: blocks_float_to_complex
parameters:
affinity: ''
alias: ''
comment: 'combile I and Q
to complex signal'
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [320, 464.0]
rotation: 180
state: enabled
- name: blocks_float_to_int_0
id: blocks_float_to_int
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
scale: '16777216'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [632, 1028.0]
rotation: 180
state: true
- name: blocks_float_to_int_0_0
id: blocks_float_to_int
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
scale: '16777216'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [632, 1076.0]
rotation: 180
state: true
- name: blocks_float_to_int_0_1
id: blocks_float_to_int
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
scale: '1'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [512, 868.0]
rotation: 180
state: true
- name: blocks_interleave_0
id: blocks_interleave
parameters:
affinity: ''
alias: ''
blocksize: '1'
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_streams: '2'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [360, 872.0]
rotation: 180
state: true
- name: blocks_interleave_0_0
id: blocks_interleave
parameters:
affinity: ''
alias: ''
blocksize: '1'
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_streams: '3'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [320, 1000.0]
rotation: 180
state: true
- name: blocks_multiply_xx_0_0_0
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: make I
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [520, 408.0]
rotation: 180
state: enabled
- name: blocks_multiply_xx_0_1
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: make Q
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [560, 512.0]
rotation: 180
state: enabled
- name: blocks_multiply_xx_0_1_0
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [640, 856.0]
rotation: 180
state: enabled
- name: blocks_udp_sink_0
id: blocks_udp_sink
parameters:
affinity: ''
alias: ''
comment: 'send RX data to UDP
port 1235 on the local machine'
eof: 'False'
ipaddr: 127.0.0.1
port: '40135'
psize: '344'
type: byte
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1240, 588.0]
rotation: 0
state: true
- name: blocks_udp_sink_0_0
id: blocks_udp_sink
parameters:
affinity: ''
alias: ''
comment: 'send QPSK Constellation data to UDP
port 1236 on the local machine'
eof: 'False'
ipaddr: 127.0.0.1
port: '40136'
psize: '120'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [64, 860.0]
rotation: 180
state: enabled
- name: blocks_udp_sink_0_0_0
id: blocks_udp_sink
parameters:
affinity: ''
alias: ''
comment: 'send QPSK Constellation data to UDP
port 1236 on the local machine'
eof: 'False'
ipaddr: 127.0.0.1
port: '40137'
psize: '120'
type: int
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [64, 988.0]
rotation: 180
state: enabled
- name: digital_constellation_decoder_cb_0
id: digital_constellation_decoder_cb
parameters:
affinity: ''
alias: ''
comment: 'QPSK decoding, same
parameters as modulator'
constellation: qpsk__constellation
maxoutbuf: '0'
minoutbuf: '0'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [992, 612.0]
rotation: 0
state: enabled
- name: digital_costas_loop_cc_0
id: digital_costas_loop_cc
parameters:
affinity: ''
alias: ''
comment: 'locks the signal and
converts into baseband'
maxoutbuf: '0'
minoutbuf: '0'
order: '4'
use_snr: 'False'
w: '0.06'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [744, 616.0]
rotation: 0
state: enabled
- name: digital_lms_dd_equalizer_cc_0
id: digital_lms_dd_equalizer_cc
parameters:
affinity: ''
alias: ''
cnst: qpsk__constellation
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
mu: '0.01'
num_taps: '15'
sps: outputsps
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [288, 628.0]
rotation: 0
state: enabled
- name: digital_pfb_clock_sync_xxx_0
id: digital_pfb_clock_sync_xxx
parameters:
affinity: ''
alias: ''
comment: 'synchronize the Clock,
works very well with drifting
QO-100 signal'
filter_size: nfilts
init_phase: nfilts/2
loop_bw: '0.1'
max_dev: '1.5'
maxoutbuf: '0'
minoutbuf: '0'
osps: outputsps
sps: sps
taps: firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), 0.35, 11*sps*nfilts)
type: ccf
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [64, 652.0]
rotation: 0
state: enabled
- name: low_pass_filter_0
id: low_pass_filter
parameters:
affinity: ''
alias: ''
beta: '6.76'
comment: 'Anti-Aliasing filter
Level correction
and decimation'
cutoff_freq: '3500'
decim: '1'
gain: '8'
interp: '1'
maxoutbuf: '0'
minoutbuf: '0'
samp_rate: samp_rate
type: fir_filter_fff
width: '3100'
win: firdes.WIN_HAMMING
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [1048, 412.0]
rotation: 180
state: enabled
- name: mmse_resampler_xx_0
id: mmse_resampler_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
phase_shift: '0'
resamp_ratio: samp_rate / 8000
type: float
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [776, 768.0]
rotation: 180
state: true
- name: mmse_resampler_xx_1
id: mmse_resampler_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
phase_shift: '0'
resamp_ratio: resamp
type: complex
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [72, 480.0]
rotation: 180
state: true
- name: qtgui_const_sink_x_0
id: qtgui_const_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
alpha4: '1.0'
alpha5: '1.0'
alpha6: '1.0'
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
autoscale: 'False'
axislabels: 'True'
color1: '"blue"'
color10: '"red"'
color2: '"red"'
color3: '"red"'
color4: '"red"'
color5: '"red"'
color6: '"red"'
color7: '"red"'
color8: '"red"'
color9: '"red"'
comment: ''
grid: 'False'
gui_hint: ''
label1: ''
label10: ''
label2: ''
label3: ''
label4: ''
label5: ''
label6: ''
label7: ''
label8: ''
label9: ''
legend: 'True'
marker1: '0'
marker10: '0'
marker2: '0'
marker3: '0'
marker4: '0'
marker5: '0'
marker6: '0'
marker7: '0'
marker8: '0'
marker9: '0'
name: '""'
nconnections: '2'
size: '1024'
style1: '0'
style10: '0'
style2: '0'
style3: '0'
style4: '0'
style5: '0'
style6: '0'
style7: '0'
style8: '0'
style9: '0'
tr_chan: '0'
tr_level: '0.0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_slope: qtgui.TRIG_SLOPE_POS
tr_tag: '""'
type: complex
update_time: '0.10'
width1: '1'
width10: '1'
width2: '1'
width3: '1'
width4: '1'
width5: '1'
width6: '1'
width7: '1'
width8: '1'
width9: '1'
xmax: '2'
xmin: '-2'
ymax: '2'
ymin: '-2'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [768, 532.0]
rotation: 180
state: disabled
- name: qtgui_freq_sink_x_1
id: qtgui_freq_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
alpha4: '1.0'
alpha5: '1.0'
alpha6: '1.0'
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
autoscale: 'False'
average: '1.0'
axislabels: 'True'
bw: samp_rate
color1: '"blue"'
color10: '"dark blue"'
color2: '"red"'
color3: '"green"'
color4: '"black"'
color5: '"cyan"'
color6: '"magenta"'
color7: '"yellow"'
color8: '"dark red"'
color9: '"dark green"'
comment: ''
ctrlpanel: 'False'
fc: '0'
fftsize: '4096'
freqhalf: 'False'
grid: 'True'
gui_hint: ''
label: Relative Gain
label1: ''
label10: ''''''
label2: ''''''
label3: ''''''
label4: ''''''
label5: ''''''
label6: ''''''
label7: ''''''
label8: ''''''
label9: ''''''
legend: 'True'
maxoutbuf: '0'
minoutbuf: '0'
name: TX / RX Spectrum
nconnections: '3'
showports: 'False'
tr_chan: '0'
tr_level: '0.0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_tag: '""'
type: float
units: dB
update_time: '.1'
width1: '1'
width10: '1'
width2: '1'
width3: '1'
width4: '1'
width5: '1'
width6: '1'
width7: '1'
width8: '1'
width9: '1'
wintype: firdes.WIN_BLACKMAN_hARRIS
ymax: '10'
ymin: '-140'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [992, 208.0]
rotation: 0
state: disabled
- name: resamp
id: parameter
parameters:
alias: ''
comment: "Resampling Rate\nfrom Audio Rate\nto 8kS/s which is\nthe input of the\
\ \nPolypashe Clock"
hide: none
label: resamp
short_id: r
type: intx
value: '5'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [464, 12.0]
rotation: 0
state: true
- name: samp_rate
id: parameter
parameters:
alias: ''
comment: Audio Rate
hide: none
label: samp_rate
short_id: s
type: intx
value: '44100'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [216, 12.0]
rotation: 0
state: true
connections:
- [analog_agc2_xx_0_0, '0', digital_costas_loop_cc_0, '0']
- [analog_const_source_x_0, '0', blocks_interleave_0, '0']
- [analog_const_source_x_0_0, '0', blocks_interleave_0_0, '0']
- [analog_const_source_x_0_0_0, '0', blocks_float_to_int_0_0, '0']
- [analog_const_source_x_0_1, '0', blocks_multiply_xx_0_1_0, '1']
- [analog_sig_source_x_0_0_0, '0', blocks_complex_to_float_1, '0']
- [analog_sig_source_x_1, '0', qtgui_freq_sink_x_1, '1']
- [analog_sig_source_x_1_0, '0', qtgui_freq_sink_x_1, '2']
- [audio_source_0, '0', low_pass_filter_0, '0']
- [audio_source_0, '0', mmse_resampler_xx_0, '0']
- [blocks_complex_to_float_0, '0', blocks_float_to_int_0, '0']
- [blocks_complex_to_float_0, '1', blocks_float_to_int_0_0, '0']
- [blocks_complex_to_float_1, '0', blocks_multiply_xx_0_1, '1']
- [blocks_complex_to_float_1, '1', blocks_multiply_xx_0_0_0, '1']
- [blocks_float_to_complex_0, '0', mmse_resampler_xx_1, '0']
- [blocks_float_to_int_0, '0', blocks_interleave_0_0, '1']
- [blocks_float_to_int_0_0, '0', blocks_interleave_0_0, '2']
- [blocks_float_to_int_0_1, '0', blocks_interleave_0, '1']
- [blocks_interleave_0, '0', blocks_udp_sink_0_0, '0']
- [blocks_interleave_0_0, '0', blocks_udp_sink_0_0_0, '0']
- [blocks_multiply_xx_0_0_0, '0', blocks_float_to_complex_0, '0']
- [blocks_multiply_xx_0_1, '0', blocks_float_to_complex_0, '1']
- [blocks_multiply_xx_0_1_0, '0', blocks_float_to_int_0_1, '0']
- [digital_constellation_decoder_cb_0, '0', blocks_udp_sink_0, '0']
- [digital_costas_loop_cc_0, '0', blocks_complex_to_float_0, '0']
- [digital_costas_loop_cc_0, '0', digital_constellation_decoder_cb_0, '0']
- [digital_costas_loop_cc_0, '0', qtgui_const_sink_x_0, '0']
- [digital_lms_dd_equalizer_cc_0, '0', analog_agc2_xx_0_0, '0']
- [digital_lms_dd_equalizer_cc_0, '0', qtgui_const_sink_x_0, '1']
- [digital_pfb_clock_sync_xxx_0, '0', digital_lms_dd_equalizer_cc_0, '0']
- [low_pass_filter_0, '0', blocks_multiply_xx_0_0_0, '0']
- [low_pass_filter_0, '0', blocks_multiply_xx_0_1, '0']
- [low_pass_filter_0, '0', qtgui_freq_sink_x_1, '0']
- [mmse_resampler_xx_0, '0', blocks_multiply_xx_0_1_0, '0']
- [mmse_resampler_xx_1, '0', digital_pfb_clock_sync_xxx_0, '0']
metadata:
file_format: 1
+383
View File
@@ -0,0 +1,383 @@
options:
parameters:
author: DJ0ABR
category: '[GRC Hier Blocks]'
cmake_opt: ''
comment: 'requires GNU Radio 3.8xxx
does NOT work with 3.7x'
copyright: DJ0ABR
description: requires GNU Radio 3.8xxx
gen_cmake: 'On'
gen_linking: dynamic
generate_options: no_gui
hier_block_src_path: '.:'
id: qpsk_tx
max_nouts: '0'
output_language: python
placement: (0,0)
qt_qss_theme: ''
realtime_scheduling: ''
run: 'True'
run_command: '{python} -u {filename}'
run_options: run
sizing_mode: fixed
thread_safe_setters: ''
title: 'QPSK TX-Modem '
window_size: ''
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [8, 8]
rotation: 0
state: enabled
blocks:
- name: mixf
id: variable
parameters:
comment: 'mid frequency
in the audio
spectrum. Set to get
lowest and highest
frequency within the
transceiver filter range.'
value: '1500'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [360, 12.0]
rotation: 0
state: enabled
- name: qpsk__constellation
id: variable_constellation_rect
parameters:
comment: 'alternative:
[0.707+0.707j, -0.707+0.707j, -0.707-0.707j, 0.707-0.707j]
does not make a difference'
const_points: '[1+1j, -1+1j, -1-1j, 1-1j]'
imag_sect: '2'
precision: '8'
real_sect: '2'
rot_sym: '4'
soft_dec_lut: None
sym_map: '[0, 1, 2, 3]'
w_imag_sect: '1'
w_real_sect: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [8, 196.0]
rotation: 0
state: enabled
- name: analog_sig_source_x_0_0_0
id: analog_sig_source_x
parameters:
affinity: ''
alias: ''
amp: '1'
comment: 'the modulator output is in the baseband at 0 Hz.
Mix it with the required audio mid frequency.
cos and -sin are used to combine I and Q
into the final signal.'
freq: mixf
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
phase: '0'
samp_rate: samp_rate
type: complex
waveform: analog.GR_COS_WAVE
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [96, 476.0]
rotation: 0
state: enabled
- name: audio_sink_0_0
id: audio_sink
parameters:
affinity: ''
alias: ''
comment: 'send audio to
transceiver'
device_name: ''
num_inputs: '1'
ok_to_block: 'True'
samp_rate: samp_rate
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [928, 356.0]
rotation: 0
state: enabled
- name: blocks_add_xx_0
id: blocks_add_xx
parameters:
affinity: ''
alias: ''
comment: 'generate the analog
output signal: USB
(for LSB use substraction)'
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [696, 376.0]
rotation: 0
state: true
- name: blocks_complex_to_float_1
id: blocks_complex_to_float
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [512, 376.0]
rotation: 0
state: enabled
- name: blocks_multiply_const_vxx_0
id: blocks_multiply_const_vxx
parameters:
affinity: ''
alias: ''
comment: 'reduce level for the
audio output, improves
linearity'
const: '0.05'
maxoutbuf: '0'
minoutbuf: '0'
type: float
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [784, 356.0]
rotation: 0
state: true
- name: blocks_multiply_xx_0_0
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: "mix I und Q \nto the mid \nfrequency\nspecified in\n\"mixf\""
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: complex
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [400, 376.0]
rotation: 0
state: enabled
- name: blocks_udp_source_0
id: blocks_udp_source
parameters:
affinity: ''
alias: ''
comment: "receive an UDP data stream\nwith the bitrate of (see \ncomment samp_rate)\n\
The stream is buffered, \nso send some bytes ahead\nto prefill the buffer\n\
and avoid underrun"
eof: 'False'
ipaddr: 127.0.0.1
maxoutbuf: '0'
minoutbuf: '0'
port: '40134'
psize: '258'
type: byte
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [824, 148.0]
rotation: 180
state: enabled
- name: digital_constellation_modulator_0
id: digital_constellation_modulator
parameters:
affinity: ''
alias: ''
comment: 'unpack bytes to bits
make symbols 2bits/sym
make constellation'
constellation: qpsk__constellation
differential: 'False'
excess_bw: '0.35'
log: 'False'
maxoutbuf: '0'
minoutbuf: '0'
samples_per_symbol: resamprate
verbose: 'False'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [392, 180.0]
rotation: 180
state: enabled
- name: qtgui_freq_sink_x_0
id: qtgui_freq_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
alpha4: '1.0'
alpha5: '1.0'
alpha6: '1.0'
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
autoscale: 'False'
average: '0.1'
axislabels: 'True'
bw: samp_rate
color1: '"blue"'
color10: '"dark blue"'
color2: '"red"'
color3: '"green"'
color4: '"black"'
color5: '"cyan"'
color6: '"magenta"'
color7: '"yellow"'
color8: '"dark red"'
color9: '"dark green"'
comment: ''
ctrlpanel: 'False'
fc: '0'
fftsize: '1024'
freqhalf: 'False'
grid: 'True'
gui_hint: ''
label: Relative Gain
label1: ''
label10: ''''''
label2: ''''''
label3: ''''''
label4: ''''''
label5: ''''''
label6: ''''''
label7: ''''''
label8: ''''''
label9: ''''''
legend: 'True'
maxoutbuf: '0'
minoutbuf: '0'
name: '""'
nconnections: '1'
showports: 'False'
tr_chan: '0'
tr_level: '0.0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_tag: '""'
type: float
units: dB
update_time: '0.10'
width1: '1'
width10: '1'
width2: '1'
width3: '1'
width4: '1'
width5: '1'
width6: '1'
width7: '1'
width8: '1'
width9: '1'
wintype: firdes.WIN_BLACKMAN_hARRIS
ymax: '10'
ymin: '-140'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [880, 576.0]
rotation: 0
state: disabled
- name: resamprate
id: parameter
parameters:
alias: ''
comment: ''
hide: none
label: resamprate
short_id: r
type: intx
value: '20'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [776, 12.0]
rotation: 0
state: true
- name: samp_rate
id: parameter
parameters:
alias: ''
comment: Audio Rate
hide: none
label: samp_rate
short_id: s
type: intx
value: '44100'
states:
bus_sink: false
bus_source: false
bus_structure: null
coordinate: [208, 12.0]
rotation: 0
state: true
connections:
- [analog_sig_source_x_0_0_0, '0', blocks_multiply_xx_0_0, '1']
- [blocks_add_xx_0, '0', blocks_multiply_const_vxx_0, '0']
- [blocks_add_xx_0, '0', qtgui_freq_sink_x_0, '0']
- [blocks_complex_to_float_1, '0', blocks_add_xx_0, '0']
- [blocks_complex_to_float_1, '1', blocks_add_xx_0, '1']
- [blocks_multiply_const_vxx_0, '0', audio_sink_0_0, '0']
- [blocks_multiply_xx_0_0, '0', blocks_complex_to_float_1, '0']
- [blocks_udp_source_0, '0', digital_constellation_modulator_0, '0']
- [digital_constellation_modulator_0, '0', blocks_multiply_xx_0_0, '0']
metadata:
file_format: 1