Prev: EMC discussion
Next: USB 3.0 implementation on FPGA
From: Jason Thibodeau on 24 Mar 2010 21:41 I have a 5 inverter ring oscillator, with its output being fed to a counter. This is run in a continuous process, that is to say it is run at 'gate speed', it is not clocked. I have an enable signal to activate the oscillator, which currently runs for 100ms. I can then clear the counter, and run it again, for 100ms. When I run this on my spartan 3e, I get different values for each and every run. I would assume these values would stay the same. What explanation is there for their differences? Power fluctuations? Any insight would be great. This is just an experiment, so no practical use. Thanks. -- Jason Thibodeau
From: whygee on 24 Mar 2010 21:41 Jason Thibodeau wrote: > I have a 5 inverter ring oscillator, with its output being fed to a > counter. This is run in a continuous process, that is to say it is run > at 'gate speed', it is not clocked. I have an enable signal to activate > the oscillator, which currently runs for 100ms. I can then clear the > counter, and run it again, for 100ms. > > When I run this on my spartan 3e, I get different values for each and > every run. I would assume these values would stay the same. What > explanation is there for their differences? Power fluctuations? > > Any insight would be great. This is just an experiment, so no practical > use. Ring oscillators are VERY sensitive devices. The same old trio applies : power variations, process variations, temperature. I would expect measurements to vary by 50% or more... I'm even sure that the frequency will change by putting your fingers on the chip's surface, due to capacitive effects. Now, i'll let the specialists speak^Wwrite ;-) > Thanks. yg -- http://ygdes.com / http://yasep.org
From: glen herrmannsfeldt on 24 Mar 2010 23:40 Jason Thibodeau <jason.p.thibodeau(a)gmail.com> wrote: > I have a 5 inverter ring oscillator, with its output being fed to a > counter. This is run in a continuous process, that is to say it is run > at 'gate speed', it is not clocked. I have an enable signal to activate > the oscillator, which currently runs for 100ms. I can then clear the > counter, and run it again, for 100ms. > When I run this on my spartan 3e, I get different values for each and > every run. I would assume these values would stay the same. What > explanation is there for their differences? Power fluctuations? How big are the counts? If it runs at a few hundred megahertz, which might be possible, your counts are on the orders of tens of millions. If it changes by 1 part in 1e7 then the count will be different. Do this a few hundred times and graph the distribution. Also compute mean and standard deviation. -- glen
From: John_H on 25 Mar 2010 00:00 On Mar 24, 9:41 pm, Jason Thibodeau <jason.p.thibod...(a)gmail.com> wrote: > I have a 5 inverter ring oscillator, with its output being fed to a > counter. This is run in a continuous process, that is to say it is run > at 'gate speed', it is not clocked. I have an enable signal to activate > the oscillator, which currently runs for 100ms. I can then clear the > counter, and run it again, for 100ms. > > When I run this on my spartan 3e, I get different values for each and > every run. I would assume these values would stay the same. What > explanation is there for their differences? Power fluctuations? > > Any insight would be great. This is just an experiment, so no practical use. > > Thanks. > -- > Jason Thibodeau I'm surprised you're getting such a wide variation as long as your enable guarantees one and only one edge is moving through the ring. Start with a double-check there. It might take some time for a second edge to go away. How do you have a counter that's not clocked? I used a 3-bit Gray count on the first stage of my 8-LUT ring, just in case, and my delays were pretty stable. The values I got from the single-CLB ring were around 450ps average (having spent some time to make sure the 8 inter- LUT routing delays were lowest overall). The variation was surprisingly only about 10% with freeze spray (and heat gun?); I expected a bit more. Interesting item: the delay measurement could turn the FPGA into a switch sensor: pressing the eraser tip of a pencil against the top of the package produced a noticeable change in the delay that came back when released, a change much larger than the natural variation. I used a Spartan3E starter kit and updated the LCD at probably 100ms intervals (it's been a while) to deliver my delay values visually.
From: -jg on 25 Mar 2010 01:20
On Mar 25, 1:41 pm, Jason Thibodeau <jason.p.thibod...(a)gmail.com> wrote: > > When I run this on my spartan 3e, I get different values for each and > every run. I would assume these values would stay the same. What > explanation is there for their differences? Power fluctuations? ?? Err ? 'stay the same' - did you really mean what you wrote ? Of course they will change. Even an Atomic clock varies... Smarter would be to post numbers on how much they changed, as 'different values' has no useful information. A ring oscillator, is a Thermometer, and a Voltmeter, and a process-quantifier - all coming out in one number. -jg |