ECC on MFM drive

Eric Smith eric at brouhaha.com
Mon Sep 8 14:15:40 CDT 2008


Alexander Sholohov wrote:
> Hello,
> 
> Could someone help me understand the algorithm used
> for data integrity check on ST251 MFM drive.
> 
> I have ST251 drive and an Adaptec controller. Also I
> have ability to view recorded data in raw format.
> 
> On the track I see ID field block protected by CCITT
> CRC16. And the data block protected by some 32-bit
> ECC. This is definitely not a CRC32. The algorithm in
> general looks like shift register for polynomial
> multiplication with polynomial equal to
> x32+x28+x26+x19+x17+x10+x6+x2+1 .

It's a polynomial code not unlike a CRC.  (Note that a CRC
works as an error-correcting code, but aren't as good at
burst error detection/correction as codes designed for that
purpose.)  It could be a BCH code.  Older disk subsystems
on "big iron" used Fire code, but I'm not aware of that
even having been used on small Winchester drives.

     http://en.wikipedia.org/wiki/Polynomial_code
     http://en.wikipedia.org/wiki/BCH_code

Modern drives use Reed-Solomon code, which is a specific
case of a BCH code, but they use multiple interleaved
code blocks for each disk block.  Interleave greatly
enhances the detection and correction capabilities.

Eric




More information about the cctalk mailing list