SSB_HighSpeed_Modem/grc/rxuniversal_qpsk_nogui.grc
Kurt Moraw 3deb0a09fd update
2020-10-27 16:41:16 +01:00

974 lines
20 KiB
Plaintext

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