Just for fun I've been trying to implement an FT8 encoder that would run
on a Teensy (or Arduino) microcontroller. As part of that effort, I've
run into a problem trying to replicate the CRC12 used in WSJTX. I've
come to the conclusion that the use of 0xC06 in crc12.cpp is a mistake/bug.
I notice that Mike W9MDB pointed out this problem on the wsjt-devel list
back in March when he wrote:
> You may want to check your polynomial. I do believe 0xc06 should be
0xc07 --
> you never want a zero x^0 term.
Although I agree with him that when specifying a CRC to BOOST, it must
be an odd number - i.e. low order bit is set - I disagree that 0xC06
should be 0xC07.
When specifying a polynomial to BOOST, the highest-order term of the
polynomial is omitted. But in the paper by Koopman & Chakravarty (K&C),
the low-order term is omitted. If it were decided to use the K&C
polynomial 0xC07 (which is a much better choice than 0xC06), this would
have to be specified as 0x80F to BOOST.
Mike also asked:
> What's the logic behind using a 12-bit CRC? Is there a plan of some
sort here?
If I understand Table 4 in K&C correctly, any one of the 8-bit
polynomials 0x97, 0x98, 0x83 or 0xCD would perform better than the
12-bit 0xC06 even if it had been correctly specified to BOOST. An 8-bit
polynomial would also free up four bits in the message.
If the polynomial as currently implemented in 1.8.0 is indeed incorrect,
what is involved in getting it changed to a better 12-bit or 8-bit
polynomial?
73
Pete VE5VA
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel