aboutsummaryrefslogtreecommitdiffstats
path: root/tests/correlator
diff options
context:
space:
mode:
Diffstat (limited to 'tests/correlator')
-rw-r--r--tests/correlator/acgen.datbin5120 -> 0 bytes
-rw-r--r--tests/correlator/acgen.grc188
-rwxr-xr-xtests/correlator/acgen.py120
-rwxr-xr-xtests/correlator/acproc.py57
-rw-r--r--tests/correlator/correlator.grc1475
-rwxr-xr-xtests/correlator/correlator.py445
6 files changed, 1825 insertions, 460 deletions
diff --git a/tests/correlator/acgen.dat b/tests/correlator/acgen.dat
deleted file mode 100644
index 537dcc5..0000000
--- a/tests/correlator/acgen.dat
+++ /dev/null
Binary files differ
diff --git a/tests/correlator/acgen.grc b/tests/correlator/acgen.grc
deleted file mode 100644
index ec7c1e8..0000000
--- a/tests/correlator/acgen.grc
+++ /dev/null
@@ -1,188 +0,0 @@
-options:
- parameters:
- author: Naoki Pross
- catch_exceptions: 'True'
- category: '[GRC Hier Blocks]'
- cmake_opt: ''
- comment: ''
- copyright: ''
- description: ''
- gen_cmake: 'On'
- gen_linking: dynamic
- generate_options: no_gui
- hier_block_src_path: '.:'
- id: acgen
- 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: Access Code Symbols Generator
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [8, 8]
- rotation: 0
- state: enabled
-
-blocks:
-- name: access_code
- id: variable
- parameters:
- comment: ''
- value: '[ 0xaa, 0xff, 0x0a ]'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [40, 292.0]
- rotation: 0
- state: true
-- name: const
- id: variable_constellation
- parameters:
- 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
- sym_map: '[0, 1, 3, 2]'
- type: qpsk
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [464, 124.0]
- rotation: 0
- state: true
-- name: excess_bw
- id: variable
- parameters:
- comment: ''
- value: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [464, 308.0]
- rotation: 0
- state: true
-- name: samp_rate
- id: variable
- parameters:
- comment: ''
- value: '32000'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [200, 44.0]
- rotation: 0
- state: enabled
-- name: sps
- id: variable
- parameters:
- comment: ''
- value: '4'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [312, 44.0]
- rotation: 0
- state: true
-- name: blocks_file_sink_0
- id: blocks_file_sink
- parameters:
- affinity: ''
- alias: ''
- append: 'False'
- comment: ''
- file: acgen.dat
- type: complex
- unbuffered: 'False'
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [752, 204.0]
- rotation: 0
- state: true
-- name: blocks_throttle_0
- id: blocks_throttle
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- ignoretag: 'True'
- maxoutbuf: '0'
- minoutbuf: '0'
- samples_per_second: samp_rate
- type: byte
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [264, 220.0]
- rotation: 0
- state: true
-- name: blocks_vector_source_x_0
- id: blocks_vector_source_x
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- maxoutbuf: '0'
- minoutbuf: '0'
- repeat: 'False'
- tags: '[]'
- type: byte
- vector: '[0x00] * 10 + access_code * 10'
- vlen: '1'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [40, 204.0]
- rotation: 0
- state: true
-- name: digital_constellation_modulator_0
- id: digital_constellation_modulator
- parameters:
- affinity: ''
- alias: ''
- comment: ''
- constellation: const
- differential: 'False'
- excess_bw: excess_bw
- log: 'False'
- maxoutbuf: '0'
- minoutbuf: '0'
- samples_per_symbol: sps
- truncate: 'False'
- verbose: 'False'
- states:
- bus_sink: false
- bus_source: false
- bus_structure: null
- coordinate: [464, 196.0]
- rotation: 0
- state: true
-
-connections:
-- [blocks_throttle_0, '0', digital_constellation_modulator_0, '0']
-- [blocks_vector_source_x_0, '0', blocks_throttle_0, '0']
-- [digital_constellation_modulator_0, '0', blocks_file_sink_0, '0']
-
-metadata:
- file_format: 1
diff --git a/tests/correlator/acgen.py b/tests/correlator/acgen.py
deleted file mode 100755
index 5fbdbb4..0000000
--- a/tests/correlator/acgen.py
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-#
-# SPDX-License-Identifier: GPL-3.0
-#
-# GNU Radio Python Flow Graph
-# Title: Access Code Symbols Generator
-# Author: Naoki Pross
-# GNU Radio version: 3.9.2.0
-
-from gnuradio import blocks
-from gnuradio import digital
-from gnuradio import gr
-from gnuradio.filter import firdes
-from gnuradio.fft import window
-import sys
-import signal
-from argparse import ArgumentParser
-from gnuradio.eng_arg import eng_float, intx
-from gnuradio import eng_notation
-
-
-
-
-class acgen(gr.top_block):
-
- def __init__(self):
- gr.top_block.__init__(self, "Access Code Symbols Generator", catch_exceptions=True)
-
- ##################################################
- # Variables
- ##################################################
- self.sps = sps = 4
- self.samp_rate = samp_rate = 32000
- self.excess_bw = excess_bw = 1
- self.const = const = digital.constellation_qpsk().base()
- self.access_code = access_code = [ 0xaa, 0xff, 0x0a ]
-
- ##################################################
- # Blocks
- ##################################################
- self.digital_constellation_modulator_0 = digital.generic_mod(
- constellation=const,
- differential=False,
- samples_per_symbol=sps,
- pre_diff_code=True,
- excess_bw=excess_bw,
- verbose=False,
- log=False,
- truncate=False)
- self.blocks_vector_source_x_0 = blocks.vector_source_b([0x00] * 10 + access_code * 10, False, 1, [])
- self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, samp_rate,True)
- self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, 'acgen.dat', False)
- self.blocks_file_sink_0.set_unbuffered(False)
-
-
-
- ##################################################
- # Connections
- ##################################################
- self.connect((self.blocks_throttle_0, 0), (self.digital_constellation_modulator_0, 0))
- self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_throttle_0, 0))
- self.connect((self.digital_constellation_modulator_0, 0), (self.blocks_file_sink_0, 0))
-
-
- def get_sps(self):
- return self.sps
-
- def set_sps(self, sps):
- self.sps = sps
-
- def get_samp_rate(self):
- return self.samp_rate
-
- def set_samp_rate(self, samp_rate):
- self.samp_rate = samp_rate
- self.blocks_throttle_0.set_sample_rate(self.samp_rate)
-
- def get_excess_bw(self):
- return self.excess_bw
-
- def set_excess_bw(self, excess_bw):
- self.excess_bw = excess_bw
-
- def get_const(self):
- return self.const
-
- def set_const(self, const):
- self.const = const
-
- def get_access_code(self):
- return self.access_code
-
- def set_access_code(self, access_code):
- self.access_code = access_code
- self.blocks_vector_source_x_0.set_data([0x00] * 10 + self.access_code * 10, [])
-
-
-
-
-def main(top_block_cls=acgen, options=None):
- tb = top_block_cls()
-
- def sig_handler(sig=None, frame=None):
- tb.stop()
- tb.wait()
-
- sys.exit(0)
-
- signal.signal(signal.SIGINT, sig_handler)
- signal.signal(signal.SIGTERM, sig_handler)
-
- tb.start()
-
- tb.wait()
-
-
-if __name__ == '__main__':
- main()
diff --git a/tests/correlator/acproc.py b/tests/correlator/acproc.py
deleted file mode 100755
index e119520..0000000
--- a/tests/correlator/acproc.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/env python3
-
-import numpy as np
-import matplotlib.pyplot as plt
-import acgen
-
-# Parameters
-# samples per symbol
-sps = 4
-# number of initial bytes (to ignore)
-nzeros = 10
-# length of the access code in bytes
-aclen = 2
-
-# Create samples
-print("Modulating symbols")
-acgen.main()
-
-# Extract one sequence
-print("Extracting symbol sequence")
-
-# raw data
-data = np.fromfile("acgen.dat", dtype=np.complex64)
-plt.plot(data.real)
-plt.plot(data.imag)
-plt.title("Raw Data (time domain)")
-plt.show()
-
-# take only symbols
-symbols = data[1::sps]
-plt.plot(symbols.real, symbols.imag)
-plt.title("Symbols only (constellation)")
-plt.show()
-
-# where ac symbols start, in symbols
-ac_start = nzeros * 8
-ac_end = ac_start + aclen * 8
-
-ac = symbols[ac_start:ac_end]
-
-fig, (ax1, ax2) = plt.subplots(2, 1)
-fig.tight_layout()
-
-ax1.plot(ac.real, ac.imag)
-ax1.set_title("Symbols of Access Code (constellation)")
-
-ax2.plot(ac.real, ".-")
-ax2.plot(ac.imag, ".-")
-ax2.set_title("Symbols of Access Code (time)")
-plt.show()
-
-fir = list(np.conj(ac[::-1]))
-
-# print the symbols
-print(f"Generated {len(ac)} symbols from a {aclen} byte sequence")
-print("Reversed symbols (for FIR filter):")
-print(fir)
diff --git a/tests/correlator/correlator.grc b/tests/correlator/correlator.grc
index cc57e18..9deec54 100644
--- a/tests/correlator/correlator.grc
+++ b/tests/correlator/correlator.grc
@@ -32,6 +32,40 @@ options:
state: enabled
blocks:
+- name: access_code_symbols
+ id: variable
+ parameters:
+ comment: ''
+ value: '[(-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]
+ rotation: 0
+ state: enabled
- name: const
id: variable_constellation
parameters:
@@ -48,9 +82,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [432, 164.0]
+ coordinate: [592, 484.0]
rotation: 0
- state: true
+ state: enabled
- name: excess_bw
id: variable
parameters:
@@ -60,9 +94,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [432, 340.0]
+ coordinate: [496, 484.0]
rotation: 0
- state: true
+ state: enabled
- name: nfilts
id: variable
parameters:
@@ -72,9 +106,24 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [696, 356.0]
+ coordinate: [224, 988.0]
rotation: 0
- state: true
+ state: enabled
+- name: revconj_access_code_symbols
+ id: variable
+ parameters:
+ comment: ''
+ value: '[(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: [48, 564.0]
+ rotation: 0
+ state: enabled
- name: rrc_taps
id: variable
parameters:
@@ -84,9 +133,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [768, 356.0]
+ coordinate: [304, 988.0]
rotation: 0
- state: true
+ state: enabled
- name: samp_rate
id: variable
parameters:
@@ -96,7 +145,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [256, 52.0]
+ coordinate: [8, 116.0]
rotation: 0
state: enabled
- name: sps
@@ -108,9 +157,21 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [352, 52.0]
+ coordinate: [104, 116.0]
rotation: 0
- state: true
+ state: enabled
+- name: testvec
+ id: variable
+ parameters:
+ comment: ''
+ value: '[31, 53] + [0x12, 0xe3, 0x9b, 0xee, 0x84, 0x23, 0x41, 0xf3]'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [48, 492.0]
+ rotation: 0
+ state: enabled
- name: timing_loop_bw
id: variable
parameters:
@@ -120,11 +181,31 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [696, 420.0]
+ coordinate: [224, 1068.0]
rotation: 0
- state: true
-- name: blocks_complex_to_mag_0
- id: blocks_complex_to_mag
+ 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: ''
@@ -136,9 +217,93 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1584, 80.0]
+ coordinate: [752, 1624.0]
rotation: 0
- state: true
+ 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]
+ rotation: 0
+ state: enabled
+- name: blocks_complex_to_magphase_0_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, 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]
+ rotation: 0
+ state: enabled
+- name: blocks_multiply_const_vxx_0_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: [1336, 1180.0]
+ rotation: 0
+ state: disabled
- name: blocks_null_sink_0
id: blocks_null_sink
parameters:
@@ -153,9 +318,118 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1528, 216.0]
+ 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]
+ rotation: 0
+ state: disabled
+- name: blocks_null_sink_3
+ 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: [1336, 1232.0]
rotation: 0
state: true
+- name: blocks_null_source_0
+ id: blocks_null_source
+ parameters:
+ affinity: ''
+ alias: ''
+ bus_structure_source: '[[0,],]'
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ num_outputs: '1'
+ type: byte
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [96, 344.0]
+ rotation: 0
+ state: enabled
+- name: blocks_peak_detector2_fb_0
+ id: blocks_peak_detector2_fb
+ parameters:
+ affinity: ''
+ alias: ''
+ alpha: '0.001'
+ comment: ''
+ look_ahead: '1000'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ threshold_factor_rise: '7'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [528, 1620.0]
+ rotation: 0
+ state: disabled
+- name: blocks_stream_mux_0
+ id: blocks_stream_mux
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ lengths: '[10, len(testvec)]'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ num_inputs: '2'
+ type: byte
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [288, 392.0]
+ rotation: 0
+ state: enabled
+- name: blocks_stream_mux_1
+ id: blocks_stream_mux
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ lengths: '[len(access_code_symbols_sps), sps * (len(testvec) + 15)]'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ num_inputs: '2'
+ type: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [776, 280.0]
+ rotation: 0
+ state: disabled
- name: blocks_throttle_0
id: blocks_throttle
parameters:
@@ -166,15 +440,15 @@ blocks:
maxoutbuf: '0'
minoutbuf: '0'
samples_per_second: samp_rate
- type: byte
+ type: complex
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [248, 260.0]
+ coordinate: [1272, 404.0]
rotation: 0
- state: true
+ state: enabled
- name: blocks_vector_source_x_0
id: blocks_vector_source_x
parameters:
@@ -186,15 +460,56 @@ blocks:
repeat: 'False'
tags: '[]'
type: byte
- vector: ([0x00] * 10 + [0xaa, 0xff, 0x0a] + [0x00] * 10) * 20
+ vector: testvec * 1600
vlen: '1'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [16, 244.0]
+ coordinate: [48, 404.0]
rotation: 0
- state: true
+ state: enabled
+- name: blocks_vector_source_x_1
+ id: blocks_vector_source_x
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ repeat: 'True'
+ tags: '[]'
+ type: complex
+ vector: access_code_symbols_sps
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [224, 204.0]
+ rotation: 0
+ state: disabled
+- name: channels_channel_model_0
+ id: channels_channel_model
+ parameters:
+ affinity: ''
+ alias: ''
+ block_tags: 'False'
+ comment: ''
+ epsilon: '1.0'
+ freq_offset: '0.000001'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ noise_voltage: '0.2'
+ seed: '243'
+ taps: -1.4 + .4j
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [992, 364.0]
+ rotation: 0
+ state: enabled
- name: digital_cma_equalizer_cc_0
id: digital_cma_equalizer_cc
parameters:
@@ -211,7 +526,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [992, 188.0]
+ coordinate: [528, 812.0]
rotation: 0
state: enabled
- name: digital_constellation_decoder_cb_0
@@ -227,9 +542,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1264, 212.0]
+ coordinate: [1232, 1692.0]
rotation: 0
- state: true
+ state: disabled
- name: digital_constellation_modulator_0
id: digital_constellation_modulator
parameters:
@@ -249,9 +564,29 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [432, 236.0]
+ coordinate: [496, 380.0]
rotation: 0
- state: true
+ state: enabled
+- name: digital_corr_est_cc_0
+ id: digital_corr_est_cc
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ mark_delay: '0'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ sps: '1'
+ symbols: access_code_symbols
+ threshold: '.8'
+ threshold_method: digital.THRESHOLD_DYNAMIC
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [776, 1020.0]
+ rotation: 0
+ state: enabled
- name: digital_pfb_clock_sync_xxx_0
id: digital_pfb_clock_sync_xxx
parameters:
@@ -272,9 +607,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [696, 212.0]
+ coordinate: [224, 836.0]
rotation: 0
- state: true
+ state: enabled
- name: fir_filter_xxx_1
id: fir_filter_xxx
parameters:
@@ -285,19 +620,339 @@ blocks:
maxoutbuf: '0'
minoutbuf: '0'
samp_delay: '0'
- taps: '[(-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)]'
+ taps: revconj_access_code_symbols
type: ccc
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1328, 68.0]
+ coordinate: [776, 828.0]
+ rotation: 0
+ state: enabled
+- name: high_pass_filter_0
+ id: high_pass_filter
+ parameters:
+ 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:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [528, 1420.0]
+ rotation: 0
+ state: disabled
+- name: low_pass_filter_0
+ id: low_pass_filter
+ 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
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [528, 1252.0]
+ rotation: 0
+ state: disabled
+- 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: 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'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [776, 716.0]
+ rotation: 0
+ state: enabled
+- name: qtgui_const_sink_x_1
+ id: qtgui_const_sink_x
+ parameters:
+ affinity: ''
+ alias: ''
+ alpha1: '.5'
+ 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: '"red"'
+ color2: '"red"'
+ color3: '"red"'
+ color4: '"red"'
+ color5: '"red"'
+ color6: '"red"'
+ color7: '"red"'
+ color8: '"red"'
+ color9: '"red"'
+ comment: ''
+ grid: 'True'
+ gui_hint: 2,1,2,1
+ label1: ''
+ label10: ''
+ label2: ''
+ label3: ''
+ label4: ''
+ label5: ''
+ label6: ''
+ label7: ''
+ label8: ''
+ label9: ''
+ legend: 'True'
+ marker1: '9'
+ marker10: '0'
+ marker2: '0'
+ marker3: '0'
+ marker4: '0'
+ marker5: '0'
+ marker6: '0'
+ marker7: '0'
+ marker8: '0'
+ marker9: '0'
+ name: '"Cross Correlation"'
+ nconnections: '1'
+ size: '1024'
+ style1: '2'
+ 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: [1048, 612.0]
rotation: 0
state: enabled
+- name: qtgui_const_sink_x_2
+ 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: '2,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: '"Phase Correction"'
+ nconnections: '1'
+ size: '1024'
+ style1: '0'
+ style10: '0'
+ style2: '0'
+ style3: '0'
+ style4: '0'
+ style5: '0'
+ style6: '0'
+ style7: '0'
+ style8: '0'
+ style9: '0'
+ tr_chan: '0'
+ tr_level: '0.0'
+ tr_mode: qtgui.TRIG_MODE_FREE
+ tr_slope: qtgui.TRIG_SLOPE_POS
+ tr_tag: '""'
+ type: complex
+ update_time: '0.10'
+ width1: '1'
+ width10: '1'
+ width2: '1'
+ width3: '1'
+ width4: '1'
+ width5: '1'
+ width6: '1'
+ width7: '1'
+ width8: '1'
+ width9: '1'
+ xmax: '2'
+ xmin: '-2'
+ ymax: '2'
+ ymin: '-2'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1248, 1588.0]
+ rotation: 0
+ state: disabled
- name: qtgui_time_sink_x_0
id: qtgui_time_sink_x
parameters:
@@ -313,7 +968,7 @@ blocks:
alpha7: '1.0'
alpha8: '1.0'
alpha9: '1.0'
- autoscale: 'False'
+ autoscale: 'True'
axislabels: 'True'
color1: blue
color10: dark blue
@@ -326,7 +981,104 @@ blocks:
color8: dark red
color9: dark green
comment: ''
- ctrlpanel: 'True'
+ 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]
+ rotation: 0
+ state: enabled
+- name: qtgui_time_sink_x_0_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: ''
@@ -384,17 +1136,114 @@ blocks:
width7: '1'
width8: '1'
width9: '1'
- ylabel: Amplitude
- ymax: '50'
+ ylabel: XC Magnitude
+ ymax: '20'
ymin: '0'
yunit: '""'
states:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1792, 60.0]
+ coordinate: [1336, 1084.0]
rotation: 0
- state: true
+ state: enabled
+- name: qtgui_time_sink_x_0_0_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: ''
+ 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: 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'
+ ylabel: XC Magnitude
+ ymax: '2'
+ ymin: '-2'
+ yunit: '""'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1048, 1020.0]
+ rotation: 0
+ state: enabled
- name: qtgui_time_sink_x_1
id: qtgui_time_sink_x
parameters:
@@ -423,7 +1272,7 @@ blocks:
color8: dark red
color9: dark green
comment: ''
- ctrlpanel: 'True'
+ ctrlpanel: 'False'
entags: 'True'
grid: 'False'
gui_hint: ''
@@ -469,7 +1318,7 @@ blocks:
tr_mode: qtgui.TRIG_MODE_FREE
tr_slope: qtgui.TRIG_SLOPE_POS
tr_tag: '""'
- type: complex
+ type: float
update_time: '0.10'
width1: '1'
width10: '1'
@@ -482,6 +1331,200 @@ blocks:
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:
+ 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: 0,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: 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'
+ ylabel: Modulated
+ ymax: '2'
+ ymin: '-2'
+ yunit: '""'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [808, 452.0]
+ rotation: 0
+ state: enabled
+- name: qtgui_time_sink_x_1_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: '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: 'True'
+ gui_hint: 1,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: 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'
+ ylabel: Equalized
ymax: '2'
ymin: '-2'
yunit: '""'
@@ -489,21 +1532,347 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [696, 108.0]
+ 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]
+ rotation: 0
+ state: enabled
+- name: qtgui_time_sink_x_2_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: ''
+ 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: [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]
+ rotation: 0
+ state: disabled
+- name: virtual_sink_0
+ id: virtual_sink
+ parameters:
+ alias: ''
+ comment: ''
+ stream_id: envelope
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1480, 404.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
+ id: virtual_sink
+ parameters:
+ alias: ''
+ comment: ''
+ stream_id: xcorrelation
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1080, 836.0]
+ rotation: 0
+ state: true
+- name: virtual_source_0
+ id: virtual_source
+ parameters:
+ alias: ''
+ comment: ''
+ stream_id: envelope
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [32, 884.0]
+ rotation: 0
+ state: enabled
+- name: virtual_source_2
+ id: virtual_source
+ parameters:
+ alias: ''
+ comment: ''
+ stream_id: symbols
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [32, 1716.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
connections:
-- [blocks_complex_to_mag_0, '0', qtgui_time_sink_x_0, '0']
-- [blocks_throttle_0, '0', digital_constellation_modulator_0, '0']
-- [blocks_vector_source_x_0, '0', blocks_throttle_0, '0']
-- [digital_cma_equalizer_cc_0, '0', digital_constellation_decoder_cb_0, '0']
+- [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_stream_mux_0, '0', digital_constellation_modulator_0, '0']
+- [blocks_stream_mux_1, '0', channels_channel_model_0, '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', digital_pfb_clock_sync_xxx_0, '0']
-- [digital_constellation_modulator_0, '0', qtgui_time_sink_x_1, '0']
+- [digital_constellation_modulator_0, '0', blocks_stream_mux_1, '1']
+- [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', qtgui_time_sink_x_0_0_0, '0']
+- [digital_corr_est_cc_0, '1', blocks_complex_to_magphase_0_0, '0']
- [digital_pfb_clock_sync_xxx_0, '0', digital_cma_equalizer_cc_0, '0']
-- [fir_filter_xxx_1, '0', blocks_complex_to_mag_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']
+- [virtual_source_0, '0', digital_pfb_clock_sync_xxx_0, '0']
+- [virtual_source_3, '0', blocks_complex_to_magphase_0_1, '0']
metadata:
file_format: 1
diff --git a/tests/correlator/correlator.py b/tests/correlator/correlator.py
index 79fa3f8..376d061 100755
--- a/tests/correlator/correlator.py
+++ b/tests/correlator/correlator.py
@@ -26,6 +26,7 @@ from gnuradio import qtgui
from gnuradio.filter import firdes
import sip
from gnuradio import blocks
+from gnuradio import channels
from gnuradio import digital
from gnuradio import filter
from gnuradio import gr
@@ -80,32 +81,143 @@ class correlator(gr.top_block, Qt.QWidget):
self.nfilts = nfilts = 32
self.excess_bw = excess_bw = .35
self.timing_loop_bw = timing_loop_bw = 2 * 3.141592653589793 / 100
+ self.testvec = testvec = [31, 53] + [0x12, 0xe3, 0x9b, 0xee, 0x84, 0x23, 0x41, 0xf3]
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.revconj_access_code_symbols = revconj_access_code_symbols = [(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)]
self.const = const = digital.constellation_qpsk().base()
+ self.access_code_symbols_sps = access_code_symbols_sps = [(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)]
+ self.access_code_symbols = access_code_symbols = [(-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)]
##################################################
# Blocks
##################################################
- self.qtgui_time_sink_x_1 = qtgui.time_sink_c(
+ self.qtgui_time_sink_x_2 = qtgui.time_sink_f(
1024, #size
samp_rate, #samp_rate
"", #name
1, #number of inputs
None # parent
)
- self.qtgui_time_sink_x_1.set_update_time(0.10)
- self.qtgui_time_sink_x_1.set_y_axis(-2, 2)
+ self.qtgui_time_sink_x_2.set_update_time(0.10)
+ self.qtgui_time_sink_x_2.set_y_axis(-1, 1)
- self.qtgui_time_sink_x_1.set_y_label('Amplitude', "")
+ self.qtgui_time_sink_x_2.set_y_label('XC Phase', "")
- self.qtgui_time_sink_x_1.enable_tags(True)
- self.qtgui_time_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
- self.qtgui_time_sink_x_1.enable_autoscale(False)
- self.qtgui_time_sink_x_1.enable_grid(False)
- self.qtgui_time_sink_x_1.enable_axis_labels(True)
- self.qtgui_time_sink_x_1.enable_control_panel(True)
- self.qtgui_time_sink_x_1.enable_stem_plot(False)
+ self.qtgui_time_sink_x_2.enable_tags(True)
+ self.qtgui_time_sink_x_2.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
+ self.qtgui_time_sink_x_2.enable_autoscale(True)
+ self.qtgui_time_sink_x_2.enable_grid(False)
+ self.qtgui_time_sink_x_2.enable_axis_labels(True)
+ self.qtgui_time_sink_x_2.enable_control_panel(False)
+ self.qtgui_time_sink_x_2.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(1):
+ if len(labels[i]) == 0:
+ self.qtgui_time_sink_x_2.set_line_label(i, "Data {0}".format(i))
+ else:
+ self.qtgui_time_sink_x_2.set_line_label(i, labels[i])
+ self.qtgui_time_sink_x_2.set_line_width(i, widths[i])
+ self.qtgui_time_sink_x_2.set_line_color(i, colors[i])
+ self.qtgui_time_sink_x_2.set_line_style(i, styles[i])
+ self.qtgui_time_sink_x_2.set_line_marker(i, markers[i])
+ self.qtgui_time_sink_x_2.set_line_alpha(i, alphas[i])
+
+ self._qtgui_time_sink_x_2_win = sip.wrapinstance(self.qtgui_time_sink_x_2.pyqwidget(), Qt.QWidget)
+ self.top_grid_layout.addWidget(self._qtgui_time_sink_x_2_win, 3, 0, 1, 1)
+ for r in range(3, 4):
+ self.top_grid_layout.setRowStretch(r, 1)
+ for c in range(0, 1):
+ self.top_grid_layout.setColumnStretch(c, 1)
+ self.qtgui_time_sink_x_1_1 = qtgui.time_sink_c(
+ 1024, #size
+ samp_rate, #samp_rate
+ "", #name
+ 1, #number of inputs
+ None # parent
+ )
+ self.qtgui_time_sink_x_1_1.set_update_time(0.10)
+ self.qtgui_time_sink_x_1_1.set_y_axis(-2, 2)
+
+ self.qtgui_time_sink_x_1_1.set_y_label('Equalized', "")
+
+ self.qtgui_time_sink_x_1_1.enable_tags(True)
+ self.qtgui_time_sink_x_1_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
+ self.qtgui_time_sink_x_1_1.enable_autoscale(True)
+ self.qtgui_time_sink_x_1_1.enable_grid(True)
+ self.qtgui_time_sink_x_1_1.enable_axis_labels(True)
+ self.qtgui_time_sink_x_1_1.enable_control_panel(False)
+ self.qtgui_time_sink_x_1_1.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_1_1.set_line_label(i, "Re{{Data {0}}}".format(i/2))
+ else:
+ self.qtgui_time_sink_x_1_1.set_line_label(i, "Im{{Data {0}}}".format(i/2))
+ else:
+ self.qtgui_time_sink_x_1_1.set_line_label(i, labels[i])
+ self.qtgui_time_sink_x_1_1.set_line_width(i, widths[i])
+ self.qtgui_time_sink_x_1_1.set_line_color(i, colors[i])
+ self.qtgui_time_sink_x_1_1.set_line_style(i, styles[i])
+ self.qtgui_time_sink_x_1_1.set_line_marker(i, markers[i])
+ self.qtgui_time_sink_x_1_1.set_line_alpha(i, alphas[i])
+
+ self._qtgui_time_sink_x_1_1_win = sip.wrapinstance(self.qtgui_time_sink_x_1_1.pyqwidget(), Qt.QWidget)
+ self.top_grid_layout.addWidget(self._qtgui_time_sink_x_1_1_win, 1, 0, 1, 1)
+ for r in range(1, 2):
+ self.top_grid_layout.setRowStretch(r, 1)
+ for c in range(0, 1):
+ self.top_grid_layout.setColumnStretch(c, 1)
+ self.qtgui_time_sink_x_1_0 = qtgui.time_sink_c(
+ 1024, #size
+ samp_rate, #samp_rate
+ "", #name
+ 1, #number of inputs
+ None # parent
+ )
+ self.qtgui_time_sink_x_1_0.set_update_time(0.10)
+ self.qtgui_time_sink_x_1_0.set_y_axis(-2, 2)
+
+ self.qtgui_time_sink_x_1_0.set_y_label('Modulated', "")
+
+ self.qtgui_time_sink_x_1_0.enable_tags(True)
+ self.qtgui_time_sink_x_1_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
+ self.qtgui_time_sink_x_1_0.enable_autoscale(True)
+ self.qtgui_time_sink_x_1_0.enable_grid(False)
+ self.qtgui_time_sink_x_1_0.enable_axis_labels(True)
+ self.qtgui_time_sink_x_1_0.enable_control_panel(False)
+ self.qtgui_time_sink_x_1_0.enable_stem_plot(False)
labels = ['Signal 1', 'Signal 2', 'Signal 3', 'Signal 4', 'Signal 5',
@@ -125,19 +237,122 @@ class correlator(gr.top_block, Qt.QWidget):
for i in range(2):
if len(labels[i]) == 0:
if (i % 2 == 0):
- self.qtgui_time_sink_x_1.set_line_label(i, "Re{{Data {0}}}".format(i/2))
+ self.qtgui_time_sink_x_1_0.set_line_label(i, "Re{{Data {0}}}".format(i/2))
else:
- self.qtgui_time_sink_x_1.set_line_label(i, "Im{{Data {0}}}".format(i/2))
+ self.qtgui_time_sink_x_1_0.set_line_label(i, "Im{{Data {0}}}".format(i/2))
else:
- self.qtgui_time_sink_x_1.set_line_label(i, labels[i])
- self.qtgui_time_sink_x_1.set_line_width(i, widths[i])
- self.qtgui_time_sink_x_1.set_line_color(i, colors[i])
- self.qtgui_time_sink_x_1.set_line_style(i, styles[i])
- self.qtgui_time_sink_x_1.set_line_marker(i, markers[i])
- self.qtgui_time_sink_x_1.set_line_alpha(i, alphas[i])
-
- self._qtgui_time_sink_x_1_win = sip.wrapinstance(self.qtgui_time_sink_x_1.pyqwidget(), Qt.QWidget)
- self.top_layout.addWidget(self._qtgui_time_sink_x_1_win)
+ self.qtgui_time_sink_x_1_0.set_line_label(i, labels[i])
+ self.qtgui_time_sink_x_1_0.set_line_width(i, widths[i])
+ self.qtgui_time_sink_x_1_0.set_line_color(i, colors[i])
+ self.qtgui_time_sink_x_1_0.set_line_style(i, styles[i])
+ self.qtgui_time_sink_x_1_0.set_line_marker(i, markers[i])
+ self.qtgui_time_sink_x_1_0.set_line_alpha(i, alphas[i])
+
+ self._qtgui_time_sink_x_1_0_win = sip.wrapinstance(self.qtgui_time_sink_x_1_0.pyqwidget(), Qt.QWidget)
+ self.top_grid_layout.addWidget(self._qtgui_time_sink_x_1_0_win, 0, 0, 1, 1)
+ for r in range(0, 1):
+ self.top_grid_layout.setRowStretch(r, 1)
+ for c in range(0, 1):
+ self.top_grid_layout.setColumnStretch(c, 1)
+ self.qtgui_time_sink_x_0_0_0 = qtgui.time_sink_c(
+ 1024, #size
+ samp_rate, #samp_rate
+ "", #name
+ 1, #number of inputs
+ None # parent
+ )
+ self.qtgui_time_sink_x_0_0_0.set_update_time(0.10)
+ self.qtgui_time_sink_x_0_0_0.set_y_axis(-2, 2)
+
+ self.qtgui_time_sink_x_0_0_0.set_y_label('XC Magnitude', "")
+
+ self.qtgui_time_sink_x_0_0_0.enable_tags(True)
+ self.qtgui_time_sink_x_0_0_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
+ self.qtgui_time_sink_x_0_0_0.enable_autoscale(True)
+ self.qtgui_time_sink_x_0_0_0.enable_grid(False)
+ self.qtgui_time_sink_x_0_0_0.enable_axis_labels(True)
+ self.qtgui_time_sink_x_0_0_0.enable_control_panel(False)
+ self.qtgui_time_sink_x_0_0_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_0_0.set_line_label(i, "Re{{Data {0}}}".format(i/2))
+ else:
+ self.qtgui_time_sink_x_0_0_0.set_line_label(i, "Im{{Data {0}}}".format(i/2))
+ else:
+ self.qtgui_time_sink_x_0_0_0.set_line_label(i, labels[i])
+ self.qtgui_time_sink_x_0_0_0.set_line_width(i, widths[i])
+ self.qtgui_time_sink_x_0_0_0.set_line_color(i, colors[i])
+ self.qtgui_time_sink_x_0_0_0.set_line_style(i, styles[i])
+ self.qtgui_time_sink_x_0_0_0.set_line_marker(i, markers[i])
+ self.qtgui_time_sink_x_0_0_0.set_line_alpha(i, alphas[i])
+
+ self._qtgui_time_sink_x_0_0_0_win = sip.wrapinstance(self.qtgui_time_sink_x_0_0_0.pyqwidget(), Qt.QWidget)
+ self.top_layout.addWidget(self._qtgui_time_sink_x_0_0_0_win)
+ self.qtgui_time_sink_x_0_0 = qtgui.time_sink_f(
+ 1024, #size
+ samp_rate, #samp_rate
+ "", #name
+ 1, #number of inputs
+ None # parent
+ )
+ self.qtgui_time_sink_x_0_0.set_update_time(0.10)
+ self.qtgui_time_sink_x_0_0.set_y_axis(0, 20)
+
+ self.qtgui_time_sink_x_0_0.set_y_label('XC Magnitude', "")
+
+ self.qtgui_time_sink_x_0_0.enable_tags(True)
+ self.qtgui_time_sink_x_0_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "")
+ self.qtgui_time_sink_x_0_0.enable_autoscale(True)
+ self.qtgui_time_sink_x_0_0.enable_grid(False)
+ self.qtgui_time_sink_x_0_0.enable_axis_labels(True)
+ self.qtgui_time_sink_x_0_0.enable_control_panel(False)
+ self.qtgui_time_sink_x_0_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(1):
+ if len(labels[i]) == 0:
+ self.qtgui_time_sink_x_0_0.set_line_label(i, "Data {0}".format(i))
+ else:
+ self.qtgui_time_sink_x_0_0.set_line_label(i, labels[i])
+ self.qtgui_time_sink_x_0_0.set_line_width(i, widths[i])
+ self.qtgui_time_sink_x_0_0.set_line_color(i, colors[i])
+ self.qtgui_time_sink_x_0_0.set_line_style(i, styles[i])
+ self.qtgui_time_sink_x_0_0.set_line_marker(i, markers[i])
+ self.qtgui_time_sink_x_0_0.set_line_alpha(i, alphas[i])
+
+ self._qtgui_time_sink_x_0_0_win = sip.wrapinstance(self.qtgui_time_sink_x_0_0.pyqwidget(), Qt.QWidget)
+ self.top_layout.addWidget(self._qtgui_time_sink_x_0_0_win)
self.qtgui_time_sink_x_0 = qtgui.time_sink_f(
1024, #size
samp_rate, #samp_rate
@@ -146,16 +361,16 @@ class correlator(gr.top_block, Qt.QWidget):
None # parent
)
self.qtgui_time_sink_x_0.set_update_time(0.10)
- self.qtgui_time_sink_x_0.set_y_axis(0, 50)
+ self.qtgui_time_sink_x_0.set_y_axis(0, 20)
- self.qtgui_time_sink_x_0.set_y_label('Amplitude', "")
+ self.qtgui_time_sink_x_0.set_y_label('XC Magnitude', "")
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_autoscale(True)
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_control_panel(False)
self.qtgui_time_sink_x_0.enable_stem_plot(False)
@@ -185,10 +400,105 @@ class correlator(gr.top_block, Qt.QWidget):
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_layout.addWidget(self._qtgui_time_sink_x_0_win)
- self.fir_filter_xxx_1 = filter.fir_filter_ccc(1, [(-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)])
+ self.top_grid_layout.addWidget(self._qtgui_time_sink_x_0_win, 2, 0, 1, 1)
+ for r in range(2, 3):
+ self.top_grid_layout.setRowStretch(r, 1)
+ for c in range(0, 1):
+ self.top_grid_layout.setColumnStretch(c, 1)
+ self.qtgui_const_sink_x_1 = qtgui.const_sink_c(
+ 1024, #size
+ "Cross Correlation", #name
+ 1, #number of inputs
+ None # parent
+ )
+ self.qtgui_const_sink_x_1.set_update_time(0.10)
+ self.qtgui_const_sink_x_1.set_y_axis(-2, 2)
+ self.qtgui_const_sink_x_1.set_x_axis(-2, 2)
+ self.qtgui_const_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, "")
+ self.qtgui_const_sink_x_1.enable_autoscale(True)
+ self.qtgui_const_sink_x_1.enable_grid(True)
+ self.qtgui_const_sink_x_1.enable_axis_labels(True)
+
+
+ labels = ['', '', '', '', '',
+ '', '', '', '', '']
+ widths = [1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1]
+ colors = ["blue", "red", "red", "red", "red",
+ "red", "red", "red", "red", "red"]
+ styles = [2, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0]
+ markers = [9, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0]
+ alphas = [.5, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 1.0, 1.0, 1.0]
+
+ for i in range(1):
+ if len(labels[i]) == 0:
+ self.qtgui_const_sink_x_1.set_line_label(i, "Data {0}".format(i))
+ else:
+ self.qtgui_const_sink_x_1.set_line_label(i, labels[i])
+ self.qtgui_const_sink_x_1.set_line_width(i, widths[i])
+ self.qtgui_const_sink_x_1.set_line_color(i, colors[i])
+ self.qtgui_const_sink_x_1.set_line_style(i, styles[i])
+ self.qtgui_const_sink_x_1.set_line_marker(i, markers[i])
+ self.qtgui_const_sink_x_1.set_line_alpha(i, alphas[i])
+
+ self._qtgui_const_sink_x_1_win = sip.wrapinstance(self.qtgui_const_sink_x_1.pyqwidget(), Qt.QWidget)
+ self.top_grid_layout.addWidget(self._qtgui_const_sink_x_1_win, 2, 1, 2, 1)
+ for r in range(2, 4):
+ self.top_grid_layout.setRowStretch(r, 1)
+ for c in range(1, 2):
+ self.top_grid_layout.setColumnStretch(c, 1)
+ self.qtgui_const_sink_x_0 = qtgui.const_sink_c(
+ 1024, #size
+ "Equalized Signal", #name
+ 1, #number of inputs
+ None # parent
+ )
+ self.qtgui_const_sink_x_0.set_update_time(0.10)
+ self.qtgui_const_sink_x_0.set_y_axis(-2, 2)
+ self.qtgui_const_sink_x_0.set_x_axis(-2, 2)
+ self.qtgui_const_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, "")
+ self.qtgui_const_sink_x_0.enable_autoscale(False)
+ self.qtgui_const_sink_x_0.enable_grid(False)
+ self.qtgui_const_sink_x_0.enable_axis_labels(True)
+
+
+ labels = ['', '', '', '', '',
+ '', '', '', '', '']
+ widths = [1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1]
+ colors = ["blue", "red", "red", "red", "red",
+ "red", "red", "red", "red", "red"]
+ styles = [0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0]
+ markers = [0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0]
+ alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
+ 1.0, 1.0, 1.0, 1.0, 1.0]
+
+ for i in range(1):
+ if len(labels[i]) == 0:
+ self.qtgui_const_sink_x_0.set_line_label(i, "Data {0}".format(i))
+ else:
+ self.qtgui_const_sink_x_0.set_line_label(i, labels[i])
+ self.qtgui_const_sink_x_0.set_line_width(i, widths[i])
+ self.qtgui_const_sink_x_0.set_line_color(i, colors[i])
+ self.qtgui_const_sink_x_0.set_line_style(i, styles[i])
+ self.qtgui_const_sink_x_0.set_line_marker(i, markers[i])
+ self.qtgui_const_sink_x_0.set_line_alpha(i, alphas[i])
+
+ self._qtgui_const_sink_x_0_win = sip.wrapinstance(self.qtgui_const_sink_x_0.pyqwidget(), Qt.QWidget)
+ self.top_grid_layout.addWidget(self._qtgui_const_sink_x_0_win, 0, 1, 2, 1)
+ for r in range(0, 2):
+ self.top_grid_layout.setRowStretch(r, 1)
+ for c in range(1, 2):
+ self.top_grid_layout.setColumnStretch(c, 1)
+ self.fir_filter_xxx_1 = filter.fir_filter_ccc(1, revconj_access_code_symbols)
self.fir_filter_xxx_1.declare_sample_delay(0)
self.digital_pfb_clock_sync_xxx_0 = digital.pfb_clock_sync_ccf(sps, timing_loop_bw, rrc_taps, nfilts, 16, 1.5, 1)
+ self.digital_corr_est_cc_0 = digital.corr_est_cc(access_code_symbols, 1, 0, .8, digital.THRESHOLD_DYNAMIC)
self.digital_constellation_modulator_0 = digital.generic_mod(
constellation=const,
differential=False,
@@ -198,28 +508,49 @@ class correlator(gr.top_block, Qt.QWidget):
verbose=False,
log=False,
truncate=False)
- self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(const)
self.digital_cma_equalizer_cc_0 = digital.cma_equalizer_cc(15, 1, .002, 1)
- self.blocks_vector_source_x_0 = blocks.vector_source_b(([0x00] * 10 + [0xaa, 0xff, 0x0a] + [0x00] * 10) * 20, False, 1, [])
- self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, samp_rate,True)
- self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_char*1)
- self.blocks_complex_to_mag_0 = blocks.complex_to_mag(1)
+ self.channels_channel_model_0 = channels.channel_model(
+ noise_voltage=0.2,
+ frequency_offset=0.000001,
+ epsilon=1.0,
+ taps=[-1.4 + .4j],
+ noise_seed=243,
+ block_tags=False)
+ self.blocks_vector_source_x_0 = blocks.vector_source_b(testvec * 1600, False, 1, [])
+ self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate,True)
+ self.blocks_stream_mux_0 = blocks.stream_mux(gr.sizeof_char*1, [10, len(testvec)])
+ self.blocks_null_source_0 = blocks.null_source(gr.sizeof_char*1)
+ self.blocks_null_sink_3 = blocks.null_sink(gr.sizeof_float*1)
+ self.blocks_multiply_const_vxx_0 = blocks.multiply_const_ff(180 / 3.141592653589793)
+ self.blocks_complex_to_magphase_0_0 = blocks.complex_to_magphase(1)
+ self.blocks_complex_to_magphase_0 = blocks.complex_to_magphase(1)
##################################################
# Connections
##################################################
- self.connect((self.blocks_complex_to_mag_0, 0), (self.qtgui_time_sink_x_0, 0))
- self.connect((self.blocks_throttle_0, 0), (self.digital_constellation_modulator_0, 0))
- self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_throttle_0, 0))
- self.connect((self.digital_cma_equalizer_cc_0, 0), (self.digital_constellation_decoder_cb_0, 0))
+ self.connect((self.blocks_complex_to_magphase_0, 1), (self.blocks_multiply_const_vxx_0, 0))
+ self.connect((self.blocks_complex_to_magphase_0, 0), (self.qtgui_time_sink_x_0, 0))
+ self.connect((self.blocks_complex_to_magphase_0_0, 1), (self.blocks_null_sink_3, 0))
+ self.connect((self.blocks_complex_to_magphase_0_0, 0), (self.qtgui_time_sink_x_0_0, 0))
+ self.connect((self.blocks_multiply_const_vxx_0, 0), (self.qtgui_time_sink_x_2, 0))
+ self.connect((self.blocks_null_source_0, 0), (self.blocks_stream_mux_0, 0))
+ self.connect((self.blocks_stream_mux_0, 0), (self.digital_constellation_modulator_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.blocks_stream_mux_0, 1))
+ self.connect((self.channels_channel_model_0, 0), (self.blocks_throttle_0, 0))
+ self.connect((self.digital_cma_equalizer_cc_0, 0), (self.digital_corr_est_cc_0, 0))
self.connect((self.digital_cma_equalizer_cc_0, 0), (self.fir_filter_xxx_1, 0))
- self.connect((self.digital_constellation_decoder_cb_0, 0), (self.blocks_null_sink_0, 0))
- self.connect((self.digital_constellation_modulator_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0))
- self.connect((self.digital_constellation_modulator_0, 0), (self.qtgui_time_sink_x_1, 0))
+ self.connect((self.digital_cma_equalizer_cc_0, 0), (self.qtgui_const_sink_x_0, 0))
+ self.connect((self.digital_cma_equalizer_cc_0, 0), (self.qtgui_time_sink_x_1_1, 0))
+ self.connect((self.digital_constellation_modulator_0, 0), (self.channels_channel_model_0, 0))
+ self.connect((self.digital_constellation_modulator_0, 0), (self.qtgui_time_sink_x_1_0, 0))
+ self.connect((self.digital_corr_est_cc_0, 1), (self.blocks_complex_to_magphase_0_0, 0))
+ self.connect((self.digital_corr_est_cc_0, 0), (self.qtgui_time_sink_x_0_0_0, 0))
self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.digital_cma_equalizer_cc_0, 0))
- self.connect((self.fir_filter_xxx_1, 0), (self.blocks_complex_to_mag_0, 0))
+ self.connect((self.fir_filter_xxx_1, 0), (self.blocks_complex_to_magphase_0, 0))
+ self.connect((self.fir_filter_xxx_1, 0), (self.qtgui_const_sink_x_1, 0))
def closeEvent(self, event):
@@ -258,6 +589,13 @@ class correlator(gr.top_block, Qt.QWidget):
self.timing_loop_bw = timing_loop_bw
self.digital_pfb_clock_sync_xxx_0.set_loop_bandwidth(self.timing_loop_bw)
+ def get_testvec(self):
+ return self.testvec
+
+ def set_testvec(self, testvec):
+ self.testvec = testvec
+ self.blocks_vector_source_x_0.set_data(self.testvec * 1600, [])
+
def get_samp_rate(self):
return self.samp_rate
@@ -265,7 +603,11 @@ class correlator(gr.top_block, Qt.QWidget):
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)
- self.qtgui_time_sink_x_1.set_samp_rate(self.samp_rate)
+ self.qtgui_time_sink_x_0_0.set_samp_rate(self.samp_rate)
+ self.qtgui_time_sink_x_0_0_0.set_samp_rate(self.samp_rate)
+ self.qtgui_time_sink_x_1_0.set_samp_rate(self.samp_rate)
+ self.qtgui_time_sink_x_1_1.set_samp_rate(self.samp_rate)
+ self.qtgui_time_sink_x_2.set_samp_rate(self.samp_rate)
def get_rrc_taps(self):
return self.rrc_taps
@@ -274,12 +616,31 @@ class correlator(gr.top_block, Qt.QWidget):
self.rrc_taps = rrc_taps
self.digital_pfb_clock_sync_xxx_0.update_taps(self.rrc_taps)
+ def get_revconj_access_code_symbols(self):
+ return self.revconj_access_code_symbols
+
+ def set_revconj_access_code_symbols(self, revconj_access_code_symbols):
+ self.revconj_access_code_symbols = revconj_access_code_symbols
+ self.fir_filter_xxx_1.set_taps(self.revconj_access_code_symbols)
+
def get_const(self):
return self.const
def set_const(self, const):
self.const = const
+ def get_access_code_symbols_sps(self):
+ return self.access_code_symbols_sps
+
+ def set_access_code_symbols_sps(self, access_code_symbols_sps):
+ self.access_code_symbols_sps = access_code_symbols_sps
+
+ def get_access_code_symbols(self):
+ return self.access_code_symbols
+
+ def set_access_code_symbols(self, access_code_symbols):
+ self.access_code_symbols = access_code_symbols
+