From c9e98bbf349dd74dfe3d6ef1a71f91418dfc2eb4 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Wed, 24 Nov 2021 20:20:40 +0100 Subject: Discussion --- src/gr-fadingui/python/qa_xor_frame_sync.py | 2 +- src/gr-fadingui/python/xor_frame_sync.py | 8 +- tests/fadingui/QAM/difftest.py | 13 ++ tests/fadingui/QAM/modulated_nodiff.dat | Bin 0 -> 672256 bytes tests/fadingui/QAM/qam_nogui.grc | 320 ++++++++++++++-------------- tests/fadingui/QAM/qam_nogui.py | 95 ++++++--- 6 files changed, 256 insertions(+), 182 deletions(-) create mode 100644 tests/fadingui/QAM/difftest.py create mode 100644 tests/fadingui/QAM/modulated_nodiff.dat diff --git a/src/gr-fadingui/python/qa_xor_frame_sync.py b/src/gr-fadingui/python/qa_xor_frame_sync.py index e763d00..9c480a0 100644 --- a/src/gr-fadingui/python/qa_xor_frame_sync.py +++ b/src/gr-fadingui/python/qa_xor_frame_sync.py @@ -19,7 +19,7 @@ class test_xor_frame_sync(gr_unittest.TestCase): pattern = np.array([0xc0, 0xff, 0xee], dtype=np.uint8) testdata = np.packbits(np.concatenate([ np.unpackbits(np.arange(0, 5, dtype=np.uint8)), - # np.random.randint(0, 2, size = 8 * 5), + np.random.randint(0, 2, size = 8 * 5), np.unpackbits(pattern), np.random.randint(0, 2, size = 64) ])) diff --git a/src/gr-fadingui/python/xor_frame_sync.py b/src/gr-fadingui/python/xor_frame_sync.py index 312ad2a..bb5cfb1 100644 --- a/src/gr-fadingui/python/xor_frame_sync.py +++ b/src/gr-fadingui/python/xor_frame_sync.py @@ -133,16 +133,20 @@ class xor_frame_sync(gr.sync_block): # return data with delay out = output_items[0] # FIXME: this is also wrong - out[:] = self.delaybuf[:len(out)] + # out[:] = self.delaybuf[:len(out)] + out[:] = inp[:] inptmp = np.array(inp[:12], dtype=np.uint8) inphex = np.array(list(map(hex, inptmp))) + inpbits = np.array(list(map("{:08b}".format, inptmp))) + log.debug(f"inp={inptmp}") log.debug(f"inp={inphex}") + log.debug(f"inp={inpbits}") # outtmp = np.array(out[:12], dtype=np.uint8) # log.debug(f"out={outtmp}") - return len(out) + return inp_len diff --git a/tests/fadingui/QAM/difftest.py b/tests/fadingui/QAM/difftest.py new file mode 100644 index 0000000..26bd0aa --- /dev/null +++ b/tests/fadingui/QAM/difftest.py @@ -0,0 +1,13 @@ +import matplotlib.pyplot as plt +import numpy as np + +samp_rate = 32e3 +sps = 4 + +data = np.fromfile("modulated_nodiff.dat", dtype=np.complex64) +samples = data[:sps*120:sps] + +# plt.plot(samples.real, samples.imag, ".-") +plt.plot(samples.real, ".-") +plt.plot(samples.imag, ".-") +plt.show() diff --git a/tests/fadingui/QAM/modulated_nodiff.dat b/tests/fadingui/QAM/modulated_nodiff.dat new file mode 100644 index 0000000..9b02b13 Binary files /dev/null and b/tests/fadingui/QAM/modulated_nodiff.dat differ diff --git a/tests/fadingui/QAM/qam_nogui.grc b/tests/fadingui/QAM/qam_nogui.grc index 78dc691..5504d3b 100644 --- a/tests/fadingui/QAM/qam_nogui.grc +++ b/tests/fadingui/QAM/qam_nogui.grc @@ -1,6 +1,6 @@ options: parameters: - author: Pross Naoki, Halter Sara Cinzia + author: Pross Naoki category: '[GRC Hier Blocks]' cmake_opt: '' comment: '' @@ -41,7 +41,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [920, 252.0] + coordinate: [864, 444.0] rotation: 0 state: true - name: const @@ -54,12 +54,12 @@ blocks: rot_sym: '4' soft_dec_lut: None sym_map: '[0, 1, 3, 2]' - type: 16qam + type: qpsk states: bus_sink: false bus_source: false bus_structure: null - coordinate: [448, 436.0] + coordinate: [568, 260.0] rotation: 0 state: true - name: eq_gain @@ -71,7 +71,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1504, 452.0] + coordinate: [1488, 444.0] rotation: 0 state: true - name: eq_mod @@ -83,7 +83,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1504, 388.0] + coordinate: [1488, 380.0] rotation: 0 state: true - name: eq_ntaps @@ -95,7 +95,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1584, 388.0] + coordinate: [1568, 380.0] rotation: 0 state: true - name: excess_bw @@ -107,7 +107,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [536, 268.0] + coordinate: [464, 260.0] rotation: 0 state: true - name: frame @@ -116,12 +116,12 @@ blocks: alias: '' comment: '' payload_len: '32768' - preamble: '[190, 239]' + preamble: '[0xc0, 0xff, 0xee]' states: bus_sink: false bus_source: false bus_structure: null - coordinate: [192, 180.0] + coordinate: [96, 180.0] rotation: 0 state: true - name: freq_offset @@ -133,7 +133,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1008, 252.0] + coordinate: [944, 444.0] rotation: 0 state: true - name: nfilts @@ -145,7 +145,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1184, 476.0] + coordinate: [1168, 476.0] rotation: 0 state: true - name: noise_volt @@ -157,19 +157,19 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [920, 188.0] + coordinate: [848, 236.0] rotation: 0 state: true - name: phase_bw id: variable parameters: comment: '' - value: '.01' + value: '0.02' states: bus_sink: false bus_source: false bus_structure: null - coordinate: [1792, 428.0] + coordinate: [1776, 428.0] rotation: 0 state: true - name: rrc_taps @@ -181,7 +181,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1264, 476.0] + coordinate: [1248, 476.0] rotation: 0 state: true - name: samp_rate @@ -205,7 +205,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [440, 268.0] + coordinate: [368, 260.0] rotation: 0 state: true - name: time_offset @@ -217,7 +217,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1008, 188.0] + coordinate: [944, 236.0] rotation: 0 state: true - name: timing_loop_bw @@ -229,7 +229,43 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1184, 556.0] + coordinate: [1168, 556.0] + rotation: 0 + state: true +- name: blocks_file_sink_0 + id: blocks_file_sink + parameters: + affinity: '' + alias: '' + append: 'False' + comment: '' + file: /home/god/Documents/Fading/tests/fadingui/QAM/modulated_nodiff.dat + type: complex + unbuffered: 'False' + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [680, 556.0] + rotation: 0 + state: enabled +- name: blocks_multiply_xx_0 + id: blocks_multiply_xx + parameters: + affinity: '' + alias: '' + comment: '' + maxoutbuf: '0' + minoutbuf: '0' + num_inputs: '2' + type: complex + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [2104, 128.0] rotation: 0 state: true - name: blocks_null_sink_0 @@ -246,9 +282,25 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [3056, 280.0] + coordinate: [3120, 280.0] rotation: 0 state: true +- name: blocks_pack_k_bits_bb_0 + id: blocks_pack_k_bits_bb + parameters: + affinity: '' + alias: '' + comment: '' + k: '8' + maxoutbuf: '0' + minoutbuf: '0' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [2328, 276.0] + rotation: 0 + state: enabled - name: blocks_throttle_0 id: blocks_throttle parameters: @@ -265,28 +317,29 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [720, 356.0] + coordinate: [648, 356.0] rotation: 0 state: enabled -- name: blocks_throttle_1 - id: blocks_throttle +- name: blocks_vector_source_x_0 + id: blocks_vector_source_x parameters: affinity: '' alias: '' comment: '' - ignoretag: 'True' maxoutbuf: '0' minoutbuf: '0' - samples_per_second: samp_rate + repeat: 'True' + tags: '[]' type: byte + vector: '[0xc0, 0xff, 0xee, 0x00, 0x00]' vlen: '1' states: bus_sink: false bus_source: false bus_structure: null - coordinate: [1448, 772.0] + coordinate: [104, 364.0] rotation: 0 - state: disabled + state: enabled - name: channels_channel_model_0 id: channels_channel_model parameters: @@ -305,9 +358,9 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [920, 316.0] + coordinate: [864, 316.0] rotation: 0 - state: enabled + state: bypassed - name: digital_cma_equalizer_cc_0 id: digital_cma_equalizer_cc parameters: @@ -324,7 +377,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1504, 284.0] + coordinate: [1488, 284.0] rotation: 0 state: enabled - name: digital_constellation_decoder_cb_0 @@ -340,7 +393,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2152, 276.0] + coordinate: [2072, 276.0] rotation: 0 state: enabled - name: digital_constellation_modulator_0 @@ -350,7 +403,7 @@ blocks: alias: '' comment: '' constellation: const - differential: 'True' + differential: 'False' excess_bw: excess_bw log: 'False' maxoutbuf: '0' @@ -361,59 +414,47 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [440, 332.0] + coordinate: [368, 332.0] rotation: 0 state: enabled -- name: digital_costas_loop_cc_0 - id: digital_costas_loop_cc +- name: digital_corr_est_cc_0 + id: digital_corr_est_cc parameters: affinity: '' alias: '' comment: '' + mark_delay: '' maxoutbuf: '0' minoutbuf: '0' - order: '4' - use_snr: 'False' - w: phase_bw + sps: '1' + symbols: '' + threshold: '0.9' + threshold_method: digital.THRESHOLD_ABSOLUTE states: bus_sink: false bus_source: false bus_structure: null - coordinate: [1792, 280.0] + coordinate: [1760, 92.0] rotation: 0 - state: enabled -- name: digital_diff_decoder_bb_0 - id: digital_diff_decoder_bb + state: true +- name: digital_costas_loop_cc_0 + id: digital_costas_loop_cc parameters: affinity: '' alias: '' comment: '' maxoutbuf: '0' minoutbuf: '0' - modulus: '4' + order: '4' + use_snr: 'False' + w: phase_bw states: bus_sink: false bus_source: false bus_structure: null - coordinate: [2408, 276.0] + coordinate: [1776, 280.0] rotation: 0 state: enabled -- name: digital_map_bb_0 - id: digital_map_bb - parameters: - affinity: '' - alias: '' - comment: '' - map: '[0, 1, 3, 2]' - maxoutbuf: '0' - minoutbuf: '0' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [2304, 372.0] - rotation: 0 - state: disabled - name: digital_pfb_clock_sync_xxx_0 id: digital_pfb_clock_sync_xxx parameters: @@ -434,7 +475,7 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [1184, 308.0] + coordinate: [1168, 308.0] rotation: 0 state: enabled - name: fadingui_datasource_0 @@ -451,40 +492,9 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [144, 284.0] - rotation: 0 - state: true -- name: fadingui_dearpygui_sink_0 - id: fadingui_dearpygui_sink - parameters: - affinity: '' - alias: '' - comment: '' - sock_addr: udp://localhost:31415 - ui_element_id: '0' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [2096, 180.0] + coordinate: [96, 284.0] rotation: 0 state: disabled -- name: fadingui_deframer_0 - id: fadingui_deframer - parameters: - affinity: '' - alias: '' - comment: '' - frame_obj: frame - maxoutbuf: '0' - minoutbuf: '0' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [2728, 276.0] - rotation: 0 - state: true - name: fadingui_xor_frame_sync_0 id: fadingui_xor_frame_sync parameters: @@ -499,11 +509,11 @@ blocks: bus_sink: false bus_source: false bus_structure: null - coordinate: [2512, 364.0] + coordinate: [2568, 268.0] rotation: 0 - state: true -- name: qtgui_const_sink_x_0 - id: qtgui_const_sink_x + state: enabled +- name: qtgui_time_sink_x_0 + id: qtgui_time_sink_x parameters: affinity: '' alias: '' @@ -519,54 +529,59 @@ blocks: 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: '' + 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: 'True' + entags: 'True' grid: 'False' gui_hint: '' - label1: '' - label10: '' - label2: '' - label3: '' - label4: '' - label5: '' - label6: '' - label7: '' - label8: '' - label9: '' + label1: Signal 1 + label10: Signal 10 + label2: Signal 2 + label3: Signal 3 + label4: Signal 4 + label5: Signal 5 + label6: Signal 6 + label7: Signal 7 + label8: Signal 8 + label9: Signal 9 legend: 'True' - marker1: '0' - marker10: '0' - marker2: '0' - marker3: '0' - marker4: '0' - marker5: '0' - marker6: '0' - marker7: '0' - marker8: '0' - marker9: '0' + marker1: '-1' + marker10: '-1' + marker2: '-1' + marker3: '-1' + marker4: '-1' + marker5: '-1' + marker6: '-1' + marker7: '-1' + marker8: '-1' + marker9: '-1' name: '""' - nconnections: '3' + nconnections: '1' size: '1024' - style1: '0' - style10: '0' - style2: '0' - style3: '0' - style4: '0' - style5: '0' - style6: '0' - style7: '0' - style8: '0' - style9: '0' + srate: samp_rate + stemplot: 'False' + style1: '1' + style10: '1' + style2: '1' + style3: '1' + style4: '1' + style5: '1' + style6: '1' + style7: '1' + style8: '1' + style9: '1' tr_chan: '0' + tr_delay: '0' tr_level: '0.0' tr_mode: qtgui.TRIG_MODE_FREE tr_slope: qtgui.TRIG_SLOPE_POS @@ -583,38 +598,33 @@ blocks: width7: '1' width8: '1' width9: '1' - xmax: '2' - xmin: '-2' + ylabel: Amplitude ymax: '2' ymin: '-2' + yunit: '""' states: bus_sink: false bus_source: false bus_structure: null - coordinate: [2040, 32.0] + coordinate: [680, 452.0] rotation: 0 - state: enabled + state: true connections: +- [blocks_pack_k_bits_bb_0, '0', fadingui_xor_frame_sync_0, '0'] - [blocks_throttle_0, '0', channels_channel_model_0, '0'] -- [blocks_throttle_1, '0', fadingui_xor_frame_sync_0, '0'] +- [blocks_vector_source_x_0, '0', digital_constellation_modulator_0, '0'] - [channels_channel_model_0, '0', digital_pfb_clock_sync_xxx_0, '0'] +- [digital_cma_equalizer_cc_0, '0', digital_corr_est_cc_0, '0'] - [digital_cma_equalizer_cc_0, '0', digital_costas_loop_cc_0, '0'] -- [digital_cma_equalizer_cc_0, '0', qtgui_const_sink_x_0, '1'] -- [digital_constellation_decoder_cb_0, '0', digital_diff_decoder_bb_0, '0'] +- [digital_constellation_decoder_cb_0, '0', blocks_pack_k_bits_bb_0, '0'] +- [digital_constellation_modulator_0, '0', blocks_file_sink_0, '0'] - [digital_constellation_modulator_0, '0', blocks_throttle_0, '0'] +- [digital_constellation_modulator_0, '0', qtgui_time_sink_x_0, '0'] - [digital_costas_loop_cc_0, '0', digital_constellation_decoder_cb_0, '0'] -- [digital_costas_loop_cc_0, '0', fadingui_dearpygui_sink_0, '0'] -- [digital_costas_loop_cc_0, '0', qtgui_const_sink_x_0, '2'] -- [digital_diff_decoder_bb_0, '0', digital_map_bb_0, '0'] -- [digital_diff_decoder_bb_0, '0', fadingui_xor_frame_sync_0, '0'] -- [digital_map_bb_0, '0', fadingui_xor_frame_sync_0, '0'] - [digital_pfb_clock_sync_xxx_0, '0', digital_cma_equalizer_cc_0, '0'] -- [digital_pfb_clock_sync_xxx_0, '0', qtgui_const_sink_x_0, '0'] -- [fadingui_datasource_0, '0', blocks_throttle_1, '0'] - [fadingui_datasource_0, '0', digital_constellation_modulator_0, '0'] -- [fadingui_deframer_0, '0', blocks_null_sink_0, '0'] -- [fadingui_xor_frame_sync_0, '0', fadingui_deframer_0, '0'] +- [fadingui_xor_frame_sync_0, '0', blocks_null_sink_0, '0'] metadata: file_format: 1 diff --git a/tests/fadingui/QAM/qam_nogui.py b/tests/fadingui/QAM/qam_nogui.py index 4116db5..26f4680 100755 --- a/tests/fadingui/QAM/qam_nogui.py +++ b/tests/fadingui/QAM/qam_nogui.py @@ -6,7 +6,7 @@ # # GNU Radio Python Flow Graph # Title: QAM -# Author: Pross Naoki, Halter Sara Cinzia +# Author: Pross Naoki # GNU Radio version: 3.8.2.0 from distutils.version import StrictVersion @@ -21,14 +21,16 @@ if __name__ == '__main__': except: print("Warning: failed to XInitThreads()") +from PyQt5 import Qt +from gnuradio import qtgui +from gnuradio.filter import firdes +import sip from gnuradio import blocks from gnuradio import channels -from gnuradio.filter import firdes from gnuradio import digital from gnuradio import gr import sys import signal -from PyQt5 import Qt from argparse import ArgumentParser from gnuradio.eng_arg import eng_float, intx from gnuradio import eng_notation @@ -79,28 +81,75 @@ class qam_nogui(gr.top_block, Qt.QWidget): self.time_offset = time_offset = 1 self.samp_rate = samp_rate = 32000 self.rrc_taps = rrc_taps = firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), excess_bw, 45*nfilts) - self.phase_bw = phase_bw = .01 + self.phase_bw = phase_bw = 0.02 self.noise_volt = noise_volt = 0 self.freq_offset = freq_offset = 0 - self.frame = frame = fadingui.frame_obj(preamble=[190, 239], payload_len=32768) + self.frame = frame = fadingui.frame_obj(preamble=[0xc0, 0xff, 0xee], payload_len=32768) self.eq_ntaps = eq_ntaps = 15 self.eq_mod = eq_mod = 1 self.eq_gain = eq_gain = .002 - self.const = const = digital.constellation_16qam().base() + self.const = const = digital.constellation_qpsk().base() self.chn_taps = chn_taps = [1.0 + 0.0j, ] ################################################## # Blocks ################################################## + self.qtgui_time_sink_x_0 = qtgui.time_sink_c( + 1024, #size + samp_rate, #samp_rate + "", #name + 1 #number of inputs + ) + self.qtgui_time_sink_x_0.set_update_time(0.10) + self.qtgui_time_sink_x_0.set_y_axis(-2, 2) + + self.qtgui_time_sink_x_0.set_y_label('Amplitude', "") + + self.qtgui_time_sink_x_0.enable_tags(True) + self.qtgui_time_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") + self.qtgui_time_sink_x_0.enable_autoscale(False) + self.qtgui_time_sink_x_0.enable_grid(False) + self.qtgui_time_sink_x_0.enable_axis_labels(True) + self.qtgui_time_sink_x_0.enable_control_panel(True) + self.qtgui_time_sink_x_0.enable_stem_plot(False) + + + labels = ['Signal 1', 'Signal 2', 'Signal 3', 'Signal 4', 'Signal 5', + 'Signal 6', 'Signal 7', 'Signal 8', 'Signal 9', 'Signal 10'] + widths = [1, 1, 1, 1, 1, + 1, 1, 1, 1, 1] + colors = ['blue', 'red', 'green', 'black', 'cyan', + 'magenta', 'yellow', 'dark red', 'dark green', 'dark blue'] + alphas = [1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0, 1.0] + styles = [1, 1, 1, 1, 1, + 1, 1, 1, 1, 1] + markers = [-1, -1, -1, -1, -1, + -1, -1, -1, -1, -1] + + + for i in range(2): + if len(labels[i]) == 0: + if (i % 2 == 0): + self.qtgui_time_sink_x_0.set_line_label(i, "Re{{Data {0}}}".format(i/2)) + else: + self.qtgui_time_sink_x_0.set_line_label(i, "Im{{Data {0}}}".format(i/2)) + else: + self.qtgui_time_sink_x_0.set_line_label(i, labels[i]) + self.qtgui_time_sink_x_0.set_line_width(i, widths[i]) + self.qtgui_time_sink_x_0.set_line_color(i, colors[i]) + self.qtgui_time_sink_x_0.set_line_style(i, styles[i]) + self.qtgui_time_sink_x_0.set_line_marker(i, markers[i]) + self.qtgui_time_sink_x_0.set_line_alpha(i, alphas[i]) + + self._qtgui_time_sink_x_0_win = sip.wrapinstance(self.qtgui_time_sink_x_0.pyqwidget(), Qt.QWidget) + self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win) self.fadingui_xor_frame_sync_0 = fadingui.xor_frame_sync(sync_pattern=frame.preamble, buffer_size=frame.length * 5) - self.fadingui_deframer_0 = fadingui.deframer(frame_obj=frame) - self.fadingui_datasource_0 = fadingui.datasource(frame_obj=frame, filename='/home/god/Documents/Fading/tests/fadingui/QAM/lena512color.tiff') self.digital_pfb_clock_sync_xxx_0 = digital.pfb_clock_sync_ccf(sps, timing_loop_bw, rrc_taps, nfilts, nfilts/2, 1.5, 1) - self.digital_diff_decoder_bb_0 = digital.diff_decoder_bb(4) self.digital_costas_loop_cc_0 = digital.costas_loop_cc(phase_bw, 4, False) self.digital_constellation_modulator_0 = digital.generic_mod( constellation=const, - differential=True, + differential=False, samples_per_symbol=sps, pre_diff_code=True, excess_bw=excess_bw, @@ -108,32 +157,29 @@ class qam_nogui(gr.top_block, Qt.QWidget): log=False) self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(const) self.digital_cma_equalizer_cc_0 = digital.cma_equalizer_cc(eq_ntaps, eq_mod, eq_gain, 1) - self.channels_channel_model_0 = channels.channel_model( - noise_voltage=noise_volt, - frequency_offset=freq_offset, - epsilon=time_offset, - taps=chn_taps, - noise_seed=0, - block_tags=False) + self.blocks_vector_source_x_0 = blocks.vector_source_b([0xc0, 0xff, 0xee, 0x00, 0x00], True, 1, []) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True) + self.blocks_pack_k_bits_bb_0 = blocks.pack_k_bits_bb(8) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_char*1) + self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, '/home/god/Documents/Fading/tests/fadingui/QAM/modulated_nodiff.dat', False) + self.blocks_file_sink_0.set_unbuffered(False) ################################################## # Connections ################################################## - self.connect((self.blocks_throttle_0, 0), (self.channels_channel_model_0, 0)) - self.connect((self.channels_channel_model_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0)) + self.connect((self.blocks_pack_k_bits_bb_0, 0), (self.fadingui_xor_frame_sync_0, 0)) + self.connect((self.blocks_throttle_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0)) + self.connect((self.blocks_vector_source_x_0, 0), (self.digital_constellation_modulator_0, 0)) self.connect((self.digital_cma_equalizer_cc_0, 0), (self.digital_costas_loop_cc_0, 0)) - self.connect((self.digital_constellation_decoder_cb_0, 0), (self.digital_diff_decoder_bb_0, 0)) + self.connect((self.digital_constellation_decoder_cb_0, 0), (self.blocks_pack_k_bits_bb_0, 0)) + self.connect((self.digital_constellation_modulator_0, 0), (self.blocks_file_sink_0, 0)) self.connect((self.digital_constellation_modulator_0, 0), (self.blocks_throttle_0, 0)) + self.connect((self.digital_constellation_modulator_0, 0), (self.qtgui_time_sink_x_0, 0)) self.connect((self.digital_costas_loop_cc_0, 0), (self.digital_constellation_decoder_cb_0, 0)) - self.connect((self.digital_diff_decoder_bb_0, 0), (self.fadingui_xor_frame_sync_0, 0)) self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.digital_cma_equalizer_cc_0, 0)) - self.connect((self.fadingui_datasource_0, 0), (self.digital_constellation_modulator_0, 0)) - self.connect((self.fadingui_deframer_0, 0), (self.blocks_null_sink_0, 0)) - self.connect((self.fadingui_xor_frame_sync_0, 0), (self.fadingui_deframer_0, 0)) + self.connect((self.fadingui_xor_frame_sync_0, 0), (self.blocks_null_sink_0, 0)) def closeEvent(self, event): @@ -182,6 +228,7 @@ class qam_nogui(gr.top_block, Qt.QWidget): def set_samp_rate(self, samp_rate): self.samp_rate = samp_rate self.blocks_throttle_0.set_sample_rate(self.samp_rate) + self.qtgui_time_sink_x_0.set_samp_rate(self.samp_rate) def get_rrc_taps(self): return self.rrc_taps -- cgit v1.2.1