6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Fri Sep 20, 2024 2:54 am

All times are UTC




Post new topic Reply to topic  [ 18 posts ]  Go to page Previous  1, 2
Author Message
PostPosted: Mon May 18, 2020 9:01 am 
Offline

Joined: Mon May 21, 2018 8:09 pm
Posts: 1462
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.


Top
 Profile  
Reply with quote  
PostPosted: Mon May 18, 2020 9:05 am 
Offline

Joined: Fri Nov 26, 2010 6:03 pm
Posts: 46
Location: NSW, Australia
I've actually just been playing with Convolutional Coding, in an Amateur Radio 'weak signal mode' context-- the basic technique that /replaced/ Reed-Solomon on the Voyager space probes (mid-way into the mission!)

The encoder is very very easy-- input bits are logically shifted through several registers, the parity of each register is calculated after each bit, and those parity bits are the output. Additional robustness in practice includes bit-interleaving the output, and sometimes pre-processing the input with the likes of Golay code (another relatively simple encoding). There's a digital mode in Amateur Radio called "WSPR" where encoders exist for the Atmel/Arduino cpus.

Decoding is a little more involved, using the Viterbi algorithm, but it's one of those elegant algorithms that's not grossly over-complicated (unlike erasure-style FEC). An 8-bitter could handle it, certainly.


Top
 Profile  
Reply with quote  
PostPosted: Mon May 18, 2020 9:10 am 
Offline

Joined: Mon May 21, 2018 8:09 pm
Posts: 1462
It certainly could, but it's relatively difficult to make a worthwhile convolutional code with low storage overhead. So the Golay and convolutional codes are well suited to communications, but the Hamming and RS codes are better for use in storage applications.


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 18 posts ]  Go to page Previous  1, 2

All times are UTC


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: