GnuRadio CC Decoder o Come utilizzare FEC Extended Decoder

Oct 16 2020

Attualmente sto cercando di recuperare un segnale satellitare, codificato secondo gli standard CCSDS. Ciò include un codice convoluzionale con velocità 1/2 e lunghezza del vincolo 7.

Sto ricevendo il segnale tramite un SDR collegato direttamente al mittente utilizzando cavi coassiali e una certa attenuazione intermedia. A scopo di test, invio 0 e 1 alternati. Per la demodulazione e la decodifica, attualmente sto utilizzando il grafico allegato a questo post.

Fino al decoder convoluzionale tutto sembra funzionare senza problemi. Disattivando il codice sia sul mittente che sul destinatario, posso decodificare i dati senza problemi. Quando il codice convoluzionale è attivo, il decodificatore a volte è in grado di decodificare i dati correttamente, ma la maggior parte delle volte l'output contiene solo spazzatura.

Mi chiedo quindi, sto usando il blocco decoder in modo sbagliato? La documentazione su come utilizzare correttamente questo blocco è difficile da trovare. Ho già provato diverse impostazioni per la definizione del decoder, ma finora nulla ha aiutato.

Qualcuno mi può aiutare con questo? Cordiali saluti Valkyrie

Risposte

gotchi85 Oct 19 2020 at 10:44

All'interno dello standard di codifica dei canali CCSDS, c'è una parola di sincronizzazione chiamata ASM.

È una sequenza di pattern di 32, 64 o 256 bit che viene utilizzata per la sincronizzazione all'interno del flusso. È utile per risolvere i due punti che descrivo di seguito.

All'interno del tuo diagramma a blocchi GNU vedo due cose che potrebbero essere un problema:

  • Ambiguità di fase: non esiste alcun meccanismo per risolvere l'ambiguità di fase del BPSK nella demodulazione. Non sono proprio sicuro che il decoder Viterbi funzioni bene se non risolto (l'ambiguità).

  • Ambiguità di due bit di CC: questo tipo di codice con una velocità di 1/2 produce due bit codificati per uno non codificato. All'ingresso del decoder bisogna essere sincronizzati con il primo bit codificato di una coppia.

Questo potrebbe spiegare che a volte il tuo sistema funziona dopo l'accensione / spegnimento. Forse più di due o forse quattro ...

Un'altra osservazione, l'utilizzo di uno schema alternato di 0 e 1 potrebbe farti perdere qualcosa durante il debug. Prova uno schema a 32 bit.

Dicci se hai trovato qualcosa