GNU Radio World

gr-satellites AAUSAT-4 decoder (assembled)

What the all-in-one Satellite Decoder expands to for AAUSAT-4, assembled from primitives because the deframer is Python-only

Press Load to open this flowgraph in an editor embedded above, then ▶ to run it. Nothing is downloaded until you do.

Open in the full editor ▶ Download the .grc

Blocks used

BlockModuleUsed
AAUSAT-4 remove FSMgr-satellites1
CC Decoder DefinitionGNU Radio1
CCSDS descramblergr-satellites1
CCSDS Reed-Solomon Decodergr-satellites1
FEC Async DecoderGNU Radio1
FSK Demodulatorgr-satellites1
GR World RecordingGNU Radio1
Message DebugGNU Radio1
NoteGNU Radio1
Short To FloatGNU Radio1
Sync and create PDU softgr-satellites1
VariableGNU Radio1

Notes in this flowgraph

Flowgraph source

gr-satellites/satellites_satellite_decoder_aausat4.grc
options:
    parameters:
        author: Daniel Estevez
        copyright: ''
        description: What the all-in-one Satellite Decoder expands to for AAUSAT-4, assembled from primitives because the deframer is Python-only
        generate_options: qt_gui
        id: gr_satellites_AAUSAT_4_decoder__assembled_
        title: gr-satellites AAUSAT-4 decoder (assembled)
    states:
        coordinate: [10, 10]
        rotation: 0
        state: enabled
blocks:
-   name: samp_rate
    id: variable
    parameters:
        comment: ''
        value: '48000'
    states:
        coordinate: [600, 10]
        rotation: 0
        state: enabled
-   name: decoder_note
    id: note
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        note: 'Satellite Decoder and the AAUSAT-4 deframer are both Python-only, so the deframer is built here from the blocks it uses: soft syncword search, FSM removal, terminated r=1/2 K=7 Viterbi, CCSDS descrambling and Reed-Solomon. Only the long-frame branch is wired: the short one needs PDU To Tagged Stream, which this runtime does not schedule.'
    states:
        coordinate: [770, 10]
        rotation: 0
        state: enabled
-   name: descrambler
    id: satellites_ccsds_descrambler
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [410, 580]
        rotation: 0
        state: enabled
-   name: frames
    id: blocks_message_debug
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        en_uvec: 'True'
        log_level: info
    states:
        coordinate: [1210, 490]
        rotation: 0
        state: enabled
-   name: fsk_demod
    id: satellites_fsk_demodulator
    parameters:
        affinity: ''
        alias: ''
        baudrate: '2400'
        comment: ''
        iq: 'False'
        maxoutbuf: '0'
        minoutbuf: '0'
        options: '""'
        samp_rate: samp_rate
        subaudio: 'False'
    states:
        coordinate: [630, 330]
        rotation: 0
        state: enabled
-   name: fsm
    id: satellites_aausat4_check_fsm
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [1320, 330]
        rotation: 0
        state: enabled
-   name: recording
    id: wasm_gr_world_recording
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        length: '0'
        maxoutbuf: '0'
        minoutbuf: '0'
        offset: '0'
        recording: estevez/aausat_4
        repeat: 'False'
        type: short
    states:
        coordinate: [10, 310]
        rotation: 0
        state: enabled
-   name: reed_solomon
    id: satellites_decode_rs_ccsds
    parameters:
        affinity: ''
        alias: ''
        basis: 'False'
        comment: ''
        interleave: '1'
        maxoutbuf: '0'
        minoutbuf: '0'
    states:
        coordinate: [730, 580]
        rotation: 0
        state: enabled
-   name: syncword
    id: satellites_sync_to_pdu_soft
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        packlen: '2004'
        sync: '"010011110101101000110100010000110101010101000010"'
        threshold: '8'
    states:
        coordinate: [930, 330]
        rotation: 0
        state: enabled
-   name: to_float
    id: blocks_short_to_float
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        maxoutbuf: '0'
        minoutbuf: '0'
        scale: '32767'
        vlen: '1'
    states:
        coordinate: [370, 340]
        rotation: 0
        state: enabled
-   name: viterbi
    id: fec_async_decoder
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        decoder: viterbi_def
        maxoutbuf: '0'
        minoutbuf: '0'
        mtu: '249'
        packed: 'False'
        rev_pack: 'False'
    states:
        coordinate: [80, 570]
        rotation: 0
        state: enabled
-   name: viterbi_def
    id: variable_cc_decoder_def
    parameters:
        affinity: ''
        alias: ''
        comment: ''
        dim1: '1'
        dim2: '1'
        framebits: '1996'
        k: '7'
        mode: fec.CC_TERMINATED
        ndim: '0'
        padding: 'False'
        polys: '[79,-109]'
        rate: '2'
        state_end: '-1'
        state_start: '0'
        value: '"aausat4_long"'
    states:
        coordinate: [1190, 10]
        rotation: 0
        state: enabled
connections:
-   src_blk_id: descrambler
    src_port_id: out
    snk_blk_id: reed_solomon
    snk_port_id: in
- [fsk_demod, '0', syncword, '0']
-   src_blk_id: fsm
    src_port_id: long
    snk_blk_id: viterbi
    snk_port_id: in
- [recording, '0', to_float, '0']
-   src_blk_id: reed_solomon
    src_port_id: out
    snk_blk_id: frames
    snk_port_id: print_pdu
-   src_blk_id: syncword
    src_port_id: out
    snk_blk_id: fsm
    snk_port_id: in
- [to_float, '0', fsk_demod, '0']
-   src_blk_id: viterbi
    src_port_id: out
    snk_blk_id: descrambler
    snk_port_id: in
metadata:
    file_format: 2
    grc_version: 3.11.0.0