aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flowgraphs/qpsk_sim.grc106
-rwxr-xr-xflowgraphs/qpsk_sim.py12
2 files changed, 95 insertions, 23 deletions
diff --git a/flowgraphs/qpsk_sim.grc b/flowgraphs/qpsk_sim.grc
index 7be9ec8..db8f2be 100644
--- a/flowgraphs/qpsk_sim.grc
+++ b/flowgraphs/qpsk_sim.grc
@@ -76,8 +76,8 @@ blocks:
parameters:
alias: ''
comment: ''
- payload_len: '4096'
- preamble: '[0xbe, 0xef]'
+ payload_len: '16'
+ preamble: '[0x1f, 0x35]'
states:
bus_sink: false
bus_source: false
@@ -96,7 +96,19 @@ blocks:
bus_structure: null
coordinate: [184, 252.0]
rotation: 0
- state: true
+ state: enabled
+- name: frame_len
+ id: variable
+ parameters:
+ comment: ''
+ value: 2 + 4 + 16
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [208, 604.0]
+ rotation: 0
+ state: disabled
- name: nfilts
id: variable
parameters:
@@ -174,7 +186,7 @@ blocks:
bus_structure: null
coordinate: [48, 252.0]
rotation: 0
- state: true
+ state: enabled
- name: analog_random_source_x_0
id: analog_random_source_x
parameters:
@@ -194,7 +206,24 @@ blocks:
bus_structure: null
coordinate: [48, 420.0]
rotation: 0
- state: true
+ state: enabled
+- name: analog_simple_squelch_cc_0
+ id: analog_simple_squelch_cc
+ parameters:
+ affinity: ''
+ alias: ''
+ alpha: ''
+ comment: ''
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ threshold: ''
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [1000, 692.0]
+ rotation: 0
+ state: disabled
- name: blocks_complex_to_mag_0
id: blocks_complex_to_mag
parameters:
@@ -211,6 +240,25 @@ blocks:
coordinate: [1064, 1080.0]
rotation: 0
state: enabled
+- 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: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [744, 344.0]
+ rotation: 0
+ state: disabled
- name: blocks_repack_bits_bb_0
id: blocks_repack_bits_bb
parameters:
@@ -247,9 +295,28 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [272, 416.0]
+ coordinate: [240, 416.0]
rotation: 0
- state: true
+ state: enabled
+- name: blocks_stream_mux_1
+ id: blocks_stream_mux
+ parameters:
+ affinity: ''
+ alias: ''
+ comment: ''
+ lengths: '[]'
+ maxoutbuf: '0'
+ minoutbuf: '0'
+ num_inputs: '2'
+ type: complex
+ vlen: '1'
+ states:
+ bus_sink: false
+ bus_source: false
+ bus_structure: null
+ coordinate: [928, 344.0]
+ rotation: 0
+ state: disabled
- name: blocks_stream_to_vector_0
id: blocks_stream_to_vector
parameters:
@@ -324,7 +391,7 @@ blocks:
bus_structure: null
coordinate: [48, 324.0]
rotation: 0
- state: true
+ state: enabled
- name: channels_channel_model_0
id: channels_channel_model
parameters:
@@ -356,7 +423,7 @@ blocks:
alias: ''
comment: ''
delays: (0,1.8)
- fDTs: ((4*carrier_freq)/(3*10e8))/samp_rate
+ fDTs: ((2*carrier_freq)/(3*10e8))/samp_rate
mags: (1,0.12)
maxoutbuf: '0'
minoutbuf: '0'
@@ -368,7 +435,7 @@ blocks:
bus_structure: null
coordinate: [600, 572.0]
rotation: 0
- state: disabled
+ state: enabled
- name: digital_cma_equalizer_cc_0
id: digital_cma_equalizer_cc
parameters:
@@ -475,7 +542,7 @@ blocks:
affinity: ''
alias: ''
comment: ''
- vgl: testvec + list(np.zeros(4))
+ vgl: list(np.zeros(frame_len))
vlen: frame_len
states:
bus_sink: false
@@ -490,8 +557,8 @@ blocks:
affinity: ''
alias: ''
comment: ''
- fname: ''
- frame_obj: ''
+ fname: ./lena512color.png
+ frame_obj: frame
maxoutbuf: '0'
minoutbuf: '0'
states:
@@ -518,7 +585,7 @@ blocks:
bus_structure: null
coordinate: [648, 740.0]
rotation: 0
- state: enabled
+ state: disabled
- name: fadingui_netsink_0
id: fadingui_netsink
parameters:
@@ -717,7 +784,7 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [1240, 828.0]
+ coordinate: [552, 852.0]
rotation: 0
state: disabled
- name: qtgui_time_sink_x_0
@@ -827,9 +894,9 @@ blocks:
bus_sink: false
bus_source: false
bus_structure: null
- coordinate: [928, 428.0]
+ coordinate: [1104, 428.0]
rotation: 0
- state: true
+ state: enabled
- name: virtual_sink_1
id: virtual_sink
parameters:
@@ -900,10 +967,13 @@ connections:
- [analog_random_source_x_0, '0', blocks_stream_mux_0, '1']
- [blocks_complex_to_mag_0, '0', fadingui_netsink_0_0, '0']
- [blocks_complex_to_mag_0, '0', qtgui_time_sink_x_0, '0']
+- [blocks_null_source_0, '0', blocks_stream_mux_1, '0']
- [blocks_repack_bits_bb_0, '0', blocks_stream_to_vector_0, '0']
- [blocks_stream_mux_0, '0', digital_constellation_modulator_0, '0']
+- [blocks_stream_mux_1, '0', virtual_sink_0, '0']
- [blocks_stream_to_vector_0, '0', fadingui_ber_0, '0']
- [blocks_tagged_stream_align_0, '0', blocks_repack_bits_bb_0, '0']
+- [blocks_throttle_0, '0', blocks_stream_mux_1, '1']
- [blocks_throttle_0, '0', virtual_sink_0, '0']
- [blocks_vector_source_x_0, '0', blocks_stream_mux_0, '0']
- [channels_channel_model_0, '0', channels_selective_fading_model_0, '0']
@@ -918,11 +988,11 @@ connections:
- [digital_corr_est_cc_0, '1', blocks_complex_to_mag_0, '0']
- [digital_pfb_clock_sync_xxx_0, '0', digital_cma_equalizer_cc_0, '0']
- [digital_pfb_clock_sync_xxx_0, '0', fadingui_netsink_4, '0']
+- [digital_pfb_clock_sync_xxx_0, '0', qtgui_const_sink_x_0, '0']
- [fadingui_datasource_0, '0', digital_constellation_modulator_0, '0']
- [fadingui_multipath_fading_0, '0', fadingui_netsink_0, '0']
- [fadingui_multipath_fading_0, '0', virtual_sink_1, '0']
- [fadingui_phasecorrection_0, '0', fadingui_netsink_3, '0']
-- [fadingui_phasecorrection_0, '0', qtgui_const_sink_x_0, '0']
- [fadingui_phasecorrection_0, '0', virtual_sink_2, '0']
- [virtual_source_0, '0', digital_constellation_decoder_cb_0, '0']
- [virtual_source_1, '0', digital_pfb_clock_sync_xxx_0, '0']
diff --git a/flowgraphs/qpsk_sim.py b/flowgraphs/qpsk_sim.py
index b633bba..cb9315b 100755
--- a/flowgraphs/qpsk_sim.py
+++ b/flowgraphs/qpsk_sim.py
@@ -52,8 +52,7 @@ class qpsk_sim(gr.top_block):
self.fadingui_netsink_1 = fadingui.netsink(address='udp://localhost:31418', dtype="complex", vlen=1)
self.fadingui_netsink_0_0 = fadingui.netsink(address='udp://localhost:31415', dtype="float", vlen=1)
self.fadingui_netsink_0 = fadingui.netsink(address='udp://localhost:31416', dtype="complex", vlen=1)
- self.fadingui_multipath_fading_0 = fadingui.multipath_fading(amplitudes=[0.12], delays=[1.8], los =True)
- self.fadingui_ber_0 = fadingui.ber(vgl=testvec + list(np.zeros(4)), vlen=frame_len,address='udp://localhost:31420')
+ self.fadingui_ber_0 = fadingui.ber(vgl=list(np.zeros(frame_len)), vlen=frame_len,address='udp://localhost:31420')
self.digital_pfb_clock_sync_xxx_0 = digital.pfb_clock_sync_ccf(sps, 2 * np.pi / 100, rrc_taps, 32, 16, 1.5, 1)
self.digital_corr_est_cc_0 = digital.corr_est_cc(access_code_symbols, 1, len(access_code_symbols) // 2, 0.9, digital.THRESHOLD_ABSOLUTE)
self.digital_constellation_modulator_0 = digital.generic_mod(
@@ -66,6 +65,7 @@ class qpsk_sim(gr.top_block):
log=False)
self.digital_constellation_decoder_cb_0 = digital.constellation_decoder_cb(qpsk_const)
self.digital_cma_equalizer_cc_0 = digital.cma_equalizer_cc(15, 1, 2e-3, 1)
+ self.channels_selective_fading_model_0 = channels.selective_fading_model( 8, ((2*carrier_freq)/(3*10e8))/samp_rate, False, 4.0, 21, (0,1.8), (1,0.12), 8 )
self.channels_channel_model_0 = channels.channel_model(
noise_voltage=100e-3,
frequency_offset=2e-3,
@@ -95,7 +95,9 @@ class qpsk_sim(gr.top_block):
self.connect((self.blocks_tagged_stream_align_0, 0), (self.blocks_repack_bits_bb_0, 0))
self.connect((self.blocks_throttle_0, 0), (self.channels_channel_model_0, 0))
self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_stream_mux_0, 0))
- self.connect((self.channels_channel_model_0, 0), (self.fadingui_multipath_fading_0, 0))
+ self.connect((self.channels_channel_model_0, 0), (self.channels_selective_fading_model_0, 0))
+ self.connect((self.channels_selective_fading_model_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0))
+ self.connect((self.channels_selective_fading_model_0, 0), (self.fadingui_netsink_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.fadingui_netsink_1, 0))
self.connect((self.digital_constellation_decoder_cb_0, 0), (self.blocks_tagged_stream_align_0, 0))
@@ -104,8 +106,6 @@ class qpsk_sim(gr.top_block):
self.connect((self.digital_corr_est_cc_0, 0), (self.fadingui_phasecorrection_0, 0))
self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.digital_cma_equalizer_cc_0, 0))
self.connect((self.digital_pfb_clock_sync_xxx_0, 0), (self.fadingui_netsink_4, 0))
- self.connect((self.fadingui_multipath_fading_0, 0), (self.digital_pfb_clock_sync_xxx_0, 0))
- self.connect((self.fadingui_multipath_fading_0, 0), (self.fadingui_netsink_0, 0))
self.connect((self.fadingui_phasecorrection_0, 0), (self.digital_constellation_decoder_cb_0, 0))
self.connect((self.fadingui_phasecorrection_0, 0), (self.fadingui_netsink_3, 0))
@@ -145,6 +145,7 @@ class qpsk_sim(gr.top_block):
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.blocks_throttle_0.set_sample_rate(self.samp_rate)
+ self.channels_selective_fading_model_0.set_fDTs(((2*self.carrier_freq)/(3*10e8))/self.samp_rate)
def get_rrc_taps(self):
return self.rrc_taps
@@ -170,6 +171,7 @@ class qpsk_sim(gr.top_block):
def set_carrier_freq(self, carrier_freq):
self.carrier_freq = carrier_freq
+ self.channels_selective_fading_model_0.set_fDTs(((2*self.carrier_freq)/(3*10e8))/self.samp_rate)
def get_access_code_symbols(self):
return self.access_code_symbols