Add const -0.5f while decoding CCSDS? #411
-
Hi, I'm trying to write generic CCSDS Concatenated de-framer for jradio. It works well for Viterbi, De-scrambler, Reed Solomon except all bytes are different. For example, gr-satellites produce the following for trisat:
But my decoder provides:
Since Viterbi and Reed Solomon are successful, I assume something to do with bit rotation. I noticed gr-satellites do the following after Viterbi:
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Hi Andrey, The lines self.char2float0 = blocks.char_to_float(1, 1)
self.addconst0 = blocks.add_const_ff(-0.5) implement a unipolar (0's & 1's) char to bipolar (1's and -1's) float transformation. This is only needed because the Reed-Solomon deframer (which is what comes after) expects bipolar floats, since that's the input format for all the deframers. The Reed-Solomon deframer works with hard symbols, so it immediately uses Binary Slicer to convert back to unipolar char. This is a waste of resources. An improved version of these could have a special input mode for the Reed-Solomon deframer that uses unipolar chars (omitting the Binary Slicer), and hence we wouldn't need the two lines above either.
No. This is done to pair the convolutionally encoded symbols. Convolutionally encoded symbols need to be sent to the Viterbi decoder with the correct pairing. For a BPSK stream, the pairing is unknown a priori. There are two possible pairings. We try both in parallel, instancing two deframer chains after this point. I think that phase ambiguity is not solved in these deframers, because all the satellites supported by gr-satellites that use BPSK use differential coding. There is a potential use case for resolving this ambiguity, since many larger satellites do not use differential coding. For this, we would need to instance two decoder chains in parallel (one processing the symbols, the other the symbols inverted). Regarding your specific problem, indeed it seems that you have a bit inversion problem ( |
Beta Was this translation helpful? Give feedback.
Hi Andrey,
The lines
implement a unipolar (0's & 1's) char to bipolar (1's and -1's) float transformation. This is only needed because the Reed-Solomon deframer (which is what comes after) expects bipolar floats, since that's the input format for all the deframers. The Reed-Solomon deframer works with hard symbols, so it immediately uses Binary Slicer to convert back to unipolar char. This is a waste of resources. An improved version of these could have a special input mode for the Reed-Solomon deframer that uses unipolar chars (omitting the Binary Slicer), and hence we wouldn't need the two lines abo…