As of Oct. 2004, this software has been released as open source software under the GNU General Public License (GPL). Downloads page. If you wish to use this software in ways that are incompatible with the GPL, contact me for alternate licensing options. For example if you want to use it in a commercial product that is not open-source, I will license it for $0.50 per copy sold.

This project used the Blackfin C compiler and assembler from Analog Devices
to develop a Reed-Solomon encoder and decoder. The Reed-Solomon error
correcting codes are a family of codes with symbol size n and total code
length 2^{n-1}. In practice, most people use n=8 so that the symbol size
is one byte, making the code length 255 bytes. Shorter codes can be obtained
by truncating the code, if desired.

The released software is a generic implementation of the RS encode and decode functions, supporting any n from 3 to 24. A compile option selects internal storage unit sizes of 8, 16, or 32 bits. The example code tests n=8 and t=7 (that is, a code consisting of 255, 8-bit symbols and capable of correcting up to 7 symbol errors). This particular code contains 2t+1=15 parity symbols and 240 data symbols.

Other sizes have not been extensively tested. Note that larger sizes may not be practical on many systems. For example, an n=24 code would have a block size of about 16 million symbols, with each symbol stored in a 32-bit word.

Execution times were measured using the internal cycle counter of the Blackfin processor:

Word Size | Optimized | Encode Cycles | Decode Cycles |

8 | No | 265786 | 613236 |

16 | No | 275455 | 619156 |

8 | Yes | 156311 | 425779 |

16 | Yes | 155112 | 427000 |

For 8-bit optimized case and a 270 MHz processor, the corresponding times would be encode 0.58ms , decode 1.58ms, for a theoretical decoder peak throughput of 1.2 megabits per second (actual rates will of course depend on i/o and other overhead dependent on the application, as well as on the actual clock rate used).

Page last updated $Date: 2016/02/16 12:27:12 $