Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
14 years ago

Doh! My PLLs lose lock. Crosstalk?

I'm having a battle with my Cyclone II FPGA. I am using Quartus 9.1 web version to create a LVDS data deserialiser/sequencer for an industrial camera.

The image sensor has active and idle modes. In the active mode it passes image data, in idle mode it repeats the serial reference word that I use to align my deserialiser. There's no difference in word format or timing between these two modes.

I'm using megafunctions for PLL and comparator, I made my own deserialiser, because the Altera one didn't hit the spot for my design. I have enabled Timing Driven Synthesis and written a SDC file to describe the clock frequencies I am using.

So - I find that the output data turns to rubbish if there is a lot of image activity, but it is stable if the image is quiet. It is also OK when the sensor is in idle mode. I quickly discovered that the 12x PLL that multiplies the crystal clock is losing lock when picture is busy. Hold your hand over the lens, it stays locked. Let some light in, it loses lock (!)

OK, so I do away with the PLL, and use a high frequency crystal instead. Not my preferred option, but,hey I'm getting desperate. Even this method is not rock solid when the image gets busy.

Is it possible that I am getting crosstalk between signals inside the FPGA? Or perhaps some marginal timing? My design is almost completely pipelined, but needs to run from several different clock frequencies.

I am designing in VHDL, and I can't use the LogicLock feature on my version of Quartus. Are there any other tricks I can try to tighten up timing or internal routing? Is internal crosstalk a known problem?

TNX in advance...

Pete

17 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I thought I would update on this one.

    We re-laid the board. We put in filtering for the PLL pins. We checked the data and clock timing again. We cleaned everything up and.. it made no real difference. All my problems still felt like some sort of crosstalk inside the device. The more output activity, the less reliable the processing.

    I fell across the answer by accident. We drive a 28 bit bus from one side of the chip at 40MHz, so that's a lot of output pins changing at the same time.

    So.. I changed the current drive strength on all the outputs (except outgoing clocks and strobes) from 24mA which was the default, to 4mA.

    This seems to have fixed it. At last. After three months...

    :-)

    Pete
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi Pete,

    --- Quote Start ---

    I fell across the answer by accident. We drive a 28 bit bus from one side of the chip at 40MHz, so that's a lot of output pins changing at the same time.

    So.. I changed the current drive strength on all the outputs (except outgoing clocks and strobes) from 24mA which was the default, to 4mA.

    This seems to have fixed it. At last. After three months...

    --- Quote End ---

    Thanks for the update.

    How 'well' is this fixed though?

    Did you try different current strengths? Did you try different combinations of bit patterns, eg. walking 1's, walking 0's, an increasing number of transitions on the bus, a PRBS signal over the bus?

    Cheers,

    Dave
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    As previously explained, it's not cross talk inside the device. Your experience is almost reproducing what I reported in post# 7. The difference is however, that drive strength had been already reduced in our design.

    Reducing the drive strength from maximum to minimum involves a considerable interference reduction as well, I think there's reason for hope.

    But, when redesigning the board, why didn't you change to Cyclone III or IV? It can be expected to end the ground bounce/SSN related PLL unlock problems.

    Regards,

    Frank
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Reducing the drive strength from maximum to minimum involves a considerable interference reduction as well, I think there's reason for hope.

    But, when redesigning the board, why didn't you change to Cyclone III or IV? It can be expected to end the ground bounce/SSN related PLL unlock problems.

    Regards,

    Frank

    --- Quote End ---

    In general I think the layout and power supplies are ok now (filters on PLL inputs, ground and power planes, ultra short tracking etc etc).

    Yes, I agree that this feels more like an "analog" fix rather than a logical fix, however if it proves reliable then I will put aside my residual concerns :)

    As to Cyclone III, (I haven't checked this) I think our only options at this size chip would be BGA. We did a BGA design once but were frightened by the whole layout and pcb building process. Plus you can't scope the pins easily.

    I know we will have no choice in this one day :(

    Pete
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Hi Pete,

    Thanks for the update.

    How 'well' is this fixed though?

    Did you try different current strengths? Did you try different combinations of bit patterns, eg. walking 1's, walking 0's, an increasing number of transitions on the bus, a PRBS signal over the bus?

    Cheers,

    Dave

    --- Quote End ---

    No, I just went for 4mA. There is only about 2 inches of track to the appropriate bus receiver, and no real loading, so the tracks don't need heavy drive current for terminators.

    As to data tests, we are driving it with real video sensor data, and if anything reveals poor timing or weak design, its camera video data :)

    Pete
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    We did a BGA design once but were frightened by the whole layout and pcb building process. Plus you can't scope the pins easily.

    --- Quote End ---

    Actually, I prefer BGA designs for probing.

    The key is to design the PCB such that all BGA pads go to vias, and then expose the bottoms of the vias. A scope probe then sits nicely in the via on the PCB underside. I add a few ground vias around the outside of the BGA pattern and put a white circle around them on the silk, I can then use those known-grounds as my probe tip ground.

    1mm pitch BGAs are also easy to decouple. You have the PCB house expoxy fill the ground and power vias on the underside, and you can place 0402 components directly across the via pairs. If you have a VCC pin without a nearby ground, then you sacrifice an I/O pin, by cutting its BGA pad to via trace, and re-purposing the via as a ground via.

    For an example of this, there are PCB design files here:

    http://www.ovro.caltech.edu/~dwh/carma_board/index.html (http://www.ovro.caltech.edu/%7edwh/carma_board/index.html)

    Ok, these features are not ideal for the lowest-cost board design, however, if you have to go to a BGA based design, then using this approach makes layout and debugging a lot easier.

    Cheers,

    Dave
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Although I also want to encourage you to try FPGA with BGA packages for your design, I can understand that you shy at the new PCB technology requirements.

    I have a customer who also strictly tried to avoid BGA packages with FPGAs until two years ago. I've been using e.g. EP3C16P240 or EP3C25P240. It has several adavantages over EP2C20P240, PLL stability is one of them.