From: Pallavi on
Hi,

I'm implementing this project where I've to generate higher output clk
frequencies using DCM module. I have used a counter for delay generator,
for propagation delays(Pls suggest if there is any other method). I have
also instantiated the DCM module with an input freq of 50MHz and an output
frequency of 320 MHz. I dont know how to write the test bench for this(or
how to connect the DCM logic to the propagation delays to get higher output
clock frequencies). I'm new to this technology and would highly appreciate
if anyone could help me with this.
the instantiation template is:
dcm1 instance_name (
.CLKIN_IN(CLKIN_IN),
.RST_IN(RST_IN),
.CLKFX_OUT(CLKFX_OUT),
.CLKIN_IBUFG_OUT(CLKIN_IBUFG_OUT),
.CLK0_OUT(CLK0_OUT),
.LOCKED_OUT(LOCKED_OUT)
);
and the counter logic is:
module Counter(Clock, Direction, Count_Out);
input Clock;
input Direction;
output [3:0] Count_Out;
reg [3:0] count_int = 0;
always @(posedge Clock)
if (Direction)
count_int <= count_int + 1;
else
count_int <= count_int - 1;

assign Count_Out = count_int;
endmodule





---------------------------------------
Posted through http://www.FPGARelated.com
From: Pallavi on
>On Tue, 09 Feb 2010 20:11:02 -0600
>"Pallavi" <pallavi_mp(a)n_o_s_p_a_m.rediffmail.com> wrote:
>
>> Hi,
>>
>> I'm implementing this project where I've to generate higher output clk
>> frequencies using DCM module. I have used a counter for delay
>> generator, for propagation delays(Pls suggest if there is any other
>> method). I have also instantiated the DCM module with an input freq
>> of 50MHz and an output frequency of 320 MHz. I dont know how to write
>> the test bench for this(or how to connect the DCM logic to the
>> propagation delays to get higher output clock frequencies). I'm new
>> to this technology and would highly appreciate if anyone could help
>> me with this. the instantiation template is:
>> dcm1 instance_name (
>> .CLKIN_IN(CLKIN_IN),
>> .RST_IN(RST_IN),
>> .CLKFX_OUT(CLKFX_OUT),
>> .CLKIN_IBUFG_OUT(CLKIN_IBUFG_OUT),
>> .CLK0_OUT(CLK0_OUT),
>> .LOCKED_OUT(LOCKED_OUT)
>> );
>> and the counter logic is:
>> module Counter(Clock, Direction, Count_Out);
>> input Clock;
>> input Direction;
>> output [3:0] Count_Out;
>> reg [3:0] count_int = 0;
>> always @(posedge Clock)
>> if (Direction)
>> count_int <= count_int + 1;
>> else
>> count_int <= count_int - 1;
>>
>> assign Count_Out = count_int;
>> endmodule
>>
>
>I know I'm going to regret this. I know you're going to wind up being
>some student misunderstanding some inane assignment. But I'm feeling
>charitable today and so, against my better judgement, I'm going to try
>to walk you back out of the woods.
>
>You're saying you need to generate higher output clock frequencies and
>have delays? Why? What is it you're actually trying to design here?
>I'm making the possibly over-generous assumption here that you're not
>simply throwing logic blocks together in random assortments; what's the
>actual goal that you're hoping to wind up with? Because so far what
>you're saying doesn't make any sense. Take a step back, describe what
>the project is, and maybe someone will be able to get you pointed in
>the right direction.
>
>--
>Rob Gaddi, Highland Technology
>Email address is currently out of order
>

Hello,
Thanks for the reply. This is what the project abstract says:
"FPGA devices are, in general, synchronous machines driven by a system
clock (or several clocks if multiple domains are simultaneously
implemented). Thus, the clock period is the basic unit for measuring time
properties of designs and/or to provide control signals at the outputs.
However, FPGA are equipped (at least potentially) with mechanisms providing
much finer time measurements/generation. For example, by using diversified
propagation delays within the implemented designs it is possible to
generate frequencies that are much higher than the system clock frequency.
The objective of the project is to propose and implement techniques for
generating signals (either frequencies of individual pulses) which are
below the clock period threshold. At the system level, the project consists
in determining propagation delays using programming tools (ISE platform).
At the experimental level, the estimated timing characteristics are to be
verified for repeatability, stability and consistency".
My professor has asked me to propose delay generators(I dont know what that
means). Can you please guide me on this.

---------------------------------------
Posted through http://www.FPGARelated.com
From: rickman on
On Feb 10, 8:22 pm, "Pallavi" <pallavi_mp(a)n_o_s_p_a_m.rediffmail.com>
wrote:
> >On Tue, 09 Feb 2010 20:11:02 -0600
> >"Pallavi" <pallavi_mp(a)n_o_s_p_a_m.rediffmail.com> wrote:
>
> >> Hi,
>
> >> I'm implementing this project where I've to generate higher output clk
> >> frequencies using DCM module. I have used a counter for delay
> >> generator, for propagation delays(Pls suggest if there is any other
> >> method). I have also instantiated the DCM module with an input freq
> >> of 50MHz and an output frequency of 320 MHz. I dont know how to write
> >> the test bench for this(or how to connect the DCM logic to the
> >> propagation delays to get higher output clock frequencies). I'm new
> >> to this technology and would highly appreciate if anyone could help
> >> me with this. the instantiation template is:
> >> dcm1 instance_name (
> >>     .CLKIN_IN(CLKIN_IN),
> >>     .RST_IN(RST_IN),
> >>     .CLKFX_OUT(CLKFX_OUT),
> >>     .CLKIN_IBUFG_OUT(CLKIN_IBUFG_OUT),
> >>     .CLK0_OUT(CLK0_OUT),
> >>     .LOCKED_OUT(LOCKED_OUT)
> >>     );
> >> and the counter logic is:
> >> module Counter(Clock, Direction, Count_Out);
> >>     input Clock;
> >>     input Direction;
> >>         output [3:0] Count_Out;
> >>     reg [3:0] count_int = 0;
> >>    always @(posedge Clock)
> >>       if (Direction)
> >>          count_int <= count_int + 1;
> >>       else
> >>          count_int <= count_int - 1;
>
> >>        assign Count_Out = count_int;          
> >> endmodule
>
> >I know I'm going to regret this.  I know you're going to wind up being
> >some student misunderstanding some inane assignment.  But I'm feeling
> >charitable today and so, against my better judgement, I'm going to try
> >to walk you back out of the woods.
>
> >You're saying you need to generate higher output clock frequencies and
> >have delays?  Why?  What is it you're actually trying to design here?
> >I'm making the possibly over-generous assumption here that you're not
> >simply throwing logic blocks together in random assortments; what's the
> >actual goal that you're hoping to wind up with?  Because so far what
> >you're saying doesn't make any sense.  Take a step back, describe what
> >the project is, and maybe someone will be able to get you pointed in
> >the right direction.
>
> >--
> >Rob Gaddi, Highland Technology
> >Email address is currently out of order
>
> Hello,
> Thanks for the reply. This is what the project abstract says:
> "FPGA devices are, in general, synchronous machines driven by a system
> clock (or several clocks if multiple domains are simultaneously
> implemented). Thus, the clock period is the basic unit for measuring time
> properties of designs and/or to provide control signals at the outputs.
> However, FPGA are equipped (at least potentially) with mechanisms providing
> much finer time measurements/generation. For example, by using diversified
> propagation delays within the implemented designs it is possible to
> generate frequencies that are much higher than the system clock frequency..
> The objective of the project is to propose and implement techniques for
> generating signals (either frequencies of individual pulses) which are
> below the clock period threshold. At the system level, the project consists
> in determining propagation delays using programming tools (ISE platform).
> At the experimental level, the estimated timing characteristics are to be
> verified for repeatability, stability and consistency".
> My professor has asked me to propose delay generators(I dont know what that
> means). Can you please guide me on this.          


It sounds to me that your professor either does not really understand
FPGAs (in the real world) or this is just an exercise for the mind.

A delay generator is just that, a function block that just delays a
signal by some known amount of time. But anyone who knows anything
about working with FPGAs or any other type of logic design knows that
logic delays vary over a wide range depending on the power voltage,
the chip temperature and the processing that created the chip. The
rule of thumb I have read is that delays can vary (considering all of
the above over their full range) by a factor of 2! This makes it very
hard to use the delays for most purposes.

The idea of using delays in the FPGA has been discussed here a number
of times and no one has ever described anything but theory.

Using a DCM is one way to reduce the minimum timing period in a way
intended by the FPGA vendors and fully supported by them. A DCM is
capable of acting as a PLL to multiply the frequency of the supplied
clock. This is mainly useful for running the logic at a higher rate.
I am not clear on what is meant by "generating signals (either
frequencies of individual pulses) which are below the clock period
threshold". I think by "frequencies" he means clocks, so the DCM
should do the job here.

But whether this is what your professor wants depends on what he
intends to use it for.

Good Luck,

Rick
From: -jg on
On Feb 11, 2:22 pm, "Pallavi" <pallavi_mp(a)n_o_s_p_a_m.rediffmail.com>
wrote:
> However, FPGA are equipped (at least potentially) with mechanisms providing
> much finer time measurements/generation.

This is correct.

> For example, by using diversified
> propagation delays within the implemented designs it is possible to
> generate frequencies that are much higher than the system clock frequency..

This is on thinner ice, as you DO need to be very clear about TIME and
FREQUENCY, and the two are not quite as interchangable as the Prof
might think.

> The objective of the project is to propose and implement techniques for
> generating signals (either frequencies of individual pulses) which are
> below the clock period threshold.

Pulse delays you can do, to sub-ns granularity, but Frequencies will
hit a practical ClockMax ceiling.
So usable Fmax is NOT 1/(delay granularity)

> At the system level, the project consists
> in determining propagation delays using programming tools (ISE platform).

You will need more than programming tools.
At the very least, a Frequency Counter.
If you scale within the FPGA (easy to do) you can use
a Sound Card + SW.

Typically you construct a ring oscillator, using a significant number
of delay/logic elements, then measure the Frequency, and calculate
the element delay from that.

> At the experimental level, the estimated timing characteristics are to be
> verified for repeatability, stability and consistency".

Be sure to vary Voltage and temperature.

-jg

From: Morten Leikvoll on
"Pallavi" <pallavi_mp(a)n_o_s_p_a_m.rediffmail.com> wrote in message
news:wImdnRnun5J4xu7WnZ2dnUVZ_sSdnZ2d(a)giganews.com...
> Hello,
> Thanks for the reply. This is what the project abstract says:
> "FPGA devices are, in general, synchronous machines driven by a system
> clock (or several clocks if multiple domains are simultaneously
> implemented). Thus, the clock period is the basic unit for measuring time
> properties of designs and/or to provide control signals at the outputs.
> However, FPGA are equipped (at least potentially) with mechanisms
> providing
> much finer time measurements/generation. For example, by using diversified
> propagation delays within the implemented designs it is possible to
> generate frequencies that are much higher than the system clock frequency.
> The objective of the project is to propose and implement techniques for
> generating signals (either frequencies of individual pulses) which are
> below the clock period threshold. At the system level, the project
> consists
> in determining propagation delays using programming tools (ISE platform).
> At the experimental level, the estimated timing characteristics are to be
> verified for repeatability, stability and consistency".
> My professor has asked me to propose delay generators(I dont know what
> that
> means). Can you please guide me on this.

My initial understanding of this is that he wants to see a syncronous input
output delay by a certain resolution higher than the sysem clk.
So if your DLL multiplies the input clk with the factor M, where M is
limited by input clk and max dll freq, you should be able to delay a signal
through, say one or several srl16 primitives with this systemclk*M
resolution.
The new delayed output signal will of course be syncronous in the sysclk*M
domain, not in the sysclk.