【 Vivado 】输出延迟约束实例

举报
李锐博恩 发表于 2021/07/15 04:55:51 2021/07/15
【摘要】 Output Delay Constraints Instance 本节讲解一下output delay的实例。依旧是Ethernet PHY和FPGA的接口,框图如图1所示,其中TX接口,MII管理接口输出方向需要output delay约束。 图1 TX接口: TX接口由时钟TXCK和数据TXD[3:0]组成,都是从FPGA输出,即时钟和数据同源,因此TX接口为...

Output Delay Constraints Instance

本节讲解一下output delay的实例。依旧是Ethernet PHY和FPGA的接口,框图如图1所示,其中TX接口,MII管理接口输出方向需要output delay约束。

图1

  1. TX接口:

TX接口由时钟TXCK和数据TXD[3:0]组成,都是从FPGA输出,即时钟和数据同源,因此TX接口为源同步输出接口。

       根据上节中output delay value的计算公式:

       max_input_delay = Tbd_max + Tsetup - Tcd_min

       min_input_delay = Tbd_min – Thold - Tcd_max

       其中有4个时间参数:Tbd,Tcd,Tsetup和Thold,如图2所示。

图2

Tcd和Tbd分别是时钟TXCK和数据TXD[3:0]在板上的延时。首先通过PCB设计软件计算得到它们布线长度:LTXCK=784mil,LTXD[3]=663mil,LTXD[2]=680mil,LTXD[1]=852mil,LTXD[0]=901mil,因此计算得到:

Tcd_max= Tcd_min=784mil*166ps/inch= 0.130144n

Tbd_max=901mil*166ps/inch= 0.149566ns

Tbd_min=663mil*166ps/inch=0.110058ns

Tsetup和Thold是PHY(DP83849ID)芯片的时间参数,如图3所示,查询datasheet得到:

参考时间参数T2.4.2,Tsetup=10ns

 参考时间参数T2.4.3,Thold=0ns

图3

综上可得到output delay value

max_output_delay = Tbd_max + Tsetup - Tcd_min=0.149566ns

+ 10ns - 0.130144ns=10.019422ns

min_output_delay = Tbd_min – Thold - Tcd_max=0.110058ns

– 0ns - 0.130144ns=-0.020086ns

可能有些人会诧异,为什么min_output_delay的值会是负的?负的表示相对于输出是反方向的延时。

下面对TX接口的output delay进行约束:

create_clock -nameTXCK -period 40 -waveform {0 20} [get_ports {TXCK}]

create_clock -nameTXCK_PHY -period 40 -waveform {0 20}

set_output_delay –clock TXCK_PHY -max 10.019422 [get_ports {TXD[3] TXD[2] TXD[1] TXD[0]}]

set_output_delay –clock TXCK_PHY -min -0.020086ns [get_ports {TXD[3] TXD[2] TXD[1] TXD[0]}]

Vivado中约束如下图所示:

约束主时钟

约束虚拟时钟

约束min output delay

约束max output delay

  1. MII管理接口:

MII管理接口由时钟MDC和数据MDIO组成,其中MDIO为双向接口,因此需要对其进行input delay和output delay约束。在其output方向,MDC和MDIO都是从FPGA输出的,因此也是源同步输出接口。

时间参数的计算与TX接口类似,如图4所示

图4

其中MDC和MDIO在板上的布线长度分别为LMDC=924mil,LMDIO=587mil,可得:

Tcd_max= Tcd_min=924mil*166ps/inch= 0.153384ns

Tbd_max=Tbd_min=587mil*166ps/inch=0.097442ns

Tsetup和Thold的值参考datasheet,如图5所示,可得:

参考时间参数T2.3.2,Tsetup=10ns

参考时间参数T2.3.3,Thold=10ns

图5

       综上可得到output delay value

max_output_delay = Tbd_max + Tsetup - Tcd_min=0.153384ns + 10ns

- 0.097442ns=10.055942ns

       min_output_delay = Tbd_min – Thold - Tcd_max=0.153384ns - 10ns - 0.097442ns=-9.944058ns

       下面对MII管理接口的output delay进行约束:

create_clock -nameMDC -period 400 -waveform {0 200} [get_ports {MDC}]

create_clock -nameMDC_PHY -period 400 -waveform {0 200}

set_output_delay –clock MDC_PHY -max 10.055942 [get_ports {MDIO}]

set_output_delay –clock MDC_PHY -min -9.944058 [get_ports {MDIO}]

Vivado中约束如下图所示:

约束主时钟

约束虚拟时钟

约束max output delay

约束min output delay

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/85308042

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。