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

在FPGA内手动做Delay

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
, @3 i* I! I' T) n% c% x3 ]  V7 c
1. 确定要delay的信号是时钟信号还是数据信号。0 N# n( M( n) H3 g
如果是free running的时钟信号,频率在DCM操作范围之内,要记得使用DCM做Phase Shift。/ W6 \  Q7 c) c: U2 B! S% F
. |3 M5 @/ O2 k6 v) O- ~7 r1 A; d
2. 如果是V5,可以用ODELAY
- o- d  M$ V7 w
- e. C5 Q0 S2 p$ U3. 如果有一个快速的时钟,而要做一个大于一个时钟的delay,那么可以用shift register。SRL16可以将一个LUT当16个Shift register使。$ g" e; Y6 W0 {
" a1 O! l# }' y! G3 ]
4. 如果以上条件都不满足,就只好用LUT搭延时链了。
% P& Q) l' ^8 J2 b如果不要求动态改变延时长度,那么就多次使用这样的LUT:
0 H3 W3 B7 B$ b/ p% t引用% c8 Q1 M+ k( m2 t
  LUT4 delay( .I0(1'b1), .I1(1'b1), .I2(1'b1), .I3(clk_in), .O(delay1) );                                    # E: |) W( F0 [/ _& R
  defparam    delay.INIT = 16'hff00;              8 N! ?3 w% }1 \+ T; ]7 B5 F1 p
  // synthesis attribute INIT of delay is "ff00";    & y! h  k$ x0 f: u8 H
" m. I7 w# o# `( `/ E
8 Y! Q! K3 ?9 z: \
引用
4 q8 D3 q% A: r3 E0 k5 }: L  LUT4_u0 : LUT4
& e% a; F% |) G+ O$ q  generic map (; e' g: d! {( [! u9 ]
     INIT => X"ff00"); U8 e' [/ e* D
  port map (
% E% m3 R0 X9 F" b8 o     O => delay_out,   -- LUT general output4 N# @+ Y; [" Q# Q7 x% b6 t
     I0 => '0', -- LUT input
5 E- [# H1 i6 G9 w; z" r, Z     I1 => '0', -- LUT input0 L. B& t1 Q8 @9 h4 |, p
     I2 => '0', -- LUT input
! h* S. Q8 k: `7 W) A. L' B     I3 => delay_in  -- LUT input
9 ]5 Y3 W8 h: m3 W% G7 v1 O& S- t  );8 c4 c  S% E* C( S7 N

3 |  \% N4 u8 T- e
5 Y& S: ~  ~  f9 \( f9 g) ~! @
( r. [/ H! w  P3 W5 j% t2 r如果要求能动态改变延时长度,可以用这个代码
4 n0 H9 l0 K% v- w/ o7 V3 _( {. I) b

cq_delay.zip

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

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-10 01:37 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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