From: Chris Maryan on
On Mar 26, 12:04 pm, Jason Thibodeau <jason.p.thibod...(a)gmail.com>
wrote:
> On 03/26/2010 11:15 AM, Thomas Stanka wrote:
>
>
>
>
>
> > On 25 Mrz., 17:18, Jason Thibodeau<jason.p.thibod...(a)gmail.com>
> > wrote:
> >> Thinking about it further, I suppose I didn't mean stay exactly the
> >> same. I did expect differences, and I guess I confirm with you all that
> >> what I am seeing is normal. I have typically less than 5% fluctuations
> >> between runs.
>
> >> Thanks for all your input. It gives me a bit to think about.
>
> > The problem is, that your frequency might be very fast with 5 stage
> > ring oscillator. Expect the clock frequency to equal the gate delay of
> > not more than 5 gates :). Your counter will experience very fast clock
> > cycles which lead to results with no meaning if your counter is not
> > designed to work with that fast clock frequency.
> > Second problem, how do you avoid having more than one level
> > transaction in the oscillation ring?
> > (e.g. 01010).
>
> > bye Thomas
>
> Yes, I was discussing that with a colleague yesterday. The oscillator
> may be too fast for the counter to read it accurately. I'm using a the
> output oscillator signal to clock the counter, however the oscillation
> frequency may be too fast to meet the required set-up and hold time for
> the counter. I'm investigating that now.
>
> --
> Jason Thibodeau- Hide quoted text -
>
> - Show quoted text -

The rule of thumb (at least for brand X FPGAs) is 500ps of propagation
delay per LUT. Assuming your ring buffer is actually getting generated
as you expect (and synthesis isn't reducing it to a single LUT not
gate), not including routing, I'd guess you're looking at ~400MHz as
an upper bound. Depending on your FPGA, this may or may not be
acceptable fundamentally in the fabric. Moreover, your counter has to
run at least this fast.

Chris
From: John_H on
On Mar 26, 3:26 pm, glen herrmannsfeldt <g...(a)ugcs.caltech.edu> wrote:
>
> >> Second problem, how do you avoid having more than one level
> >> transaction in the oscillation ring?
> >> (e.g. 01010).
>
> That would speed up the count.  If you can route to an output
> pin without changing the oscillator too much, then look at it
> on a scope.

There's a strong possibility the I/O won't have the bandwidth to pass
the full signal. A short back and forth for a small pulse might get
lost in the I/O.
From: Gabor on
On Mar 26, 4:54 pm, John_H <newsgr...(a)johnhandwork.com> wrote:
> On Mar 26, 3:26 pm, glen herrmannsfeldt <g...(a)ugcs.caltech.edu> wrote:
>
>
>
> > >> Second problem, how do you avoid having more than one level
> > >> transaction in the oscillation ring?
> > >> (e.g. 01010).
>
> > That would speed up the count.  If you can route to an output
> > pin without changing the oscillator too much, then look at it
> > on a scope.
>
> There's a strong possibility the I/O won't have the bandwidth to pass
> the full signal.  A short back and forth for a small pulse might get
> lost in the I/O.

Normally a ring with a single enable input wouldn't behave that
way. The ring consists of one NAND (or NOR) gate and the
rest of the elements are just inverters. When the ring is
disabled all elements find a static state and the gate
element injects just one edge into the ring, assuming the
enable signal is not glitchy itself.
From: -jg on
On Mar 27, 9:09 am, Gabor <ga...(a)alacron.com> wrote:
>
> Normally a ring with a single enable input wouldn't behave that
> way.  The ring consists of one NAND (or NOR) gate and the
> rest of the elements are just inverters.  When the ring is
> disabled all elements find a static state and the gate
> element injects just one edge into the ring, assuming the
> enable signal is not glitchy itself.

Correct, you should use an Enable to ensure correct 'start' of a Ring
oscillator.
Even tho you might think a Tphl/tplh shift should remove narrower
pulses, that's only true if the path is monotonic, and local LCR
effects mean there can be 'stable' regions.

You can also code a Ring oscillator, as alternating inverters, and
nand/nor elements, and that can sometime help persuade to tools to not
optimize things away...

The best way to test Osc stability is to probe a Divided pin, NOT the
raw Osc, as in most cases, it will not make it out in any useful way.
A divided pin easily shows errant effects, and a scope is important.

A ring oscillator will locally heat, so for best stability use a Power-
Up Enable and gate the divider, not the oscillator itself.

-jg

From: Symon on
On 3/26/2010 3:15 PM, Thomas Stanka wrote:
> On 25 Mrz., 17:18, Jason Thibodeau<jason.p.thibod...(a)gmail.com>
> Second problem, how do you avoid having more than one level
> transaction in the oscillation ring?
> (e.g. 01010).
>
> bye Thomas
>
>
Isn't the 01010 thing gonna resolve itself PDQ? It must be an unstable
state.

Syms.

First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4
Prev: EMC discussion
Next: USB 3.0 implementation on FPGA