FPGARelated.com
Forums

How to work with global clocks and buffers in CPLD?

Started by Chris Carlen February 26, 2004
Hi:

I have a Verilog design for a Xilinx XPLA3 CPLD consisting of a toplevel 
module that instantiates several other modules.  I am developing in 
WebPACK 5.2i.

The current design requires a single clock signal.  I am supplying that 
clock through one of the INn/CLKn inputs of the XPLA3 architecture.

Must I do anything special in the Verilog in order to ensure that the 
clock is routed through the chip using the dedicated clock distribution 
lines rather than through general purpose logic signal routing?

For instance, should I use BUF, BUFG, and/or BUFSR ?

Thanks for comments.  Exerpts of my code shown below:


 From myproj.ucf file:

NET "Clk10kHz" LOC = "p89";  <--- p89 is IN1/CLK1
NET "Vsync" LOC = "p79";
NET "InhReq" LOC = "p78";
NET "Inhibit" LOC = "p77";
NET "Grab" LOC = "p76";


 From top level Verilog module:

module Cam_Inh_1(Vsync, InhReq, Inhibit, Grab, Clk10kHz);
   input wire Vsync, InhReq, Clk10kHz;
   output wire Inhibit, Grab;

   wire inhibit_out, grab_out;

// In this instantiation of a sub-module, we just pass the clock along

   Cam_Inh CameraInhibit1( .Vsync(~Vsync), .InhReq(~InhReq), 

                           .Inhibit(inhibit_out),
                           .Grab(grab_out), .Clk10kHz(Clk10kHz) );

   assign Inhibit = ~inhibit_out;
   assign Grab = ~grab_out;

endmodule


The module "Cam_Inh" also passes the clock along to lower modules, where 
it finally gets used in a counter.


-- 
____________________________________
Christopher R. Carlen
Principal Laser/Optical Technologist
Sandia National Laboratories CA USA
crcarle@sandia.gov