LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Reed Solomon Code

Hello. 

 

I have few quetions about the Reed Solomon Code.

 

1. Does it use Vandermonde matrix principle? I know it uses Galois-Field(up to 32 I believe) for arithmetics.

 

2. I have a simple example using a simple string "Lovefromdawngood". The specification is that the data is divided into equal slices (i.e. lets say 2 for this example). So the input string becomes: Slice 1 = Lovefrom = 8 Bytes, and Slice 2 = dawngood = 8 Bytes.

 

Can anyone show how I can use the RS code (shipped with LabView) to solve (or produce the recovery packets) for the above example that follows the specification below.

 


I just don't quite understand how the input properties of the RS code (i.e. Input Symbols [Array], code word length and data word length) with the example such as the one above that conforms to the below specs.

 

Any help is most apriciated.  

 

The input slices are ordered and assigned 16-bit constants. Recovery slices are assigned 16-bit exponents. Each 2-byte word of the recovery slice is the sum of the contributions from each input slice. The contribution of each input slice is the 2-byte word of the input slice multiplied by the input slice's constant raised to the recovery slice's exponent. All these computations (adds, multiplys, powers) are done using the 16-bit Galois Field operations.

 

To generate the recovery data, the slices of the input files are assigned constants. This is based on the order the File IDs appear in the main packet and then by the order the slices appear in the file. So the first slice of the first file in the main packet is assigned the first constant. The second slice of the first file is assigned the second constant. And so on. If the last slice of the first file has the Nth constant, the first slice of the second file is assigned the (N+1)th. And so on.

 

So, the first constant is the first power of two that has order 65535. The second constant is the next power of two that has order 65535. And so on. A power of two has order 65535 if the exponent is not equal to 0 modulus 3, 5, 17, or 257. In C code, that would be (n%3 != 0 && n%5 != 0 && n%17 != 0 && n%257 != 0). Note - this is the exponent being tested, and not the constant itself. There are 32768 valid constants. The first few are:

  • 2
  • 4
  • 16
  • 128
  • 256
  • 2048
  • 8192
  • 16384
  • 4107
  • 32856
  • 17132 ...

 

 

0 Kudos
Message 1 of 3
(2,256 Views)

Hi zerotolerance,

 

I see that the question was posted a while ago. Are you still experiencing the issue?

 

I read through your question and it looks like I would have to do some more research in order to answer it, so just wanted to make sure that you have not elucidated it in the meantime.

0 Kudos
Message 2 of 3
(2,104 Views)

Hi Petru.

 

It would still be nice to see if it can be done, but I suspect for a realistic example, that would not be the case, especially if large files are in question (speed would be a massive issue here). For that, I have nearly complitted my own version of RS code that generates recovery data for a single or a set of files. 

 

To that end, I have also posted another question on this thread:

http://forums.ni.com/t5/LabVIEW/inverting-matrix/td-p/2763740

 

and it would be helpfull if you had any idea on it. 

 

Thank you for your reply.

 

Kas

0 Kudos
Message 3 of 3
(2,093 Views)