找回密码
 注册
关于网站域名变更的通知
查看: 602|回复: 1
打印 上一主题 下一主题

在FPGA内手动做Delay

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-6-12 11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

- D" q1 j$ H2 C" ]( d1. 确定要delay的信号是时钟信号还是数据信号。( ~" L" h7 ]" ^* \2 ?; J
如果是free running的时钟信号,频率在DCM操作范围之内,要记得使用DCM做Phase Shift。6 Z1 L- c7 D4 ]& v: e0 u

1 t( Z  G3 a2 F2. 如果是V5,可以用ODELAY
9 P3 a2 R8 r8 L9 w
9 l3 \! l( @2 r' x  E5 [, v$ n3. 如果有一个快速的时钟,而要做一个大于一个时钟的delay,那么可以用shift register。SRL16可以将一个LUT当16个Shift register使。
4 J; t% R# S4 x: k0 U3 o6 N, u3 K' |. E
4. 如果以上条件都不满足,就只好用LUT搭延时链了。/ Y/ j9 r; L' }
如果不要求动态改变延时长度,那么就多次使用这样的LUT:
: {1 N, V8 O& h# }+ L引用2 Q! |/ f% [) H' K% H( V) [
  LUT4 delay( .I0(1'b1), .I1(1'b1), .I2(1'b1), .I3(clk_in), .O(delay1) );                                    & t" K6 D+ n2 U- U, N
  defparam    delay.INIT = 16'hff00;              
; \8 s3 I- d. ^. I9 d6 g; P: g  // synthesis attribute INIT of delay is "ff00";   
1 P4 h7 d9 H2 f. H* w  {3 [  n" w# @$ T+ Z5 J

1 ~3 X# i  d5 _1 D8 q, O, \引用3 v. d0 G7 i( `& X% b& ~1 }+ Y
  LUT4_u0 : LUT4" u$ f7 q+ M5 _# |% n! R
  generic map (, s% O2 H2 d! A( x
     INIT => X"ff00")
, F% H. m% h/ f  port map (2 v1 V$ J1 W" d
     O => delay_out,   -- LUT general output
8 |' x5 ]6 C$ H( b; f     I0 => '0', -- LUT input- n. w" O; Y  Z3 T8 u/ x0 u) z9 `4 N* k
     I1 => '0', -- LUT input
3 v9 g% D8 u- {7 S1 ?( r! f     I2 => '0', -- LUT input
, L+ C) G2 y7 k0 k$ {, y     I3 => delay_in  -- LUT input; R! r1 J! w- A+ J# K9 G" g
  );3 @% T: V- X3 R0 l5 Y$ u
8 n" K- L5 u" _" Z

. I- P! f' c! y4 V) o0 I( w( F+ Y% X
如果要求能动态改变延时长度,可以用这个代码; w! V+ {( Y. Y" R/ A; }

cq_delay.zip

1.49 KB, 下载次数: 0, 下载积分: 威望 -5

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 19:33 , Processed in 0.171875 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表