发 帖  
原厂入驻New
[问答] 所有输入之间的时钟偏差/相位延迟方面会产生什么结果?
37 xilinx FPGA
分享
嗨,我以前在这里发布过这条消息,但是被标记为“已解决”,我不确定是否有人阅读过它。
另外我想使用7系列FPGA,所以我把它移到了这里。
我需要测量光脉冲的TOF(飞行时间)。
基本上我需要计算一个开始触发信号和一个接收数字脉冲之间的时间,分辨率为1 ns。但是我没有一个输入脉冲,而是64个。
我(非常没有受过教育)的第一次尝试是生成一个内部500 MHz时钟,并将每个输入馈送到配置为DDR的IserdesE2,除以8,NETWORKING模式。
然后我将内部逻辑“仅”运行在125 MHz,这似乎更易于管理。
我不太确定的是通过所有ISERDES的500 MHz时钟路由。
在所有输入之间的时钟偏差/相位延迟方面会产生什么结果?
换句话说,假设输入全部切换到完全相同的时间,这将是所有测量的TOF值之间的差异?
我还为每个SERDES使用BUFMR和一对BUFR / BUFIO为Artix 7编写了一些VHDL测试代码,以便执行一些时序分析。
不幸的是,似乎Vivado在我的机器上不起作用,所以现在我运气不好。
也许你可以同时给我一些提示或建议。
谢谢!
0
2020-8-14 09:11:32   评论 分享淘帖 邀请回答

相关问题

5个回答
所以,首先,在架构上,我们只需要清楚BUFMR / BUFIO / BUFR连接如何工作......
由于您有64个输入(您没有指定它们是差分还是单端),因此您需要至少2或3组I / O才能获得所需的宽度。
您需要(并且应该只使用)每个银行一个BUFIO / BUFR对。
每个BUFIO必须只驱动(和所有)该组中的ISERDES,并且BUFR也是如此,它为SERDES的低速侧和所有相关逻辑提供时钟。
这可能是一种痛苦,因为你需要保持逻辑在3个BUFR的125MHz域上运行;
您使用哪个BUFR域确定相关逻辑必须在哪个时钟区域。您还必须使用UG472附录A中描述的BUFR对齐机制。
BUFMR可以将单个MRCC引脚分配到同一个存储区中的BUFIO / BUFR对以及上面的存储区和下面的存储区;
换句话说,所有引脚必须在3 I / O存储区范围内,并且必须使用中间存储区的MRCC作为时钟。
鉴于此,时钟的偏差将非常紧张。
查看表36中的Artix-7数据表,它显示BUFIO网络在一个时钟区域内的偏差为30ps(与I / O bank相同) - 尽管占空比失真为140ps,这将影响您的
DDR样本。
似乎没有关于BUFMR或BUFIO在3个区域的偏差的任何信息(这实际上是相同的),但BUFMR的整个目的是将MRCC源分配给BUFIO / BUFR对。
尽量少歪斜;
每个库中有4个BUFIO / BUFR对,BUFMR总共有24个负载(在芯片上的3个地理位置) - 人们会认为Xilinx在这些偏差匹配方面表现相当不错。
虽然它肯定比30ps差,但我猜它不会更糟 - 如果你想要悲观,你可以为BUFIO和BUFMR假设150ps这样的东西(直到你可以从工具获得更准确的计时结果
)...
Avrum
2020-8-14 09:19:13 评论

举报

也许这是一个愚蠢的问题,但您是否考虑过以不同的方式解决未知偏斜,可能是通过表征校准步骤中的延迟,然后从最终测量值中减去校准值?
这将要求您的64个输入可在其正常输入和校准信号之间切换(在PCB上)。
经常做,你也可以校准温度漂移。
艾伦。
2020-8-14 09:28:16 评论

举报

@avrumw:谢谢!
现在我已经设法使Vivado工作,我做了一些测试。
我让Vivado自己分配引脚,它似乎正确编译。
我对Vivado完全不熟悉所以需要一些时间来理解。
我有很多失败的时序限制,但我甚至不确定我是否正确设置它们(例如我不知道为什么Vivado创建了“虚拟”时钟,这似乎是实际时钟的重复)。
此外,我还没有设置引脚输入类型。
脉冲输入可能是差分LVPECL,因此这应该对传播延迟进行一些改进。
@allanherriman:这对实施来说可能是一个好主意。
目前我还处于可行性阶段,我只需要了解这是否可行。
我已经附上了这个项目。
任何提示或建议将不胜感激。
谢谢!
L.
serdes_test.zip 1257 KB
2020-8-14 09:40:58 评论

举报

如果你想了解时序约束(特别是虚拟时钟),请看一下这篇关于限制源同步边沿对齐DDR接口的文章。
它解释了这个界面在其所有血腥细节中的限制!
话虽这么说,这个界面的时间限制将是无关紧要的。
您正在使用它来对异步输入进行采样 - 根据定义,没有有意义的时序约束来应用于此接口。
此外,即使您正在处理同步输入,也无法使此接口通过 - 1ns(这是采样器的单位间隔)对于同步捕获来说太快了。
因此,您必须处理输入的结果采样可能变为亚稳态的可能性。
如果ISERDES变成亚稳态,我不知道会发生什么。
行为将取决于ISERDES如何在内部实施。
至少你应该假设ISERDES的输出可以是亚稳态的;
在所有ISERDES输出上放置(至少)2个背靠背触发器,并将ASYNC_REG属性放在它们上面。
但即便如此,您可能会得到“奇怪”的结果 - 您甚至可能会在低速数据上获得“不洁”的转换(如上升边缘的00001011111 ......)
Avrum
2020-8-14 10:00:02 评论

举报

谢谢!
亚稳态问题让我感到担忧。
注册SERDES的输出可能没有多大帮助:当数据移出时,位翻转已经“冻结”到8位序列中。
如果状态在下一个位内稳定将不会是一个大问题,但考虑到亚稳态的统计性质,我想我不能排除存在持续两个,三个或更多位的事件。
我记得有关亚稳态的旧Xilinx文件(我认为它仍然适用于古老的4000系列);
阅读其他线程似乎可以获得Series 7系列的亚稳态MTBF数据但受限制,您需要直接向Xilinx分销商询问。
所有这些误差源(亚稳态,传播延迟,时钟抖动,占空比失真......)都可能会为采集增加一些严重的噪声。
我认为唯一可能的做法是用现实世界的测量来构建物体和表征噪声。
谢谢!
L.
2020-8-14 10:17:15 评论

举报

只有小组成员才能发言,加入小组>>

105个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /8 下一条

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