I just looked up a datasheet for those DiskOnChip devices. A complication is that they appear to use 10-bit symbols in the RS code, rather than 8-bit. I think that must be to accommodate a 512-byte disk block (as payload) and the parity symbols within a single RS block. The error correction capacity quoted is consistent with 4 parity symbols being added, but these are stored in 6 bytes according to the external interface, which is roughly consistent with them being 10-bit symbols - though they could have been packed into just 5 bytes, instead.
The code I'm writing will not directly handle 10-bit symbols, only 8-bit ones. However, it should be possible to take the algorithms as described by my implementation and adapt them to a larger code, once it's finished. Hopefully my explanations are sufficient to enable you to do that.
The datasheet does explain that using the RS code for correcting errors, as opposed to verifying that none exist, is a comparatively rare operation, which is why it was relegated to software routines. The DoC device itself will compare the recomputed RS parity symbols against those stored, and return correct data when that verification succeeds (and still mostly correct data when it fails). So the devices should be useful even without a 10-bit RS decoder, and you can overlay an 8-bit RS scheme over it if that seems easier, ignoring the built-in support.
|