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

在FPGA内手动做Delay

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
2 `* P+ w9 I4 K% D
1. 确定要delay的信号是时钟信号还是数据信号。( g9 m. M& y9 i; M0 s
如果是free running的时钟信号,频率在DCM操作范围之内,要记得使用DCM做Phase Shift。6 ^# w6 n8 V  Q
+ ?6 Z' _. I$ M( R
2. 如果是V5,可以用ODELAY
: t# |. a7 f- Y& h! Y! l
  H2 q% G( q2 L3 I9 o% p+ v3. 如果有一个快速的时钟,而要做一个大于一个时钟的delay,那么可以用shift register。SRL16可以将一个LUT当16个Shift register使。
: H) \9 c! `0 {2 o4 O
/ J$ ?: _: g; j! |4. 如果以上条件都不满足,就只好用LUT搭延时链了。
/ T8 i. V) O) Y4 j" s% b如果不要求动态改变延时长度,那么就多次使用这样的LUT:
& w. P- T9 r) J4 K; P引用
8 H) ]( o' b3 Q& I4 r9 X  LUT4 delay( .I0(1'b1), .I1(1'b1), .I2(1'b1), .I3(clk_in), .O(delay1) );                                    " e5 M/ ~; l/ d9 ]3 F3 A, K
  defparam    delay.INIT = 16'hff00;              ( ~7 N- |- O" s- d9 G
  // synthesis attribute INIT of delay is "ff00";    / Y" O3 N3 O: |

+ Z$ x4 b$ f- V* y( K4 ~* v' w) ~9 C7 Z+ A8 I7 [9 d
引用9 l$ q) G  O! H: B) e; C4 c
  LUT4_u0 : LUT4
. S9 L# ^. q6 l0 l! _  generic map (
* G& H% N3 U0 D     INIT => X"ff00")
% G3 ^) q5 Z! n: m  W  port map (' `4 X6 `0 h( w, I, v: `" |
     O => delay_out,   -- LUT general output
, R1 R: o0 @: [) T     I0 => '0', -- LUT input
: J4 L% r% \" @' ]$ f     I1 => '0', -- LUT input
* A. X0 S7 z- V0 {' l. y7 J     I2 => '0', -- LUT input: K" w/ `9 E7 y( c0 E
     I3 => delay_in  -- LUT input5 {2 `% m% |3 c8 C8 B7 t
  );
5 m. S9 i1 C9 {: p) j4 T: c+ ^  \8 {6 c: n$ x5 a* p! M

" Z4 j2 K. U: R; }$ i( L5 T% r, ?0 I) U/ T+ u
如果要求能动态改变延时长度,可以用这个代码
& H* C6 V) ^" Z* x; S% i0 q

cq_delay.zip

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

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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