在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2204|回复: 8

[求助] Xilinx FPGA Vivado 调试RGMII接口中 idelay 原语与set input deley概念的困惑与验证

[复制链接]
发表于 2024-3-12 15:53:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
Hi 朋友们,
调试FPGA 平台网卡RGMII接口RX部分,RX 信号分为两个部分, RX CLK及data(均由网卡发出).
FPGA接收端的data信号与时钟沿的时序,需保证足够的setup和hold时间.
按照网卡规格书的信息及我现在的理解,会把RX clk延迟一些(常规为2ns)再发出给FPGA,也就是相当于RX data提早了2ns. 如下图.
我尝试两种方法告知Vivado这个时序设置:
1.因为网卡Phy芯片可以直接delay 2ns再输出, 那么在Vivado时序约束中就应该设置set input delay , rx data相对于rx clk提前 到达2ns,所以是-2 ns.
  但是这种设置直接无法通过Timing check。按照Vivado检查的规则,似乎只要是rx data早于rx clk(负值),就不会通过holdtime check.(??)

  我尝试把rx data延迟2ns,时序检查及功能是正常的. 这是实验的结果, 暂时无法理解。
  我现在的理解仍然应该是如网卡规格书中所说,既然网卡的输出delay rx clk 2ns(在FPGA 外部已经实现), 那么我就应该在set input delay 设置rx data相对于rx clk提前,即负值.

2.在代码中使用idelay2 原语直接delay clk 2ns(取消上一步的input delay设置,假设phy芯片不做delay动作,由FPGA完成), 时序check的结果仍然如上不通过.

关于时序约束中set input delay,我的理解无法匹配实际验证测试的结果,应该是哪个概念或软件的设置理解错了,哪位有这方面的经验,可以指点提示一下吗.谢谢了
phy.png


发表于 2024-3-13 11:14:23 | 显示全部楼层
本帖最后由 a752109494 于 2024-3-13 11:15 编辑

1 phy内部在下升沿产生数据,rgmii是双沿采样,半个周期4ns,phy那边延迟2ns保证边沿位于数据中间;
2 FPGA在上升沿采样;
3 FPGA内部计算input delay应该是以clk上升沿来算,所以data延迟2ns;
发表于 2024-3-14 13:19:15 | 显示全部楼层
rgmii接口是源同步ddr吧,你的约束太怪了。为什么要加add_delay,并且没有max和min,看着都不是一个正常的sdr约束。
 楼主| 发表于 2024-3-15 19:59:44 | 显示全部楼层


a752109494 发表于 2024-3-13 11:14
1 phy内部在下升沿产生数据,rgmii是双沿采样,半个周期4ns,phy那边延迟2ns保证边沿位于数据中间;
2 FPGA ...


谢谢您的回复. 可以理解你的评论. 但是我查找RGMII的官方协议及PHY芯片的规格书,没有看到PHY 内部在下降沿产生数据的资料.
 楼主| 发表于 2024-3-15 20:02:14 | 显示全部楼层


拾冠 发表于 2024-3-14 13:19
rgmii接口是源同步ddr吧,你的约束太怪了。为什么要加add_delay,并且没有max和min,看着都不是一个正常的s ...


谢谢您的回复,加此delay的目的是 把PCB trace 和PHY 芯片的delay 信息全部告知FPGA,这样才会是完整的约束. 具体的语句我还在尝试中.
发表于 2024-3-18 09:58:19 | 显示全部楼层


矿工联盟盟主 发表于 2024-3-15 20:02
谢谢您的回复,加此delay的目的是 把PCB trace 和PHY 芯片的delay 信息全部告知FPGA,这样才会是完整的约 ...


我也没看到芯片手册上有说明,只不过一般来说,不会在同一个时钟沿输出和采样,这样接收端的建立保持时间满足不了
发表于 2024-3-19 16:32:06 | 显示全部楼层


矿工联盟盟主 发表于 2024-3-15 20:02
谢谢您的回复,加此delay的目的是 把PCB trace 和PHY 芯片的delay 信息全部告知FPGA,这样才会是完整的约 ...


xilinx论坛上那个问题应该是你问的?你的原本约束格式不对,并且可能没有理解约束的含义,input_delay是在描述外部进来的时钟和数据的状况,而不是对已经进入fpga内部的信号进行延迟。看那里的说明就行了。
 楼主| 发表于 2024-3-20 12:39:52 | 显示全部楼层


a752109494 发表于 2024-3-18 09:58
我也没看到芯片手册上有说明,只不过一般来说,不会在同一个时钟沿输出和采样,这样接收端的建立保持时间 ...


好的,理解您的说法,我们的信息是一致的
 楼主| 发表于 2024-3-20 12:51:04 | 显示全部楼层


拾冠 发表于 2024-3-19 16:32
xilinx论坛上那个问题应该是你问的?你的原本约束格式不对,并且可能没有理解约束的含义,input_delay是 ...


谢谢您的回复.

我没有混淆这个概念, 知道input delay是关于外部走线等延迟信息的. 我提到内部延迟是因为PHY的芯片方案允许用户选择两种方式,
方式一, 外部PHY 芯片先延迟后,再进入FPGA,此时已经是时钟对准数据中心. 按照你刚才也提到的概念,此种状况应该需要设置input delay 告知vivado, 这样的时序检查才是符合实际客观的和完整的.
方式二, 外部PHY 芯片不做任何延迟,直接进入FPGA,此时就需要FPGA内部去延迟,保证时序要求.

我是因为第一种情况, 没有成功设置约束语句, 才用尝试用第二种. 只是我尝试用了两种状况.
*当然也有人建议如果自己确认时序OK,就忽略input delay的设置, 就不用告诉Vivado了,我是觉得这样不太符合流程化设计的规则*
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-14 13:18 , Processed in 0.046233 second(s), 8 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表