FPGA源同步输出时序约束(二)

 

转自:https://blog.csdn.net/huan09900990/article/details/77050894

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huan09900990/article/details/77050894

FPGA源同步输出约束(一)主要是介绍了输出时钟的几种产生方式以及对应的约束指令,本节主要介绍源同步输出延迟的几种约束方法:(1)system-centric 以系统为中心进行约束 (2)FPGA-centric 以fpga为中心进行约束。以及输出最大最小延迟值的计算推导,最后用约束指令描述出来。下文是以从spec上得到fpga和外部器件的特性参数 进行约束,至于用示波器测量fpga时钟,数据输出端口延迟的方法暂时不做介绍。

1、system-centric 
该方法是将fpga部分和外部器件联合起来构成一个系统 进行时序约束分析,其特点是要用到外部器件的一些参数 比如tco,tsu,th 或fpga 到外部器件间的时钟,数据走线延迟 。所以如果选用该方法时,你需要知道外部器件的参数。 
(1)用外部器件的tsu ,th和时钟,数据的走线延迟 来进行输出最大最小延迟约束 
—-输出最大延迟约束:即数据路径的最大延迟+时钟路径的最小延迟+外部器件的tsu 
FPGA源同步输出时序约束(二) 
对于源同步SDR输出约束指令如下: 
output_clock:即 源同步的输出时钟 
data_out*: 即源同步输出的数据 
FPGA源同步输出时序约束(二) 
对于源同步DDR输出,其上升下降沿都需要约束,约束指令如下: 
FPGA源同步输出时序约束(二)

—-输出最小延迟约束:即数据路径的最小延迟+时钟路径的最大延迟-外部器件的th 
FPGA源同步输出时序约束(二) 
对于源同步SDR输出约束指令如下: 
FPGA源同步输出时序约束(二) 
对于源同步DDR输出,其上升下降沿都需要约束,约束指令如下: 
FPGA源同步输出时序约束(二)

2、FPGA-centric 
该方法是以fpga为中心,进行源同步输出延迟约束。fpga-centric是根据输出时钟和数据间的一个时钟偏斜去进行输出约束的。时钟偏斜等于时钟沿和数据沿之间的时间差,对于时钟数据边沿对齐接口 时钟偏斜等于0;对于时钟数据中心对齐,时钟偏斜等于UI/2。SDR接口UI等于时钟周期,DDR接口UI=时钟周期/2。 
用FPGA-centric进行约束,你只需要知道fpga的输出时钟和数据间的偏斜值tskew就能进行输出约束。下面是我查找到的 altera cyclone v 芯片datasheet上给出RGMII接口的输出时钟和数据间的偏斜值。 
FPGA源同步输出时序约束(二)
fpga-centric方法 即 时钟 数据时序要满足下面的公式: 
FPGA源同步输出时序约束(二) 
数据的最早到达时间必须比时钟到达时间-skew 大,否则不能满足外部器件的th保持时间。 
数据的最晚到达时间必须比时钟到达时间+skew 小 ,否则不能满足外部器件的tsu建立时间。

时钟和数据间到达外部器件的时间关系如下图所示: 
FPGA源同步输出时序约束(二) 
(1) 根据时钟数据间的建立保持关系进行源同步输出时序约束 
根据建立关系对输出最大延迟进行时序约束 
根据Equation 3 ,数据的最晚到达时间(data arrival +skew)必须比数据需求时间(clock arrival) 小 ,否则不能满足外部器件的tsu建立时间,下面是数据到达时间和数据需求时间的计算器公式。 
FPGA源同步输出时序约束(二) 
根据时钟数据满足建立时间正裕量,如下 
FPGA源同步输出时序约束(二) 
在源同步电路中,要求数据到达时间跟时钟到达时间一致,所以根据此把Equation6 进行简化得到下面Equation7的公式1以及输出最大延迟值计算公式2 
FPGA源同步输出时序约束(二) 
对于源同步SDR输出约束指令如下: 
FPGA源同步输出时序约束(二) 
对于源同步DDR输出,其上升下降沿都需要约束,约束指令如下: 
FPGA源同步输出时序约束(二)

根据保持关系对输出最小延迟进行时序约束

根据Equation 3 ,数据的最早到达时间(data arrival -skew)必须比数据需求时间(clock arrival) 大 ,否则不能满足外部器件的th保持时间,下面是数据到达时间和数据需求时间的计算器公式。 
FPGA源同步输出时序约束(二)

下面是将Equation8,9的数据到达时间和数据需求时间代入后的公式 
FPGA源同步输出时序约束(二)

同样根据在源同步电路中,要求数据到达时间跟时钟到达时间一致,所以根据此把Equation10进行简化得到下面Equation11的公式1以及输出最小延迟值计算公式2,这里的latch和launch 是保持的latch 和launch。 
FPGA源同步输出时序约束(二) 
对于源同步SDR输出约束指令如下: 
FPGA源同步输出时序约束(二) 
对于源同步DDR输出,其上升下降沿都需要约束,约束指令如下: 
FPGA源同步输出时序约束(二) 
(2)用early and late margins进行约束 
early margin等于minimum tco,late margin等于miximum tco。 
—-时钟数据中心对齐的DDR接口,进行时序最大最小延迟值的公式推导。 
FPGA源同步输出时序约束(二) 
输出最大最小延迟值推导如下: 
FPGA源同步输出时序约束(二) 
FPGA源同步输出时序约束(二)

下面的这4中数据时钟输出形式,只需要把上面公式里的clock offset,unit interval 替换成对应的值就可以了。 
—-时钟数据边沿对齐的SDR接口,进行时序分析约束。 
时钟数据的输出相位如下图所示,此时clock offset为0 ,UI等于时钟周期: 
FPGA源同步输出时序约束(二)

—-时钟数据中心对齐的SDR接口,进行时序分析约束。 
时钟数据的输出相位如下图所示,此时clock offset为时钟周期/2 ,UI等于时钟周期: 
FPGA源同步输出时序约束(二) 
—-时钟数据边沿对齐的DDR接口,进行时序分析约束。 
时钟数据的输出相位如下图所示,此时clock offset为0 ,UI等于时钟周期/2: 
FPGA源同步输出时序约束(二) 
—-时钟数据中心对齐的DDR接口,进行时序分析约束。 
时钟数据的输出相位如下图所示,此时clock offset为时钟周期/4 ,UI等于时钟周期/2: 
FPGA源同步输出时序约束(二)