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