原创 【博客大赛】9.Output Delay Constraints实例(Timing Constraints in Vivado)

2014-4-22 11:00 2624 21 21 分类: FPGA/CPLD 文集: Timing Constraints in Vivado

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

20140422105438288001.jpg

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个时间参数:TbdTcdTsetupThold,如图2所示。

20140422105443402002.jpg

2

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

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

      Tbd_max=901mil*166ps/inch=0.149566ns Tbd_min=663mil*166ps/inch=0.110058ns

 

       TsetupTholdPHYDP83849ID)芯片的时间参数,如图3所示,查询datasheet得到:

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

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

20140422105450367003.jpg

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 -name TXCK -period 40 -waveform {0 20} [get_ports {TXCK}]

create_clock -name TXCK_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中约束如下图所示:

20140422105459174004.jpg

约束主时钟

20140422105508793005.jpg

约束虚拟时钟

20140422105519124006.jpg

约束min output delay

20140422105528751007.jpg

约束max output delay

 

MII管理接口:

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

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

20140422105536737008.jpg

4

       其中MDCMDIO在板上的布线长度分别为LMDC=924milLMDIO=587mil,可得:

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

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

       TsetupThold的值参考datasheet,如图5所示,可得:

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

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

20140422105543694009.jpg

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 -name MDC -period 400 -waveform {0 200} [get_ports {MDC}]

create_clock -name MDC_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中约束如下图所示:

20140422105553989010.jpg

约束主时钟

20140422105603213011.jpg

约束虚拟时钟

20140422105613845012.jpg

约束max output delay

20140422105622768013.jpg

约束min output delay

文章评论0条评论)

登录后参与讨论
我要评论
0
21
关闭 站长推荐上一条 /2 下一条