Reed-Solomon en/decoder

I need Reed-Solomon encoder and decoder to perform RS(15, 2/4/7/11).

I found that there are RS codes in
gr-fec/lib/reed-solomon.
But, I couldn’t find some grc blocks implementing the library codes.
In addition, I don’t see work() function which is generally
implemented
in other blocks.

On the other hand, I found ccsds keyword in *decode_rs_ccsds.c *and
encode_rs_ccsds.c
and I can find that keyword in some grc blocks,
fec_encode_ccsds, fec_decode_ccsds, ccsds_encoder_def.
But, I don’t think such blocks can do what I want.

Are there encoder and decoder which have been already implemented?
Do I not understand how to use RS blocks which have been already
implemented?
Or should I implement them?

Regards,
Jeon.

Take a look in:

gnuradio/gr-dtv/lib/atsc/atsc_rs_encoder_impl.cc
gnuradio/gr-dtv/lib/atsc/atsc_rs_decoder_impl.cc

Ron

On Tue, Mar 10, 2015 at 3:35 AM, Ron E. [email protected] wrote:

I need Reed-Solomon encoder and decoder to perform RS(15, 2/4/7/11).
*fec_encode_ccsds, fec_decode_ccsds, ccsds_encoder_def. *

What Ron points out will probably get you going fastest. The FEC API
doesn’t yet fully support the structure needed for RS coding schemes,
though it’s on the to-do list.

Tom

Thanks, Ron and Tom.

But I couldn’t find atsc_rs_encoder_impl.cc. Only I can find decoder.
I’m using version 3.7.6.1

One thing is, I can find rs en/decoder in gnuradio/gr-atsc.
Are these irrelevant with gr-dtv?

When I look into repository, gr-dtv/lib/ has both encoder and decoder
Currently, I am installing the newer version.

Reagrds,
Jeon.

2015-03-10 23:10 GMT+09:00 Tom R. [email protected]:

HI Jeon, you might try the RS encoder/decoder in my gr-dvbt
implementation. There are grc blocks that you can use directly after
installing gr-dvbt.

Regards,Bogdan

 On Tuesday, March 10, 2015 9:33 AM, Jeon 

[email protected] wrote:

I need Reed-Solomon encoder and decoder to perform RS(15, 2/4/7/11).

I found that there are RS codes in gr-fec/lib/reed-solomon.
But, I couldn’t find some grc blocks implementing the library codes.
In addition, I don’t see work() function which is generally implemented
in other blocks.

On the other hand, I found ccsds keyword in decode_rs_ccsds.c and
encode_rs_ccsds.c
and I can find that keyword in some grc blocks, fec_encode_ccsds,
fec_decode_ccsds, ccsds_encoder_def.
But, I don’t think such blocks can do what I want.

Are there encoder and decoder which have been already implemented?
Do I not understand how to use RS blocks which have been already
implemented?
Or should I implement them?

Regards,
Jeon.

Thank you all Bogdan and Ron.

I wil try your codes.

It’s not important, but one general question.
Why do the most of Reed-Solomon implentations exist under digital TV or
broadcasting?
I can guess that DVB is the typical application of RS.
But, how about other wireless communications?
I can see a list of wireless applications with some googling. (I’m not
sure
they are standards or just proposal)

Regards,
Jeon.

2015-03-11 14:42 GMT+09:00 Bogdan D. [email protected]:

Yes, the gr-dtv ATSC RS encoder was added in a recent commit after
the 3.7.6.1 release. Sorry, I forgot to mention that.

The ATSC code in gr-dtv is a re-write of the code in gr-atsc. The
functionality of the RS encoder and decoder is the same,
so for those blocks it’s just a clean-up of the code.

I have another slightly different implementation of the RS encoder
in an out of tree repository.

Specifically:

It uses byte input and output rather than the ATSC specific structures
and is implemented as a general block instead of a sync block. It also
implements a (204,188) encoder versus a (207,187).

Ron

Reed-Solomon codes are a form of FEC (Forward Error Correction).
They make sense for communications channels that don’t have
a way for the receiver to ask for a re-transmission (such as
broadcasting).

Reed-Solomon codes are used on many digital formats. One of
the first uses of RS coding were the Voyager 1 and 2 spacecraft
launched in 1977.

Then came audio CD in 1980 (I bought my first CD player in 1983).
It uses a RS(28,24) and a RS(32,28) code.

Other uses are DSL and Wimax (although you don’t see much Wimax
these days).

In current standards, RS codes are now being replaced with
more complex BCH (Bose, Chaudhuri, Hocquenghem) codes.

Ron

Hi Jeon,
I don’t think RS is typical only for DVB apps. RS is indeed used in DTV
but it has been used in many wireless applications before too as being
simple to implement and having many advantages as an block coder/decoder
together with convolutional one. One advantage of RS is its capability
of recovering errors that appear in bursts. This is why it has been used
also in harddrives and barcode readers where errors may appear in bursts
and entire portion of the data could be missing entirely.
Bogdan

 On Wednesday, March 11, 2015 12:16 PM, Jeon 

[email protected] wrote:

Thank you all Bogdan and Ron.

I wil try your codes.

It’s not important, but one general question.
Why do the most of Reed-Solomon implentations exist under digital TV or
broadcasting?
I can guess that DVB is the typical application of RS.
But, how about other wireless communications?
I can see a list of wireless applications with some googling. (I’m not
sure they are standards or just proposal)

Regards,
Jeon.

2015-03-11 14:42 GMT+09:00 Bogdan D. [email protected]:

HI Jeon, you might try the RS encoder/decoder in my gr-dvbt
implementation. There are grc blocks that you can use directly after
installing gr-dvbt.

Regards,Bogdan

 On Tuesday, March 10, 2015 9:33 AM, Jeon 

[email protected] wrote:

I need Reed-Solomon encoder and decoder to perform RS(15, 2/4/7/11).

I found that there are RS codes in gr-fec/lib/reed-solomon.
But, I couldn’t find some grc blocks implementing the library codes.
In addition, I don’t see work() function which is generally implemented
in other blocks.

On the other hand, I found ccsds keyword in decode_rs_ccsds.c and
encode_rs_ccsds.c
and I can find that keyword in some grc blocks, fec_encode_ccsds,
fec_decode_ccsds, ccsds_encoder_def.
But, I don’t think such blocks can do what I want.

Are there encoder and decoder which have been already implemented?
Do I not understand how to use RS blocks which have been already
implemented?
Or should I implement them?

Regards,
Jeon.


Discuss-gnuradio mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Dear Bogdan,
Thanks again for your answers.

I am currently looking into your gr-dvbt for RS and CC.
I have a couple of questions as I am not familiar with GNU Radio or Cpp.

First, is it possible to use reed_solomon class in your gr-dvbt in my
codes
which will be written outside from gr-dvbt?
I think it is possible since you’ve included <gnuradio/io_signature.h>
which is outside from gr-dvbt. And I can do something very similar to
it.
But, will it requires some additional things. For example, should I tell
something to CMakeLists.txt?

Second question is, convolutional interleaver and deinterleaver are same
as
pure convolutional encoder and decoder?
Or are they specially designed for DVB-T?

Regards,
Jeon.

2015-03-11 14:42 GMT+09:00 Bogdan D. [email protected]: