Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics 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.

implementing a delay in FPGA

Status
Not open for further replies.

delay

Full Member level 4
Joined
Jun 11, 2004
Messages
206
Helped
6
Reputation
12
Reaction score
3
Trophy points
1,298
Location
Van Allen Belt
Activity points
2,221
create delay in fpga

Hi all,

If I absolutely need to introduce a delay in for a physical circuit on a FPGA chip, how can I do it knowing synthesizers usully toss dalays out?

delay (delayed by technology)
 

hi,delay
I don't know if your system can introduce a clock with it's period just the same as the delay you want,if so,u can implement your specified delay circuit by simply sample your signal to be delayed.Otherwise,it's always useless to write sentences such as 'after' in VHDL or '#' in verilog to delay a signal or wire.
By the way,if you choose Altera as your FPGA provider as I do,a way that's not recommened by Altera to implement delay is to use the component or module 'LCELL' which is included in Altera's library lpm.
 

For small delay (order of nano seconds), use gates (Ex: AND, OR or BUFFERS).
 

most of hdl synthesiser if you select speed or area to synthesise they delete the componet that make delay,if you want to make a delay if it isn't small make it by clk( like a counter),and if it's small(ns) make by component like buffers and some other ways.how much is the delay that you want to make?
 

first, consider if delay is really needed. And consider again...

if delay falls into the domain of one of your applied clocks then choose ff, shift register or counter to implement the delay.

if you are not able to use clock, synthetizers can prevent objects from being optimized.
Eg.: Synopsis FPGA Express supports for "dont_touch"
Set this attribute on a module/entity/design and also on cells and instances. Setting this attribute prevents that portion of the design from being optimized, effectively treating it as a black box.

attribute dont_touch of Clk_inv1 : label is "true";
 

if you have a high frequency clock you can buffer your signal in a fifo where you can set the delay whiuc you like to add at you r signal.
The gate and buffer soluction is very hard to manage, in fact every p&R can change your delay.
bye.
G.
 

Route your signal out and link it back will give u a fixed amount of delay.
 

for small delay u can use buffers and for long delay u can use counter or shift register

regards
Ashish
 

See page 6 on Xilinx's application note XAPP688. It's about building delay element using LUTs in FPGA.
 

If you want to know the delay of your design and know how a LUT for example introduce a delay you can not depend on synthesis results, you can use the post PAR behavoral model with the standard delay file to get an approximation of the estimated delay, any synthesis tool simply won't give the right results "I haven't use physical synthesis tools yet but I guess that it can give a better results"
 

Use a high frequency clock is the only way.
 

Another technique of introducing delay "if you are using a high end FPGA like Xilinx VirtexII pro" you can introduce the delay through the clock rather rathar than through the signal this is more advantageous because you can exactly fine tune the delay as required, this can be done using the DCM I believe that this is the most trustable solution. if you have a problem in interfacing between the two clock doamins then you should try to put a asynchrounous FIFO.

If the DCM is not available "like Virtex" then you can use two clock refrences as i/ps one delayed from each other by the required amount "try a PLL AD41 series "3 $" or 2 DDS 10 $", still you will have to manage the two clock domains interface "Asynchronous FIFO is just the most suitable solution usually"

thats all folks
 

The best way is to use FIFO and design it as a separat component and when instantiat it into your design instruct the synthesizer to "Not Optimize" theis component so it remains as it is keeping the equivalent number of clock cycles you want to delay.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top