Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

How to add delay elements that are sythesizable to the vhdl code?

Status
Not open for further replies.

deepthi.reddy.912

Newbie level 5
Joined
Apr 19, 2011
Messages
10
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,447
Hi,

I would like to add a delay to a signal like

ctl:sig<=x;
wait for 2.118ns;

But, wait statements are not synthesizable.

I heard that i can add Flipflops or RAMs to make delay synthesizable. But how to add particular delay value like 2.118ns to Flipflop or RAM.

Kindly explain.
 

BradtheRad

Super Moderator
Staff member
Joined
Apr 1, 2011
Messages
13,970
Helped
2,784
Reputation
5,566
Reaction score
2,691
Trophy points
1,393
Location
Minneapolis, Minnesota, USA
Activity points
104,208
You can use a counter IC driven by crystal-based oscillator.

You can set up the counter circuit to load any initial value you choose.

Set the counter chip for count down mode.

Then you send a start signal to the counter IC's enable pin.

The crystal oscillator sends precisely spaced pulses. The counter goes down.

When the counter reaches zero, its carry pin will change state. That's your output.

---------- Post added at 13:48 ---------- Previous post was at 13:27 ----------

By the way, if you're talking in resolutions of fractions of a nanosecond that's a tall order.

Light and electronic signals only travel 10 inches per nanosecond.

In that case you could introduce a 2.118ns delay with a carefully measured length of wire. About 25 inches.

It's not inconceivable. I was amazed when I heard about color tv sets sending the chroma signal through a long coil of wire to delay it by a millionth of second so that it would sync with the luminance signal. Or vice versa.
 

lucbra

Advanced Member level 2
Joined
Oct 30, 2003
Messages
514
Helped
73
Reputation
146
Reaction score
63
Trophy points
1,308
Location
Belgium
Activity points
3,251
If you want to introduce that kind of delay (order of magnitude a couple of ns), you could think of using a time constraint on that certain path. This way you can define precise delays. buffers (or a double NOT function) with an attribute SYN_KEEP set, can also be used, but the delay will not be precise 2.118ns (as an example)
 

permute

Advanced Member level 3
Joined
Jul 16, 2010
Messages
923
Helped
295
Reputation
590
Reaction score
268
Trophy points
1,343
Activity points
8,543
time constraints are not precise. they are "less than". eg, if the route ranges from 1ns to 2ns over process/voltage/temperature, then the constraint is met. The path might range from 0.5 to 1ns and also meet the constraint. It isn't accurate or precise if you are trying to get a specific delay. There are precision delay circuits, but they would need to come from your vendor and then you would need to instantiate them and take any other necessary precautions. Usually FPGAs have delay elements for IO purposes, so you might be able to find something of interest there.

But in the majority of cases, delays are specified in terms of cycles or fractions of a cycle. eg, x might be a register that ONLY updates on the falling edge of the clock, while other registers that use it update on the rising edge. or possibly a PLL generates a 90d offset clock. Now 1/4th cycle delays can be realized, as long as the timing constraints can be met.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top