Crystal <--> CPLD interface

crystalprogrammable-logic

Could someone advise me on what would be a good practice to interface the CoolRunnerXC2C256 with an external clock? I wish to use KC5032A20 crystal and have it to drive global clock GCK2 (pin 38).

  1. Do I connect output pin of the crystal directly to GCK2 pin, or I should have some intermediate components (pull-up resistors, buffers, etc.)?

  2. 20MHz for this CPLD is slow. Would it be a good idea to configure GCK2 pin as Schmitt-triggered?

  3. Should I use separate power supplies for each Vcc, each Vccio1, and each Vccio2 pins, or one power supply per bank is good enough?

  4. Should I use separate power supplies for the CPLD and the Crystal?

Best Answer

  1. You shouldn't need a load capacitor, but if you're nervous then leave some PCB lands to mount one just in case.
  2. Again, probably not necessary, but I can't think of a reason not to do so. Maybe test it both ways, it's just a fuse setting and you can change it later.
  3. You MUST connect EVERY SINGLE power and ground pin to the appropriate voltage. No exceptions. You don't need a separate supply, just connect all the 3.3V pins to your 3.3V rail, all the 1.8V pins to your 1.8V rail, etc. Also, you should mount decoupling capacitors in close physical proximity to every power pin; Xilinx will have documentation on the recommended power supply decoupling for your specific part and package.
  4. The CPLD and crystal can share the one supply.