热度 21
2014-4-13 12:53
2934 次阅读|
0 个评论
在《 5. Constraining Input Delay 》博文中,深入讲解了如何分析输入端口到 FPGA 内部时序单元的路径,并且对 input delay 进行约束。这一节介绍 input delay 约束实例,加深一下对上节中理论的理解。 如图 1 所示系统,以太网 PHY 芯片与 FPGA 相连,分为三组接口: RX 接口:时钟 RXCK 和数据 RXD ; TX 接口:时钟 TXCK 和数据 TXD ; MII 管理接口:时钟 MDC 和数据 MDIO 。 图 1 其中 RX 接口属于源同步输入接口,以下就以 RX 接口为例讲解一下约束 input delay : Clock Constraints : 首先约束时钟,如图 2 所示为 PHY ( DP83849ID )在 100Mb/s 模式下的时序图,时钟和数据为 Center Aligned 关系,因此时钟在 FPGA 中无需再移相,可直接使用 RXCK 采集数据,时钟约束如下: create_clock –name RXCK –period 40 –waveform {0 20} 图 2 Input Delay Value: 根据上节中源同步输入计算 Input Delay 的公式: max_input_delay = T bd_max + T co_max - T cd_min min_input_delay = T bd_min + T co_min - T cd_max T bd 为数据线 RXD 在板上的延时,也就是信号在电路板上的传播时间。查找了网上的一些资料: “ 信号速度还与不同材料的介电常数相关,具体计算公式是 V=C/Er 0.5 ,其中 Er 是信号线周围材料的相对介电常数。我们常见的 PCB 材料 Fr4 的介电常数在 4.2-4.5 左右,为了计算方便我们取 4 。带入公式可以算出, Fr4 材料制作的 PCB 板上面信号的传输速度是光速的二分之一。光速大约等于 12inch/ns, 计算得出 Fr4 板上信号速度大约是 6inch/ns 。换算成延时,也就是 166ps/inch 。这就是我们经常说的 PCB 板上信号延时大约是 166ps/inch 。 ” 在此例中,通过 PCB 设计软件计算得到 RXD 的走线长度,分别是 L RXD =426mil , L RXD =451mil , L RXD =502mil , L RXD =406mil ,因此可以计算得到: T bd_max = 502mil * 166ps/inch = 0.083332ns T bd_min = 406mil * 166ps/inch = 0.067396ns T cd 为时钟线 RXCK 在板上的延时,走线长度 L RXCK =399mil ,因此可以计算得到: T cd_max =T cd_min =399mil * 166ps/inch = 0.066234ns T co 为 RX 接口 clock_to_output 时间,如图 2 中,等于 T2.5.2 时间参数,因此可得到: T co_max = 30ns T co_min = 10ns 综上: max_input_delay = T bd_max + T co_max - T cd_min = 0.083332ns + 30ns - 0.066234ns = 30.017098ns min_input_delay = T bd_min + T co_min - T cd_max = 0.067396ns + 10ns - 0.066234ns = 10.001162ns Constraints : 很显然, RX 接口为 SDR ,时钟约束和 input delay 值的计算后,可以对 input delay 进行约束,命令如下: set_input_delay -clock -max 30.017098 RXD RXD RXD }] set_input_delay -clock -min 10.001162 RXD RXD RXD }] 在 Vivado 的 GUI 界面中也可以进行约束,设计经过综合实现后,打开编辑约束文件,如图 3 所示 图 3 选择 Set Input Delay ,在右侧双击,可弹出 Input Delay 设置窗口,如图 4 所示 图 4 在弹出的 Input Delay 窗口中设置参数,如图 5 , 6 所示, Input Delay 约束完成。 图 5 图 6