aboutsummaryrefslogtreecommitdiffstats
path: root/tests/correlator/correlator.grc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/correlator/correlator.grc')
-rw-r--r--tests/correlator/correlator.grc975
1 files changed, 256 insertions, 719 deletions
diff --git a/tests/correlator/correlator.grc b/tests/correlator/correlator.grc
index 9deec54..c34e5a9 100644
--- a/tests/correlator/correlator.grc
+++ b/tests/correlator/correlator.grc
@@ -1,7 +1,6 @@
options:
parameters:
author: Naoki Pross
- catch_exceptions: 'True'
category: '[GRC Hier Blocks]'
cmake_opt: ''
comment: ''
@@ -23,6 +22,7 @@ options:
sizing_mode: fixed
thread_safe_setters: ''
title: Correlator Test
+ window_size: ''
states:
bus_sink: false
bus_source: false
@@ -36,34 +36,15 @@ blocks:
id: variable
parameters:
comment: ''
- value: '[(-1.4142135623730951-1.4142135623730951j), (1.4142135623730951-1.4142135623730951j),
+ value: .5 * np.array([(-1.4142135623730951-1.4142135623730951j), (1.4142135623730951-1.4142135623730951j),
(1.4142135623730951+1.4142135623730951j), (1.4142135623730951+1.4142135623730951j),
(-1.4142135623730951-1.4142135623730951j), (1.4142135623730951+1.4142135623730951j),
- (1.4142135623730951-1.4142135623730951j), (1.4142135623730951-1.4142135623730951j)]'
+ (1.4142135623730951-1.4142135623730951j), (1.4142135623730951-1.4142135623730951j)])
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [776, 1140.0]
- rotation: 0
- state: enabled
-- name: access_code_symbols_sps
- id: variable
- parameters:
- comment: ''
- value: '[(1.4142197+1.4142197j), (1.4142197+1.4142197j), (1.4142197+1.4142197j),
- (1.4142197+1.4142197j), (1.4142197-1.4142197j), (1.4142197-1.4142197j), (1.4142197-1.4142197j),
- (1.4142197-1.4142197j), (1.4142197-1.4142197j), (1.4142197-1.4142197j), (1.4142197-1.4142197j),
- (1.4142197-1.4142197j), (-1.4142197-1.4142197j), (-1.4142197-1.4142197j), (-1.4142197-1.4142197j),
- (-1.4142197-1.4142197j), (1.4142197-1.4142197j), (1.4142197-1.4142197j), (1.4142197-1.4142197j),
- (1.4142197-1.4142197j), (1.4142197+1.4142197j), (1.4142197+1.4142197j), (1.4142197+1.4142197j),
- (1.4142197+1.4142197j), (1.4142197+1.4142197j), (1.4142197+1.4142197j), (1.4142197+1.4142197j),
- (1.4142197+1.4142197j)]'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [224, 132.0]
+ coordinate: [792, 788.0]
rotation: 0
state: enabled
- name: const
@@ -72,7 +53,6 @@ blocks:
comment: ''
const_points: '[-1-1j, -1+1j, 1+1j, 1-1j]'
dims: '1'
- normalization: digital.constellation.AMPLITUDE_NORMALIZATION
precision: '8'
rot_sym: '4'
soft_dec_lut: None
@@ -82,7 +62,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [592, 484.0]
+ coordinate: [592, 360.0]
rotation: 0
state: enabled
- name: excess_bw
@@ -94,7 +74,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [496, 484.0]
+ coordinate: [496, 360.0]
rotation: 0
state: enabled
- name: nfilts
@@ -106,7 +86,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [224, 988.0]
+ coordinate: [224, 856.0]
rotation: 0
state: enabled
- name: revconj_access_code_symbols
@@ -121,7 +101,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [48, 564.0]
+ coordinate: [784, 1052.0]
rotation: 0
state: enabled
- name: rrc_taps
@@ -133,14 +113,14 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [304, 988.0]
+ coordinate: [304, 856.0]
rotation: 0
state: enabled
- name: samp_rate
id: variable
parameters:
comment: ''
- value: '32000'
+ value: int(1.5e6)
states:
bus_sink: false
bus_source: false
@@ -164,76 +144,24 @@ blocks:
id: variable
parameters:
comment: ''
- value: '[31, 53] + [0x12, 0xe3, 0x9b, 0xee, 0x84, 0x23, 0x41, 0xf3]'
+ value: '[0x1f, 0x35] + [0x12, 0xe3, 0x9b, 0xee, 0x84, 0x23, 0x41, 0xf3] '
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [48, 492.0]
+ coordinate: [48, 360.0]
rotation: 0
state: enabled
- name: timing_loop_bw
id: variable
parameters:
comment: ''
- value: 2 * 3.141592653589793 / 100
+ value: 2 * np.pi / 100
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [224, 1068.0]
- rotation: 0
- state: enabled
-- name: blocks_burst_tagger_0
- id: blocks_burst_tagger
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- false_key: nothing
- false_value: '0'
- maxoutbuf: '0'
- minoutbuf: '0'
- true_key: peak
- true_value: 'True'
- type: float
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [944, 1580.0]
- rotation: 0
- state: disabled
-- name: blocks_char_to_short_0
- id: blocks_char_to_short
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- maxoutbuf: '0'
- minoutbuf: '0'
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [752, 1624.0]
- rotation: 0
- state: disabled
-- name: blocks_complex_to_magphase_0
- id: blocks_complex_to_magphase
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- maxoutbuf: '0'
- minoutbuf: '0'
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [1048, 696.0]
+ coordinate: [224, 936.0]
rotation: 0
state: enabled
- name: blocks_complex_to_magphase_0_0
@@ -249,41 +177,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1048, 1104.0]
- rotation: 0
- state: enabled
-- name: blocks_complex_to_magphase_0_1
- id: blocks_complex_to_magphase
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- maxoutbuf: '0'
- minoutbuf: '0'
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [256, 1592.0]
- rotation: 0
- state: disabled
-- name: blocks_multiply_const_vxx_0
- id: blocks_multiply_const_vxx
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- const: 180 / 3.141592653589793
- maxoutbuf: '0'
- minoutbuf: '0'
- type: float
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [1288, 724.0]
+ coordinate: [1056, 984.0]
rotation: 0
state: enabled
- name: blocks_multiply_const_vxx_0_0
@@ -301,41 +195,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1336, 1180.0]
- rotation: 0
- state: disabled
-- name: blocks_null_sink_0
- id: blocks_null_sink
- parameters:
- affinity: ''
- alias: ''
- bus_structure_sink: '[[0,],]'
- comment: ''
- num_inputs: '1'
- type: byte
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [1504, 1696.0]
- rotation: 0
- state: disabled
-- name: blocks_null_sink_2
- id: blocks_null_sink
- parameters:
- affinity: ''
- alias: ''
- bus_structure_sink: '[[0,],]'
- comment: ''
- num_inputs: '1'
- type: float
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [528, 1720.0]
+ coordinate: [1312, 1076.0]
rotation: 0
state: disabled
- name: blocks_null_sink_3
@@ -352,7 +212,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1336, 1232.0]
+ coordinate: [1360, 1016.0]
rotation: 0
state: true
- name: blocks_null_source_0
@@ -371,34 +231,36 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [96, 344.0]
+ coordinate: [96, 200.0]
rotation: 0
state: enabled
-- name: blocks_peak_detector2_fb_0
- id: blocks_peak_detector2_fb
+- name: blocks_repack_bits_bb_0
+ id: blocks_repack_bits_bb
parameters:
affinity: ''
alias: ''
- alpha: '0.001'
+ align_output: 'False'
comment: ''
- look_ahead: '1000'
+ endianness: gr.GR_MSB_FIRST
+ k: '2'
+ l: '8'
+ len_tag_key: '""'
maxoutbuf: '0'
minoutbuf: '0'
- threshold_factor_rise: '7'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [528, 1620.0]
+ coordinate: [672, 1252.0]
rotation: 0
- state: disabled
+ state: true
- name: blocks_stream_mux_0
id: blocks_stream_mux
parameters:
affinity: ''
alias: ''
comment: ''
- lengths: '[10, len(testvec)]'
+ lengths: '[0, len(testvec)]'
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
@@ -408,68 +270,66 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [288, 392.0]
+ coordinate: [288, 256.0]
rotation: 0
state: enabled
-- name: blocks_stream_mux_1
- id: blocks_stream_mux
+- name: blocks_tag_debug_0
+ id: blocks_tag_debug
parameters:
affinity: ''
alias: ''
comment: ''
- lengths: '[len(access_code_symbols_sps), sps * (len(testvec) + 15)]'
- maxoutbuf: '0'
- minoutbuf: '0'
- num_inputs: '2'
- type: complex
+ display: 'True'
+ filter: '""'
+ name: ''
+ num_inputs: '1'
+ type: byte
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [776, 280.0]
+ coordinate: [1208, 1164.0]
rotation: 0
state: disabled
-- name: blocks_throttle_0
- id: blocks_throttle
+- name: blocks_tagged_stream_align_0
+ id: blocks_tagged_stream_align
parameters:
affinity: ''
alias: ''
comment: ''
- ignoretag: 'True'
+ lengthtagname: frame_start
maxoutbuf: '0'
minoutbuf: '0'
- samples_per_second: samp_rate
- type: complex
+ type: byte
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1272, 404.0]
+ coordinate: [928, 1260.0]
rotation: 0
- state: enabled
-- name: blocks_vector_source_x_0
- id: blocks_vector_source_x
+ state: true
+- name: blocks_throttle_0
+ id: blocks_throttle
parameters:
affinity: ''
alias: ''
comment: ''
+ ignoretag: 'True'
maxoutbuf: '0'
minoutbuf: '0'
- repeat: 'False'
- tags: '[]'
- type: byte
- vector: testvec * 1600
+ samples_per_second: samp_rate
+ type: complex
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [48, 404.0]
+ coordinate: [1272, 268.0]
rotation: 0
state: enabled
-- name: blocks_vector_source_x_1
+- name: blocks_vector_source_x_0
id: blocks_vector_source_x
parameters:
affinity: ''
@@ -479,16 +339,16 @@ blocks:
minoutbuf: '0'
repeat: 'True'
tags: '[]'
- type: complex
- vector: access_code_symbols_sps
+ type: byte
+ vector: testvec * 500
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [224, 204.0]
+ coordinate: [48, 268.0]
rotation: 0
- state: disabled
+ state: enabled
- name: channels_channel_model_0
id: channels_channel_model
parameters:
@@ -497,17 +357,17 @@ blocks:
block_tags: 'False'
comment: ''
epsilon: '1.0'
- freq_offset: '0.000001'
+ freq_offset: '0.002'
maxoutbuf: '0'
minoutbuf: '0'
- noise_voltage: '0.2'
+ noise_voltage: '0.01'
seed: '243'
- taps: -1.4 + .4j
+ taps: np.exp(1j * 30 / 180 * np.pi)
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [992, 364.0]
+ coordinate: [1000, 228.0]
rotation: 0
state: enabled
- name: digital_cma_equalizer_cc_0
@@ -526,7 +386,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [528, 812.0]
+ coordinate: [520, 676.0]
rotation: 0
state: enabled
- name: digital_constellation_decoder_cb_0
@@ -542,9 +402,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1232, 1692.0]
+ coordinate: [224, 1260.0]
rotation: 0
- state: disabled
+ state: enabled
- name: digital_constellation_modulator_0
id: digital_constellation_modulator
parameters:
@@ -558,13 +418,12 @@ blocks:
maxoutbuf: '0'
minoutbuf: '0'
samples_per_symbol: sps
- truncate: 'False'
verbose: 'False'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [496, 380.0]
+ coordinate: [504, 244.0]
rotation: 0
state: enabled
- name: digital_corr_est_cc_0
@@ -573,18 +432,52 @@ blocks:
affinity: ''
alias: ''
comment: ''
- mark_delay: '0'
+ mark_delay: len(access_code_symbols) // 2
maxoutbuf: '0'
minoutbuf: '0'
sps: '1'
symbols: access_code_symbols
- threshold: '.8'
- threshold_method: digital.THRESHOLD_DYNAMIC
+ threshold: '.9'
+ threshold_method: digital.THRESHOLD_ABSOLUTE
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [792, 668.0]
+ rotation: 0
+ state: enabled
+- name: digital_costas_loop_cc_0
+ id: digital_costas_loop_cc
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ order: '4'
+ use_snr: 'False'
+ w: 2 * 3.141592653589793 / 100
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1104, 808.0]
+ rotation: 0
+ state: true
+- 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: [776, 1020.0]
+ coordinate: [496, 1260.0]
rotation: 0
state: enabled
- name: digital_pfb_clock_sync_xxx_0
@@ -607,174 +500,168 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [224, 836.0]
+ coordinate: [224, 700.0]
rotation: 0
state: enabled
-- name: fir_filter_xxx_1
- id: fir_filter_xxx
+- name: epy_block_0
+ id: epy_block
parameters:
+ _source_code: "import pmt\n\nimport numpy as np\nfrom gnuradio import gr\n\n\n\
+ class blk(gr.sync_block):\n \"\"\"\n Apply phase and frequency correction\
+ \ where there is a correlation peak tag.\n\n The correlation peak tags are\
+ \ NOT propagated, and instead replaced with a\n frame_start tag.\n \"\"\
+ \"\n def __init__(self):\n gr.sync_block.__init__(\n self,\n\
+ \ name='Phase and Frequency Correction',\n in_sig=[np.complex64],\n\
+ \ out_sig=[np.complex64]\n )\n\n # tags should not\
+ \ be propagated, we then output our own tags\n self.set_tag_propagation_policy(gr.TPP_DONT)\n\
+ \n # because we do block processing, we need to keep track of the last\
+ \ tag\n # of the previous block to correct the first values of the next\
+ \ block\n self.last = None\n self.lastfreq = 0\n\n def block_phase(self,\
+ \ start, end):\n \"\"\"\n Compute a vector for the phase and frequency\
+ \ correction for the samples\n between two tags (start and end).\n\n\
+ \ @param start Tag where the samples should start to be corrected\n \
+ \ @param end Tag where to stop correcting\n\n @return A vector\
+ \ of phase values for each sample. To correct the samples\n the\
+ \ data should be multiplied with np.exp(-1j * phase)\n \"\"\"\n \
+ \ # compute number of samples between tags\n nsamples = end.offset\
+ \ - start.offset\n\n # unpack pmt values into start and end phase\n \
+ \ sphase = pmt.to_python(start.value)\n ephase = pmt.to_python(end.value)\n\
+ \n # compute frequency offset between start and end\n phasediff\
+ \ = ephase - sphase\n\n if phasediff > np.pi:\n phasediff\
+ \ -= 2*np.pi\n\n elif phasediff < -np.pi:\n phasediff += 2*np.pi\n\
+ \n freq = phasediff / nsamples\n\n # save this one for the last\
+ \ block (see variable `end' in self.work)\n self.lastfreq = freq\n\n\
+ \ # debugging\n print(f\"Correction for chunk of {nsamples:2d}\
+ \ samples is \" \\\n f\"sphase={sphase: .4f} rad and freq={freq*1e3:\
+ \ .4f} milli rad / sample\")\n\n # compute chunk values\n return\
+ \ sphase * np.ones(nsamples) + freq * np.arange(0, nsamples)\n\n def work(self,\
+ \ input_items, output_items):\n counter = self.nitems_written(0)\n\n\
+ \ # nicer aliases\n inp = input_items[0]\n out = output_items[0]\n\
+ \n # read phase tags\n is_phase = lambda tag: pmt.to_python(tag.key)\
+ \ == \"phase_est\"\n tags = list(filter(is_phase, self.get_tags_in_window(0,\
+ \ 0, len(inp))))\n\n if not tags:\n print(f\"There were no\
+ \ tags in {len(inp)} samples!\")\n out[:] = inp\n return\
+ \ len(out)\n\n # debugging\n print(f\"Processing {len(tags)} tags\
+ \ = {tags[-1].offset - tags[0].offset} \" \\\n f\"samples out of\
+ \ {len(inp)} input samples\")\n\n # compute \"the middle\"\n enough_samples\
+ \ = lambda pair: ((pair[1].offset - pair[0].offset) > 0)\n pairs = list(filter(enough_samples,\
+ \ zip(tags, tags[1:])))\n chunks = [ self.block_phase(start, end) for\
+ \ (start, end) in pairs ]\n middle = np.concatenate(chunks) if chunks\
+ \ else []\n\n # compute values at the end, we do not have informations\
+ \ about the future\n # but we can use the frequency of the last tag to\
+ \ approximate\n nback = len(inp) - (tags[-1].offset - counter)\n \
+ \ print(f\"Processing {nback} samples at the back of the buffer\")\n \
+ \ end = np.ones(nback) * pmt.to_python(tags[-1].value) \\\n \
+ \ + self.lastfreq * np.arange(0, nback)\n\n # compute the \"start\"\
+ , using the last tag from the previous call\n nfront = tags[0].offset\
+ \ - counter\n print(f\"Processing {nfront} samples at the front of the\
+ \ buffer\")\n start = self.block_phase(self.last, tags[0])[-nfront:]\
+ \ \\\n if self.last and nfront else np.zeros(nfront)\n\n \
+ \ # compute correction\n correction = np.exp(-1j * np.concatenate([start,\
+ \ middle, end]))\n length = len(correction)\n\n # write outputs\n\
+ \ out[:length] = inp[:length] * correction\n\n # save last tag\
+ \ for next call\n self.last = tags[-1]\n\n # add tags\n \
+ \ for tag in tags:\n self.add_item_tag(0, tag.offset, pmt.intern(\"\
+ frame_start\"), pmt.PMT_T)\n\n # FIXME: should return `length' but then\
+ \ the last sample is not\n # included and self.last does something\
+ \ weird\n return len(out)\n"
affinity: ''
alias: ''
comment: ''
- decim: '1'
maxoutbuf: '0'
minoutbuf: '0'
- samp_delay: '0'
- taps: revconj_access_code_symbols
- type: ccc
states:
+ _io_cache: ('Phase and Frequency Correction', 'blk', [], [('0', 'complex', 1)],
+ [('0', 'complex', 1)], '\n Apply phase and frequency correction where there
+ is a correlation peak tag.\n\n The correlation peak tags are NOT propagated,
+ and instead replaced with a\n frame_start tag.\n ', [])
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [776, 828.0]
+ coordinate: [1088, 688.0]
rotation: 0
state: enabled
-- name: high_pass_filter_0
- id: high_pass_filter
+- name: epy_block_1
+ id: epy_block
parameters:
+ _source_code: "\"\"\"\nEmbedded Python Blocks:\n\nEach time this file is saved,\
+ \ GRC will instantiate the first class it finds\nto get ports and parameters\
+ \ of your block. The arguments to __init__ will\nbe the parameters. All of\
+ \ them are required to have default values!\n\"\"\"\n\nimport numpy as np\n\
+ from gnuradio import gr\n\nnp.set_printoptions(formatter={'int':hex})\n\nclass\
+ \ blk(gr.sync_block):\n def __init__(self):\n gr.sync_block.__init__(\n\
+ \ self,\n name='Printer',\n in_sig=[np.byte],\n\
+ \ out_sig=[]\n )\n\n def work(self, input_items, output_items):\n\
+ \ inp = np.array(input_items[0], dtype=np.uint8)\n print(f\"Decoded\
+ \ {len(inp)} samples:\\n{inp}\")\n\n return len(inp)\n"
affinity: ''
alias: ''
- beta: '6.76'
comment: ''
- cutoff_freq: 5e3
- decim: '1'
- gain: '1'
- interp: '1'
maxoutbuf: '0'
minoutbuf: '0'
- samp_rate: samp_rate
- type: fir_filter_fff
- width: '.7'
- win: window.WIN_HAMMING
states:
+ _io_cache: ('Printer', 'blk', [], [('0', 'byte', 1)], [], '', [])
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [528, 1420.0]
+ coordinate: [1232, 1264.0]
rotation: 0
- state: disabled
-- name: low_pass_filter_0
- id: low_pass_filter
+ state: true
+- name: fir_filter_xxx_1
+ id: fir_filter_xxx
parameters:
affinity: ''
alias: ''
- beta: '6.76'
comment: ''
- cutoff_freq: 7e3
decim: '1'
- gain: '1'
- interp: '1'
maxoutbuf: '0'
minoutbuf: '0'
- samp_rate: samp_rate
- type: fir_filter_fff
- width: '.8'
- win: window.WIN_HAMMING
+ samp_delay: '0'
+ taps: revconj_access_code_symbols
+ type: ccc
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [528, 1252.0]
+ coordinate: [784, 988.0]
rotation: 0
state: disabled
-- name: qtgui_const_sink_x_0
- id: qtgui_const_sink_x
+- name: import_0
+ id: import
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: 0,1,2,1
- 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: '"Equalized Signal"'
- 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'
+ imports: import numpy as np
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [776, 716.0]
+ coordinate: [184, 12.0]
rotation: 0
- state: enabled
-- name: qtgui_const_sink_x_1
+ state: true
+- name: note_0
+ id: note
+ parameters:
+ alias: ''
+ comment: 'THIS FLOWGRAPH MUST BE RUN
+
+ FROM THE TERMINAL BECAUSE
+
+ IT HAS A HUGE OUTPUT (PRINT)'
+ note: README
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [280, 12.0]
+ rotation: 0
+ state: true
+- name: qtgui_const_sink_x_0
id: qtgui_const_sink_x
parameters:
affinity: ''
alias: ''
- alpha1: '.5'
+ alpha1: '1.0'
alpha10: '1.0'
alpha2: '1.0'
alpha3: '1.0'
@@ -784,7 +671,7 @@ blocks:
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
- autoscale: 'True'
+ autoscale: 'False'
axislabels: 'True'
color1: '"blue"'
color10: '"red"'
@@ -797,8 +684,8 @@ blocks:
color8: '"red"'
color9: '"red"'
comment: ''
- grid: 'True'
- gui_hint: 2,1,2,1
+ grid: 'False'
+ gui_hint: 0,1,2,1
label1: ''
label10: ''
label2: ''
@@ -810,7 +697,7 @@ blocks:
label8: ''
label9: ''
legend: 'True'
- marker1: '9'
+ marker1: '0'
marker10: '0'
marker2: '0'
marker3: '0'
@@ -820,10 +707,10 @@ blocks:
marker7: '0'
marker8: '0'
marker9: '0'
- name: '"Cross Correlation"'
+ name: '"Equalized Signal"'
nconnections: '1'
size: '1024'
- style1: '2'
+ style1: '0'
style10: '0'
style2: '0'
style3: '0'
@@ -858,10 +745,10 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1048, 612.0]
+ coordinate: [792, 572.0]
rotation: 0
state: enabled
-- name: qtgui_const_sink_x_2
+- name: qtgui_const_sink_x_0_0
id: qtgui_const_sink_x
parameters:
affinity: ''
@@ -890,10 +777,10 @@ blocks:
color9: '"red"'
comment: ''
grid: 'False'
- gui_hint: '2,1,2,1 '
- label1: ''
+ gui_hint: 2,1,2,1
+ label1: Custom Block
label10: ''
- label2: ''
+ label2: Costas Loop
label3: ''
label4: ''
label5: ''
@@ -912,8 +799,8 @@ blocks:
marker7: '0'
marker8: '0'
marker9: '0'
- name: '"Phase Correction"'
- nconnections: '1'
+ name: '"Phase Locked Signal"'
+ nconnections: '2'
size: '1024'
style1: '0'
style10: '0'
@@ -950,104 +837,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1248, 1588.0]
- rotation: 0
- state: disabled
-- name: qtgui_time_sink_x_0
- id: qtgui_time_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: 'True'
- axislabels: 'True'
- 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'
- entags: 'True'
- grid: 'False'
- gui_hint: 2,0,1,1
- 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: '-1'
- marker10: '-1'
- marker2: '-1'
- marker3: '-1'
- marker4: '-1'
- marker5: '-1'
- marker6: '-1'
- marker7: '-1'
- marker8: '-1'
- marker9: '-1'
- name: '""'
- nconnections: '1'
- size: '1024'
- 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
- tr_tag: '""'
- type: float
- update_time: '0.10'
- width1: '1'
- width10: '1'
- width2: '1'
- width3: '1'
- width4: '1'
- width5: '1'
- width6: '1'
- width7: '1'
- width8: '1'
- width9: '1'
- ylabel: XC Magnitude
- ymax: '20'
- ymin: '0'
- yunit: '""'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [1320, 604.0]
+ coordinate: [1416, 772.0]
rotation: 0
state: enabled
- name: qtgui_time_sink_x_0_0
@@ -1106,7 +896,7 @@ blocks:
name: '""'
nconnections: '1'
size: '1024'
- srate: samp_rate
+ srate: samp_rate / sps
stemplot: 'False'
style1: '1'
style10: '1'
@@ -1144,7 +934,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1336, 1084.0]
+ coordinate: [1472, 964.0]
rotation: 0
state: enabled
- name: qtgui_time_sink_x_0_0_0
@@ -1203,7 +993,7 @@ blocks:
name: '""'
nconnections: '1'
size: '1024'
- srate: samp_rate
+ srate: samp_rate / sps
stemplot: 'False'
style1: '1'
style10: '1'
@@ -1233,7 +1023,7 @@ blocks:
width7: '1'
width8: '1'
width9: '1'
- ylabel: XC Magnitude
+ ylabel: Equalized
ymax: '2'
ymin: '-2'
yunit: '""'
@@ -1241,106 +1031,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1048, 1020.0]
+ coordinate: [1096, 572.0]
rotation: 0
state: enabled
-- name: qtgui_time_sink_x_1
- id: qtgui_time_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: dark blue
- color2: red
- color3: green
- color4: black
- color5: cyan
- color6: magenta
- color7: yellow
- color8: dark red
- color9: dark green
- comment: ''
- ctrlpanel: 'False'
- entags: 'True'
- grid: 'False'
- gui_hint: ''
- 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: '-1'
- marker10: '-1'
- marker2: '-1'
- marker3: '-1'
- marker4: '-1'
- marker5: '-1'
- marker6: '-1'
- marker7: '-1'
- marker8: '-1'
- marker9: '-1'
- name: '""'
- nconnections: '1'
- size: '1024'
- 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
- tr_tag: '""'
- type: float
- update_time: '0.10'
- width1: '1'
- width10: '1'
- width2: '1'
- width3: '1'
- width4: '1'
- width5: '1'
- width6: '1'
- width7: '1'
- width8: '1'
- width9: '1'
- ylabel: Amplitude
- ymax: '20'
- ymin: '-5'
- yunit: '""'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [784, 1452.0]
- rotation: 0
- state: disabled
- name: qtgui_time_sink_x_1_0
id: qtgui_time_sink_x
parameters:
@@ -1435,7 +1128,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [808, 452.0]
+ coordinate: [800, 172.0]
rotation: 0
state: enabled
- name: qtgui_time_sink_x_1_1
@@ -1532,106 +1225,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [776, 612.0]
- rotation: 0
- state: enabled
-- name: qtgui_time_sink_x_2
- id: qtgui_time_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: 'True'
- axislabels: 'True'
- 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'
- entags: 'True'
- grid: 'False'
- gui_hint: 3,0,1,1
- 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: '-1'
- marker10: '-1'
- marker2: '-1'
- marker3: '-1'
- marker4: '-1'
- marker5: '-1'
- marker6: '-1'
- marker7: '-1'
- marker8: '-1'
- marker9: '-1'
- name: '""'
- nconnections: '1'
- size: '1024'
- 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
- tr_tag: '""'
- type: float
- update_time: '0.10'
- width1: '1'
- width10: '1'
- width2: '1'
- width3: '1'
- width4: '1'
- width5: '1'
- width6: '1'
- width7: '1'
- width8: '1'
- width9: '1'
- ylabel: XC Phase
- ymax: '1'
- ymin: '-1'
- yunit: '""'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [1480, 708.0]
+ coordinate: [792, 484.0]
rotation: 0
- state: enabled
+ state: disabled
- name: qtgui_time_sink_x_2_0
id: qtgui_time_sink_x
parameters:
@@ -1726,30 +1322,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1512, 1164.0]
- rotation: 0
- state: disabled
-- name: root_raised_cosine_filter_0
- id: root_raised_cosine_filter
- parameters:
- affinity: ''
- alias: ''
- alpha: excess_bw
- comment: ''
- decim: '1'
- gain: '2'
- interp: '1'
- maxoutbuf: '0'
- minoutbuf: '0'
- ntaps: 11*samp_rate
- samp_rate: samp_rate
- sym_rate: sps * samp_rate
- type: fir_filter_ccf
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [496, 180.0]
+ coordinate: [1472, 1060.0]
rotation: 0
state: disabled
- name: virtual_sink_0
@@ -1762,33 +1335,20 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1480, 404.0]
+ coordinate: [1488, 268.0]
rotation: 0
state: enabled
-- name: virtual_sink_1
- id: virtual_sink
- parameters:
- alias: ''
- comment: ''
- stream_id: symbols
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [776, 916.0]
- rotation: 0
- state: true
-- name: virtual_sink_2
+- name: virtual_sink_3
id: virtual_sink
parameters:
alias: ''
comment: ''
- stream_id: xcorrelation
+ stream_id: locked
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1080, 836.0]
+ coordinate: [1416, 684.0]
rotation: 0
state: true
- name: virtual_source_0
@@ -1801,78 +1361,55 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [32, 884.0]
+ coordinate: [16, 748.0]
rotation: 0
state: enabled
-- name: virtual_source_2
+- name: virtual_source_1
id: virtual_source
parameters:
alias: ''
comment: ''
- stream_id: symbols
+ stream_id: locked
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [32, 1716.0]
+ coordinate: [16, 1260.0]
rotation: 0
- state: disabled
-- name: virtual_source_3
- id: virtual_source
- parameters:
- alias: ''
- comment: ''
- stream_id: xcorrelation
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [32, 1604.0]
- rotation: 0
- state: disabled
+ state: true
connections:
-- [blocks_char_to_short_0, '0', blocks_burst_tagger_0, '1']
-- [blocks_complex_to_magphase_0, '0', qtgui_time_sink_x_0, '0']
-- [blocks_complex_to_magphase_0, '1', blocks_multiply_const_vxx_0, '0']
- [blocks_complex_to_magphase_0_0, '0', qtgui_time_sink_x_0_0, '0']
- [blocks_complex_to_magphase_0_0, '1', blocks_multiply_const_vxx_0_0, '0']
- [blocks_complex_to_magphase_0_0, '1', blocks_null_sink_3, '0']
-- [blocks_complex_to_magphase_0_1, '0', blocks_burst_tagger_0, '0']
-- [blocks_complex_to_magphase_0_1, '0', blocks_peak_detector2_fb_0, '0']
-- [blocks_complex_to_magphase_0_1, '0', high_pass_filter_0, '0']
-- [blocks_complex_to_magphase_0_1, '0', low_pass_filter_0, '0']
-- [blocks_complex_to_magphase_0_1, '1', blocks_null_sink_2, '0']
-- [blocks_multiply_const_vxx_0, '0', qtgui_time_sink_x_2, '0']
- [blocks_multiply_const_vxx_0_0, '0', qtgui_time_sink_x_2_0, '0']
- [blocks_null_source_0, '0', blocks_stream_mux_0, '0']
-- [blocks_peak_detector2_fb_0, '0', blocks_char_to_short_0, '0']
+- [blocks_repack_bits_bb_0, '0', blocks_tagged_stream_align_0, '0']
- [blocks_stream_mux_0, '0', digital_constellation_modulator_0, '0']
-- [blocks_stream_mux_1, '0', channels_channel_model_0, '0']
+- [blocks_tagged_stream_align_0, '0', blocks_tag_debug_0, '0']
+- [blocks_tagged_stream_align_0, '0', epy_block_1, '0']
- [blocks_throttle_0, '0', virtual_sink_0, '0']
- [blocks_vector_source_x_0, '0', blocks_stream_mux_0, '1']
-- [blocks_vector_source_x_1, '0', root_raised_cosine_filter_0, '0']
- [channels_channel_model_0, '0', blocks_throttle_0, '0']
- [digital_cma_equalizer_cc_0, '0', digital_corr_est_cc_0, '0']
- [digital_cma_equalizer_cc_0, '0', fir_filter_xxx_1, '0']
- [digital_cma_equalizer_cc_0, '0', qtgui_const_sink_x_0, '0']
- [digital_cma_equalizer_cc_0, '0', qtgui_time_sink_x_1_1, '0']
-- [digital_cma_equalizer_cc_0, '0', virtual_sink_1, '0']
-- [digital_constellation_decoder_cb_0, '0', blocks_null_sink_0, '0']
-- [digital_constellation_modulator_0, '0', blocks_stream_mux_1, '1']
+- [digital_constellation_decoder_cb_0, '0', digital_map_bb_0, '0']
- [digital_constellation_modulator_0, '0', channels_channel_model_0, '0']
- [digital_constellation_modulator_0, '0', qtgui_time_sink_x_1_0, '0']
+- [digital_corr_est_cc_0, '0', digital_costas_loop_cc_0, '0']
+- [digital_corr_est_cc_0, '0', epy_block_0, '0']
- [digital_corr_est_cc_0, '0', qtgui_time_sink_x_0_0_0, '0']
- [digital_corr_est_cc_0, '1', blocks_complex_to_magphase_0_0, '0']
+- [digital_costas_loop_cc_0, '0', qtgui_const_sink_x_0_0, '1']
+- [digital_map_bb_0, '0', blocks_repack_bits_bb_0, '0']
- [digital_pfb_clock_sync_xxx_0, '0', digital_cma_equalizer_cc_0, '0']
-- [fir_filter_xxx_1, '0', blocks_complex_to_magphase_0, '0']
-- [fir_filter_xxx_1, '0', qtgui_const_sink_x_1, '0']
-- [fir_filter_xxx_1, '0', virtual_sink_2, '0']
-- [high_pass_filter_0, '0', qtgui_time_sink_x_1, '0']
-- [low_pass_filter_0, '0', qtgui_time_sink_x_1, '0']
-- [root_raised_cosine_filter_0, '0', blocks_stream_mux_1, '0']
+- [epy_block_0, '0', qtgui_const_sink_x_0_0, '0']
+- [epy_block_0, '0', virtual_sink_3, '0']
+- [fir_filter_xxx_1, '0', blocks_complex_to_magphase_0_0, '0']
- [virtual_source_0, '0', digital_pfb_clock_sync_xxx_0, '0']
-- [virtual_source_3, '0', blocks_complex_to_magphase_0_1, '0']
+- [virtual_source_1, '0', digital_constellation_decoder_cb_0, '0']
metadata:
file_format: 1