1. PF Insights is off to a great start! Fresh and interesting articles on all things science and math. Here: PF Insights

Find a message given a CRC and generating polynomial

  1. JJBladester

    JJBladester 287
    Gold Member

    I am working on a circuit that inputs a 31-bit pseudo-random binary string into a CCIT CRC-16 block which generates a 16-bit CRC output.

    I know that M(x)/G(x) = Q(x) + R(x) and the transmitted code will be R(x) appended to M(x).

    When I simulated the circuit, I got a CRC of 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0. From the help file of the software (VisSim/Comm), I know that the generating polynomial is G(x) = 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1.

    How do I determine the 31-bit input sequence that generated the CRC result?

    Since M(x)/G(x) = Q(x) + R(x), we can say that M(x) = [Q(x) + R(x)]G(x). But we don't know Q(x). Assuming the 16-bit CRC is equal to R(x) and the G(x) is given, how do I go about finding M(x) without knowing Q(x)?
     
  2. jcsd
  3. Baluncore

    Baluncore 2,638
    Science Advisor

    Because the generating polynomial is symmetrical = 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 you should be able to reverse the process in time without rewiring the generator.

    First reverse the order of bits in your final CRC and load it into the generator. Then feed the data stream bits backward in time through the generator until you reach the original starting position.
     
Know someone interested in this topic? Share a link to this question via email, Google+, Twitter, or Facebook

Have something to add?

0
Draft saved Draft deleted