KryoFlux - Flux Transition to Bit Cell Conversion (2)

2009-11-21

Following on from the previous WIP, we need a reliable method to interpret bit cell data from the measured flux transition timing.

One idea (after some sleep) is to derive data within a context. You might be tempted to think the 4us values are spot on, being very close multiples of 2us. In reality however, they are bit shifts from 3.6us. 1.8us is clearly the real bit cell rate that was used when mastering the disk.

But the shifts always happen after a certain pattern that has been established before, like they should have been eliminated through pre-compensation. Either pre-compensation was not used and what we see is the result after 20 years, or pre-compensation was good enough to reduce the bit shifts to these values in the first place.

Now our thinking is:

  1. Track current bit cell deviation in the context of the length of previous bit cell pattern(s), taking into account some expected deviation.
  2. If the value deviates more than the tolerance, adjust the reference bit cell size according to the change.
  3. If the new bit cell size persists for a few samples, recalculate the patterns.
  4. Allow bigger cell adjustment if the deviation is big, only smaller ones if the deviation is smaller (i.e. coarse and fine tuning of cell size).

Now this might work for any kind of encoding, but it’s not exactly easy to create code that does this efficiently. :)