[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ecc] Reed Solomon decoder
inada@singnet.com.sg wrote:
> Hi,
> I'm implementing Reed Solomon (255,223) on FPGA using VHDL. I've
> implemented a RS(15,11) as a prototype and it works fine. however, i
> faced trouble when i try upscale it to (255,223) which used up a huge
> number of gates and slices. I believe this is mainly due to the finite field
> conversion(exponential to binary) table implemented in the code. Is
> there any way shorter/more effective way of implementating the finite
> field conversion? other ideas on the code are welcomed!!! Please help!!
I have a Reed Solomon (255,223) decoder running in an XCV600 FPGA. I did
not use any exponential/binary or binary/exponential lookup tables.
Instead, I generated fixed GF multipliers directly, and just used a lot
of them. Implemented in XOR gates, the GF multiplier is just 8 multiple
input XOR gates.
Of course, every multiplier is different, depending on the fixed alpha
that the input is being multiplied by. I generate those with a C code
algorithm that generates the output directly in VHDL format, which I
then pipe into a package file.
An additional big advantage of using a method such as this is that it is
extremely fast. I did not bother to floorplan, and the decoder will run
at 70MBytes per second.
Because I had a bunch of spare block RAMs available, I implemented some
of the multipliers in lookup tables. This freed up some LUTs to be used
elsewhere. Again, this is hardcoded GF multipliers, and not
exponential/binary tables. A 256x16 block ROM can implement 16
multiplier bits.
I used the same method of using C code to generate the contents of the ROM.
--
To unsubscribe from ecc mailing list please visit http://www.opencores.org/mailinglists.shtml