微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 用FPGA实现均匀延迟线?

用FPGA实现均匀延迟线?

时间:10-02 整理:3721RD 点击:
我们做的项目是用FPGA实现时间测量,细测量部分得用到均匀的延迟线?(最好延迟在ns级以下),用buffer串等会被quartus综合掉,延迟极度不均匀?求各位大神指导一下,用哪些其他方法比较好?或者怎样改进?

我感觉有两个方法:
1、用fpga editor类的底层布局布线工具进行强制定位综合,即可得到固定延迟。
2、利用IO buffer里面的Idelay,Odelay一类功能,可以完成ns级延迟测量。

首先,在FPGA里手动加buffer很简单,在RTL里声明信号时加上KEEP注释即可,比如wire buf0 /*synthesis keep*/;
但是,Quartus的库是自带OCV(Quartus官方叫On-Die-Variation)的,换句话说,这个延迟时间是不准的(有相当大变化范围)。

我觉得这些延迟cell的delay本身就跟温度,电压有很大的关系。
不如用FPGA内部的PLL生成一个很高频(450MHZ-600HMZ)的始终去采样你的信号来进行时间的判断。因为PLL内部有反馈电路,所以cycle to cycle的偏移比较小。

路过,看一下



    请问fpga editor哪里有?我知道这个方法,但是不知道在哪里有这个东西。

个人不推荐fpga_editor的方法,因为你无法每次都用fpga_editor来得到同样的结果。由于每次都手动编辑布线网表,很难保证每次的delay都一样。如果不一样,那么设计又会出问题。所以这是不保险的。
当然,也许可以set place constraint来解决。不过难度还是偏大。
推荐用PAD的IDELAY和ODELAY的方式,将采样的寄存器放到I/O BUFFER内,然后调整IDELAY(输入采样)或者ODELAY(输出采样)。这个delay是可以在设计代码中调整的。比较方便。
当然,对于你的设计不是很了解,也许这个方法也不能用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top