This message is from the T13 list server.
>> I think UDMA uses a much weaker CRC with polynomial 0x11021 of weight 4. (I should have added: so random errors go undetected with probability 1/2^16.) >> It has even weight, so will detect all errors of odd weight, >> in particular all single-bit errors. >> It will detect all double bit errors in blocks of less than 32768 bits. > > Means, we have to force CRC every 4K of data in case we want to make > sure we detect all double bit errors. Actually, every 2047th UDMA > word. Right? Right. (The shortest undetected double bit error pattern is 1000...01 with 32768 bits. But of course the bit error can also occur in the CRC, so these 32768 bits is data plus CRC. If an undetected 2-bit error must be avoided, one must have a CRC after at most 2046 data words.) >> It will detect any stuck data pin in blocks of less than 32752 bits. > > Means, we have to force CRC every 4K of data in case we want to make > sure we detect all single bit stuck-at errors. Actually, every 2046th > UDMA word. Right? No, sorry, I formulated this very carelessly. What I meant was that if every 16th bit is in error, then the error will be detected if the bit sequence has length less than 32752. (In fact, if there are precisely 32752 bits and the error pattern sets precisely 1 in 16, then the error pattern has 2047 bits, which is odd, so this is also detected, and the first undetected case is that of 65504 bits.) But a "stuck at" error is rather different from "every 16th bit in error": the error pattern depends on the data. Much shorter error patterns may go undetected. For example, the pattern x^256 + x^192 + x^80 + 1 of length 257 will go undetected and may represent a "stuck at" error (bit 0 stuck at 0). Of course, one wants to detect random errors in every single block, but "stuck at" errors are probably permanent, and will be detected very soon.
