GnuRadio CC Decoder or How to use FEC Extended Decoder I am currently trying to recover a satellite signal, encoded following CCSDS standards. This includes a convolutional code with rate 1/2 and constraint length 7.
I am receiving the signal through an SDR directly connected to the sender using coax cables and some attenuation in-between. For testing purposes, I am sending 0 and 1 alternating. For demodulation and decoding, I am currently using the graph attached to this post.
Up until the convolutional decoder, everything seems to work without problems. When deactivating the code both on the sender and receiver, I can decode the data without any problems. When the convolutional code is active, the decoder sometimes is able to decode the data properly, but most of the time, the output just contains garbage.
I therefore wonder, am I using the decoder block in a wrong way? Documentation about how to properly use this block is hard to find. I already tried different settings for the decoder definition but so far nothing helped.
Can anyone help me with this?
Kind regards
valkyrie
Inside CCSDS channel coding standard, there is a synchronization word called the ASM.
It is a pattern sequence of 32, 64 or 256 bits which is used for synchronization inside the stream. It is usefull to solve the two points I describe below.
Inside your GNU block diagram I see two things that might be an issue:

Phase ambiguity: There is no mechanism to solve the phase ambiguity of the BPSK in demodulation. I am not really sure if Viterbi decoder works fine if not solved (the ambiguity).

Two bits ambiguity of CC: This type of code with a rate of 1/2 produces two encoded bits for one noncoded. At the input of decoder, you must be synchronized with the first encoded bit of a couple.


This could explain that sometimes your system works after switching on/off. On chance over two or maybe four...
Other remark, using an alternating pattern of 0 and 1 could make you miss something debuging. Try a 32 bits pattern.
Tell us if you found something