VHDL style question

V

vu_5421

Hi,

I have an internally generated clock (CLKDIV) produced by a DCM. I
bring this clock through a global clock buffer and distribute it to
the rest of my logic.

At the same time, I also want to bring this clock to an external IO
pad for monitoring.

What is the best VHDL style to implement this? Should I directly
assign the output of the global clock buffer to the output pad?

It is currently giving me a warning during "translate" about mixing of
synchronous and PAD elements. Also, there are warnings during MAP
about "clock buffer is designated to drive clock loads.... there are
some non clock loads connected..."

Thanks for any advice.
 
A

Andy Peters

Hi,

I have an internally generated clock (CLKDIV) produced by a DCM. I
bring this clock through a global clock buffer and distribute it to
the rest of my logic.

At the same time, I also want to bring this clock to an external IO
pad for monitoring.

What is the best VHDL style to implement this? Should I directly
assign the output of the global clock buffer to the output pad?

It is currently giving me a warning during "translate" about mixing of
synchronous and PAD elements. Also, there are warnings during MAP
about "clock buffer is designated to drive clock loads.... there are
some non clock loads connected..."

The only solution to this that I've found is to use a second DCM to
drive the output pin.

-a
 
V

vu_5421

The only solution to this that I've found is to use a second DCM to
drive the output pin.

-a

Andy,

You are suggesting that I bring this internally generated clock into
another DCM's CLKIN pin, and then bring the CLK0 output of this second
DCM to my output PAD?

How will affect the timing of the signal? Will my internal clock and
the output clock still be exactly phase aligned?

Thanks again.
 
M

Mike Treseler

vu_5421 said:
How will affect the timing of the signal? Will my internal clock and
the output clock still be exactly phase aligned?

No, but you can specify delay constraints
and see if they are met.

-- Mike Treseler
 
B

Brian Drummond

What is the best VHDL style to implement this? Should I directly
assign the output of the global clock buffer to the output pad?

It is currently giving me a warning during "translate" about mixing of
synchronous and PAD elements. Also, there are warnings during MAP
about "clock buffer is designated to drive clock loads.... there are
some non clock loads connected..."

Some technologies provide a DDR output register in the IO block, which
can be clocked from the clock, with the two data inputs wired to 1 and
0. This provides a (slightly delayed) clock output with only synchronous
loads on the clock signal.

Alternatively instantiating an OBUF (output buffer) might suppress the
warning.

- Brian
 
V

vu_5421

Some technologies provide a DDR output register in the IO block, which
can be clocked from the clock, with the two data inputs wired to 1 and
0. This provides a (slightly delayed) clock output with only synchronous
loads on the clock signal.

Alternatively instantiating an OBUF (output buffer) might suppress the
warning.

- Brian

Mike,

What about using the clock feedback deskew feature of the DCM? Would
this guarantee a match between output clock and input clock?


Brian,

No dice on OBUF, it was one of the first things I tried.

Appreciate all the help.
 
M

Mike Treseler

vu_5421 said:
Mike,

What about using the clock feedback deskew feature of the DCM? Would
this guarantee a match between output clock and input clock?

That's an fpga question, but it sounds plausible.
Check the error specs vs your monitor requirements.

-- Mike Treseler
 
A

Andy Peters

Andy,

You are suggesting that I bring this internally generated clock into
another DCM's CLKIN pin, and then bring the CLK0 output of this second
DCM to my output PAD?
Yes.

How will affect the timing of the signal? Will my internal clock and
the output clock still be exactly phase aligned?

See Mike's reply.

-a
 
B

Brian Drummond

It doesn't ...

Bummer.

The DDR register might work, though one time it failed for me because
the tile was shared with a confliction IOB (and I couldn't change the
board layout)

- Brian
 
J

Jonathan Bromley

The DDR register might work, though one time it failed for me because
the tile was shared with a confliction IOB (and I couldn't change the
board layout)

If this is only for monitoring, wouldn't it be OK to use the internal
clock to clock a divide-by-2 (toggle) flop and drive its output
through the OBUF? Then *every* edge on the output corresponds
to an *active* edge of the internal clock.

Sure there would be some delay, but I would have
thought that the FF clock-to-output delay would be completely
negligible by comparison with the pad delay, which you would
be suffering in any event.

Obviously, if you actually need the clock signal outside
the FPGA for some reason other than monitoring, this isn't
going to work.
--
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
(e-mail address removed)
http://www.MYCOMPANY.com

The contents of this message may contain personal views which
are not the views of Doulos Ltd., unless specifically stated.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,170
Messages
2,570,925
Members
47,468
Latest member
Fannie44U3

Latest Threads

Top