Hi guys,
I'm trying to recover the bit clock from a 6.9375MHz NRZ bit stream. To make things easier, this stream has several encoding rules: - Thanks to the use of parity bits (each 7-bit data byte has an odd parity bit in the LSB), the longest possible sequence with no transitions is 14 bits long (the Clock Cracker: 1111 1110 0111 1111, repeated until the end of the packet). - All packets begin with a 2-byte clock run-in (CRI) and framing sequence. This sequence (including sync) is: 10101010 10101010 11100100.
By my reckoning this means: - There must be at least one transition every 14*(1/6.9375e6) = 2.02 us. - Transitions can follow one after the other, as seen in the CRI - Thus the time between two transitions can range from 144ns to 2.02us.
What I'm trying to do is put together a PLL-based clock recovery circuit, using a 74HCT7046. I need it to start capturing at the CRI, and ideally lock within 16 bits or less (or at least lock well enough to shift in and match the frame sync byte).
I've breadboarded a test circuit using a Texas Instruments CD74HCT7046A,
1% metal film resistors and ceramic disc capacitors (the round brown ones).The component values I'm using are: R1 = 33k R2 = 10k C1 = 100pF
And for the filter: Series resistor between PC2OUT and VCOIN = 18k Capacitor from VCOIN to ground = 120pF t1 = 2.16us 1/t1 = 462962us
... but despite all my calculations (a dozen or so sheets of A4, loads of Post-it notes, and a good few pages of my lab notebook!) saying "this will work", I can't get the little swine to lock! Somehow the frequency always ends up lower than it should, and the phase detector just won't push the frequency any higher.
Given a static input voltage (VCO_in), the VCO frequency jitters quite badly. If I turn off the trigger delay, the signal looks reasonably good. Add in a 1us delay (that is, the scope starts displaying 1us after the trigger) and you can see the square-wave VCO output jumping left and right on the screen.
I do have a backup plan: a 13.875MHz crystal, in a 74HCT04 CMOS oscillator circuit (the "buffered crystal oscillator" described by Rakon in one of their application notes), with a BB419 varactor tacked on for frequency control. The catch is that this requires a 0-20V input signal for the varactor, which means I need to add an opamp (to boost the 0-5V signal from the '7046's loop filter), a 20V power supply, and a divide-by- two (DFF wired to toggle) to get from 13.875MHz to 6.9375MHz. I'm not keen on this plan, though... it adds a fair few extra chips to the board...
Does anyone have any suggestions? Are HCT7046s, HC7046s or 4046s known to be unstable when built up on breadboards?
Does anyone know of any decent PLL design software, or any good books on the subject? My usual reference (Art of Electronics 2ed) doesn't really go into much detail, and neither does the TI datasheet... which is, frankly, pretty crap.
Thanks,