Iridium PRBS15 Decoder Test
Deterministic gr-iridium decoder sanity check using the upstream synthetic PRBS15 golden fixture. A successful run prints one 179-bit RAW frame at 100% confidence; the expected prefix is shown on the canvas and the full reference frame is pinned by gr-iridium's CI.
- Author GNU Radio World
- Category gr-iridium
- Blocks 15
- Connections 7
- File
gr-iridium/iridium_prbs15_decoder_test.grc
Blocks used
| Block | Module | Used |
|---|---|---|
| Variable | GNU Radio | 6 |
| burst_downmix | gr-iridium | 1 |
| fft_burst_tagger | gr-iridium | 1 |
| frame_sorter | gr-iridium | 1 |
| GR World Recording | GNU Radio | 1 |
| GUI Layout | GNU Radio | 1 |
| iridium_frame_printer | gr-iridium | 1 |
| iridium_qpsk_demod | gr-iridium | 1 |
| Note | GNU Radio | 1 |
| tagged_burst_to_pdu | gr-iridium | 1 |
Notes in this flowgraph
- Sanity check: run the graph and open the console. Expect exactly one RAW frame with 100% confidence, length 179, and bits beginning 0011000000110000111100111. The recording tab shows the source spectrogram.
Flowgraph source
gr-iridium/iridium_prbs15_decoder_test.grc
options:
parameters:
author: GNU Radio World
comment: ''
copyright: ''
description: Deterministic gr-iridium decoder sanity check using the upstream synthetic PRBS15 golden fixture. A successful run prints one 179-bit RAW frame at 100% confidence; the expected prefix is shown on the canvas and the full reference frame is pinned by gr-iridium's CI.
generate_options: qt_gui
id: Iridium_PRBS15_Decoder_Test
title: Iridium PRBS15 Decoder Test
states:
coordinate: [10, 10]
rotation: 0
state: enabled
blocks:
- name: burst_sample_rate
id: variable
parameters:
comment: Iridium demodulator input rate (10 samples per symbol)
value: '250000'
states:
coordinate: [590, 10]
rotation: 0
state: enabled
- name: burst_width
id: variable
parameters:
comment: Occupied width used by the detector and input filter
value: '40000'
states:
coordinate: [820, 10]
rotation: 0
state: enabled
- name: center_freq
id: variable
parameters:
comment: Recording center frequency
value: '1622000000'
states:
coordinate: [1000, 10]
rotation: 0
state: enabled
- name: fft_size
id: variable
parameters:
comment: Approximately one millisecond at the recording rate
value: '2048'
states:
coordinate: [1170, 10]
rotation: 0
state: enabled
- name: max_burst_len
id: variable
parameters:
comment: 90 ms at the recording rate
value: '180000'
states:
coordinate: [1340, 10]
rotation: 0
state: enabled
- name: sample_rate
id: variable
parameters:
comment: Recording sample rate
value: '2000000'
states:
coordinate: [1540, 10]
rotation: 0
state: enabled
- name: burst_downmix
id: iridium_burst_downmix
parameters:
affinity: ''
alias: ''
comment: Filters, centers, and decimates the detected burst
handle_multiple_frames_per_burst: 'False'
hard_max_queue_len: '0'
input_taps: firdes.low_pass_2(1, sample_rate, burst_width/2, burst_width, 40)
maxoutbuf: '0'
minoutbuf: '0'
output_sample_rate: burst_sample_rate
search_depth: '1750'
start_finder_taps: firdes.low_pass_2(1, burst_sample_rate, 2500, 5000, 60)
states:
coordinate: [70, 540]
rotation: 0
state: enabled
- name: burst_tagger
id: iridium_fft_burst_tagger
parameters:
affinity: ''
alias: ''
burst_post_len: '32000'
burst_pre_len: '4096'
burst_width: burst_width
center_frequency: center_freq
comment: Matches the upstream extractor's 18 dB golden-test threshold
debug: 'False'
fft_size: fft_size
history_size: '512'
max_burst_len: max_burst_len
max_bursts: '0'
maxoutbuf: '0'
minoutbuf: '0'
sample_rate: sample_rate
threshold: '18'
states:
coordinate: [670, 330]
rotation: 0
state: enabled
- name: bursts_to_pdus
id: iridium_tagged_burst_to_pdu
parameters:
affinity: ''
alias: ''
comment: Copies the tagged stream burst into a message PDU
drop_overflow: 'False'
max_burst_size: max_burst_len
max_outstanding: '500'
maxoutbuf: '0'
minoutbuf: '0'
relative_center_frequency: '0'
relative_sample_rate: '1'
relative_span: '1'
sample_offset: '0'
states:
coordinate: [1120, 380]
rotation: 0
state: enabled
- name: frame_printer
id: iridium_iridium_frame_printer
parameters:
affinity: ''
alias: ''
comment: Prints the golden RAW frame to the console
states:
coordinate: [100, 760]
rotation: 0
state: enabled
- name: frame_sorter
id: iridium_frame_sorter
parameters:
affinity: ''
alias: ''
comment: Orders recovered frames by timestamp
maxoutbuf: '0'
minoutbuf: '0'
states:
coordinate: [1120, 630]
rotation: 0
state: enabled
- name: qpsk_demod
id: iridium_iridium_qpsk_demod
parameters:
affinity: ''
alias: ''
channels: '1'
comment: Demodulates the Iridium QPSK burst into raw bits
maxoutbuf: '0'
minoutbuf: '0'
states:
coordinate: [670, 630]
rotation: 0
state: enabled
- name: recording
id: wasm_gr_world_recording
parameters:
affinity: ''
alias: ''
comment: 0.7-second synthetic PRBS15 golden fixture from upstream gr-iridium
length: '0'
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
progress: 'True'
recording: gr-iridium/prbs15-2M-20dB
repeat: 'False'
type: complex
states:
coordinate: [70, 420]
rotation: 0
state: enabled
- name: result_note
id: note
parameters:
affinity: ''
alias: ''
bgcolor: '#4dff6a'
comment: ''
note: 'Sanity check: run the graph and open the console. Expect exactly one RAW frame with 100% confidence, length 179, and bits beginning 0011000000110000111100111. The recording tab shows the source spectrogram.'
states:
coordinate: [10, 170]
rotation: 0
state: enabled
- name: wasm_gui_layout_0
id: wasm_gui_layout
parameters:
affinity: ''
alias: ''
columns: '12'
comment: ''
layout: '{}'
row_height: '60'
states:
coordinate: [300, 10]
rotation: 0
state: enabled
connections:
- src_blk_id: burst_downmix
src_port_id: burst_handled
snk_blk_id: bursts_to_pdus
snk_port_id: burst_handled
- src_blk_id: burst_downmix
src_port_id: cpdus
snk_blk_id: qpsk_demod
snk_port_id: cpdus
- [burst_tagger, '0', bursts_to_pdus, '0']
- src_blk_id: bursts_to_pdus
src_port_id: cpdus
snk_blk_id: burst_downmix
snk_port_id: cpdus
- src_blk_id: frame_sorter
src_port_id: pdus
snk_blk_id: frame_printer
snk_port_id: pdus
- src_blk_id: qpsk_demod
src_port_id: pdus
snk_blk_id: frame_sorter
snk_port_id: pdus
- [recording, '0', burst_tagger, '0']
metadata:
file_format: 2
grc_version: 3.11.0.0