一.非阻塞賦值延時(shí)打拍
always@ (posedge clk) begind1<= d;d2?<=?d1;? ? ? ....... ? ? ?dout <=?dn;end
本質(zhì)上就是對(duì)數(shù)據(jù)進(jìn)行多級(jí)寄存器緩存,延遲時(shí)間以clk的一個(gè)周期為單位,消耗的就是寄存器。比較適合延遲固定周期以及延遲周期比較短的情況。
缺點(diǎn):延遲時(shí)間不方便控制,不適合延遲時(shí)間比較長的情況。
二、移位寄存器延時(shí)
reg [data_width*delay_width-1:00] data_r=0;always@ (posedgeclk)begin data_r <= {data_r[data_width*(delay_width-1)-1:0],data_in};endassign?data_out=data_r[camera_trig_delay_time];
這種方法利用的是移位寄存器的方法,用的是SLICEM資源。SLICEM可以在不使用觸發(fā)器的條件下配置為32位移位寄存器(注意:只能左移)。這樣,每個(gè)LUT可以將串行數(shù)據(jù)延遲1到32個(gè)時(shí)鐘周期。移位輸入D(LUT DI1腳)和移位輸出Q31(LUT MC31腳)可以進(jìn)行級(jí)聯(lián),以形成更大的移位寄存器,達(dá)到更大的延遲效果。這種方法延遲的時(shí)間可配置性也比較高。
缺點(diǎn):占用的資源比較多。尤其當(dāng)延遲的數(shù)量級(jí)較大時(shí),拼接的位移寄器是有個(gè)數(shù)限制的,如下圖則是當(dāng)延遲時(shí)間設(shè)置比較久的時(shí)候vivado報(bào)錯(cuò)的截圖。

三、計(jì)數(shù)器實(shí)現(xiàn)任意周期延時(shí)
這種資源消耗率較低,延遲周期也比較靈活。
parameterdelay_per =8'h4;//延時(shí)周期數(shù)regflag;reg[7:0] delay_count; always@(posedgeclkornegedgerst_n)beginif(!rst_n)begin flag <=?0; ? ? ? ?endelseif(in1)begin? ? ? ? ?flag <=?1; ? ? ? ?endelseif(delay_count == delay_per)begin? ? ? ? ?flag <=?0; ? ? ? ?endendalways?@(posedge?clk?ornegedge?rst_n)?beginif(!rst_n)begin? ? ? ? ?delay_count <=?0; ? ? ? ? out1 <=?0; ? ? ? ?endelseif(delay_count == delay_per && flag ==?1'b1)begin? ? ? ? ?delay_count <=?0; ? ? ? ? out1 <=?1; ? ? ? ?endelseif(flag ==?1'b1)begin? ? ? ? ?delay_count <= delay_count +?1'b1; ? ? ? ? out1 <=?0; ? ? ? ?endelsebegin? ? ? ? ?delay_count <=?0; ? ? ? ? out1 <=?0; ? ?endend
這種實(shí)現(xiàn)方式比較多,這里摘錄了網(wǎng)上的代碼。這種方法下,延遲的時(shí)間必須小于信號(hào)的間隔。因?yàn)槿绻舆t時(shí)間大于了信號(hào)間隔,就會(huì)丟掉信號(hào)。
缺點(diǎn):.延遲時(shí)間必須小于信號(hào)間隔。
四、大容量存儲(chǔ)
對(duì)于比較大時(shí)間的延遲,可以用RAM或者fifo或者DDR這種存儲(chǔ)介質(zhì)進(jìn)行緩存延遲
-
FPGA
+關(guān)注
關(guān)注
1650文章
22224瀏覽量
628221 -
寄存器
+關(guān)注
關(guān)注
31文章
5505瀏覽量
128405 -
計(jì)數(shù)器
+關(guān)注
關(guān)注
32文章
2304瀏覽量
97351
原文標(biāo)題:FPGA中數(shù)據(jù)延遲方案匯總
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
無線模塊通信中的數(shù)據(jù)延遲
使用通信中的無線模塊的數(shù)據(jù)延遲
使用通信中的無線模塊的數(shù)據(jù)延遲
FPGA使用ddio方式送數(shù)據(jù)給AD9957發(fā)現(xiàn)FPGA送數(shù)據(jù)的延遲較大
如何在FPGA中實(shí)現(xiàn)選定信號(hào)的準(zhǔn)確延遲
一種基于FPGA和DSP的高速數(shù)據(jù)采集設(shè)計(jì)方案介紹
PCIE高速傳輸解決方案FPGA技術(shù)XILINX官方XDMA驅(qū)動(dòng)
請(qǐng)問大神FPGA延遲控制用多少個(gè)bit可以達(dá)到輸出給DAC的是2路250M的數(shù)據(jù)?
FPGA的多路可控脈沖延遲系統(tǒng)設(shè)計(jì)
低成本FPGA中實(shí)現(xiàn)動(dòng)態(tài)相位調(diào)整方案
通過高性能FPGA搭建的客制硬體,更大幅縮短往返交易延遲
在FPGA高速AD采集設(shè)計(jì)中的PCB布線解決方案淺析
Xilinx Vivado I/O延遲約束介紹
FPGA學(xué)習(xí)-IO延遲的約束方法
集成電源解決方案-Altera FPGA應(yīng)用介紹

FPGA中數(shù)據(jù)延遲方案介紹
評(píng)論