discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Reed-Solomon Decoding (Not for Digital Television)


From: pwhines2
Subject: RE: Reed-Solomon Decoding (Not for Digital Television)
Date: Tue, 14 Dec 2021 21:04:14 -0500

Hello Ron and Daniel,

First of all I appreciate the replies, you've given me some great starting 
places for this, so thanks.

I guess my next question would be how to implement this into my existing 
flowgraph given the output of my demodulator and the input of the blocks.  
Right now I have my GMSK signal being demodulated with the final block being a 
binary slicer, which outputs a constant stream of binary data (working on 
understanding the correlate access code to remove noise between bursts).  How 
would one go about converting the data from a byte stream to a stream vector or 
PDU?  I would need to convert the signal back to a byte stream afterwards for 
my TCP/File sinks as well.  Right now I keep getting an error saying the source 
IO size doesn't match the sink IO size, which I believe Daniel mentioned if I 
understood correctly.  I've never dealt with stream vectors in GNU Radio so 
this is all new to me.

As a side note, is it possible to find out the RS parameters from the protocol, 
or do you need documentation about the codes used for the original signal?  My 
signal has a BT of 0.2 if that helps...

Again, thanks for the help so far, I'm fairly new to the world of error 
correction for the most part

Patrick

-----Original Message-----
From: Discuss-gnuradio <discuss-gnuradio-bounces+pwhines2=verizon.net@gnu.org> 
On Behalf Of Daniel Estévez
Sent: Tuesday, December 14, 2021 2:43 PM
To: discuss-gnuradio@gnu.org
Subject: Re: Reed-Solomon Decoding (Not for Digital Television)

Hi Patrick and Ron,

Besides the DVB-T Reed-Solomon blocks, there is also the Reed-Solomon blocks 
from gr-satellites. The gr-satellites blocks expose a couple more parameters 
about the Reed-Solomon code definition. These are the "first consecutive root" 
and the "primitive element". These parameters come straight from libfec's 
generic Reed-Solomon implementation. In many codes these two parameters have 
the value 1, and I guess this is what the DVB-T blocks use. But if you need 
other values, for your code, then you can use the gr-satellites blocs.

Additionally, there are two main difference between the gr-satellites blocks 
and the DVB-T Reed-Solomon blocks:

1. The gr-satellites blocks use PDUs rather than stream vectors.
2. Because of this, the gr-satellites blocks get the message size from the PDU 
size, so you don't need to set this in advance and can be variable.

I think that for a burst application, depending on whether you already have the 
data as PDUs or not, it might be easier to use the gr-satellites or the DVB-T 
blocks.

Best,

Daniel.

El 13/12/21 a las 3:01, Ron Economos escribió:
> Reed-Solomon predates digital television and is used in many 
> applications. Here's a nice article about Voyager 1.
> 
> https://destevez.net/2021/12/voyager-1-and-reed-solomon/
> 
> The DVB-T Reed-Solomon blocks expose all the parameters, so you can 
> reuse them for whatever block size you'd like. The default for DVB-T 
> is
> 188 byte input packets and 204 byte output packets for the encoder and 
> the reverse for the decoder.
> 
> Here's an explanation of each parameter.
> 
> 1) p and m are not used. These are leftovers from a previous 
> implementation and retained to keep the block API the same.
> 
> 2) GF polynomial. This is the Field Generator polynomial and 285 (1 
> 0001
> 1101) corresponds to x^8 + x^4 + x^3 + x^2 + 1.
> 
> 3) N. This is the size of the field and is always 255.
> 
> 4) K. This is the message size. 239 means that there will be 255 - 239 
> =
> 16 parity bytes (that can correct up to 8 message bytes).
> 
> 5) t is not used.
> 
> 6) Shortening size. This is the number of message bytes padded with 
> zeroes. For DVB-T, 239 - 51 = 188, which is the size of a MPEG-2 
> Transport Stream packet.
> 
> 7) Blocks. This determines the vector size of the input and output pins. 
> 188 * 8 = 1504 for the encoder input and 204 * 8 = 1632 for the 
> encoder output. It can be set to 1 if desired.
> 
> So you have to chose a message size that you can live with and all 
> your messages have to be the same size (or padded to the same size). 
> And of course, you have to use the encoder at the transmitter and the 
> decoder at the receiver.
> 
> Ron
> 
> On 12/12/21 12:32 PM, pwhines2@verizon.net wrote:
>>
>> Hello all,
>>
>> My question is fairly simple, how would I perform Reed-Solomon error 
>> correction after demodulating my incoming signal?  I see there are a 
>> few uses of RS decoding for digital television, but my signal is just 
>> bursts of data and has nothing to do with television.  From what I’ve 
>> gathered I think I need to use the FEC Decoder block and somehow tell 
>> it to use RS decoding, but I’m not 100% sure.  I would preferably 
>> like to use blocks that come with gnuradio for this, but if that’s 
>> not possible then I’ll settle for whatever solution is available.
>>
>> The end of my flowgraph is Binary Slicer > Pack K Bits > File Sink, 
>> and I would imagine the FEC would go after the binary slicer.  The 
>> packets I’m demodulating now are correct, however there are some 
>> errors in the packets while the bursts are demodulated (which is why 
>> I need FEC).  Anyone know how I would go about doing this?
>>
>> Thanks,
>>
>> Patrick
>>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]