1 建立时间
在时序分析基础一里面有建立时间时指采样沿与数据开始的时间差。下面我们分析一下在实际情况中的建立时间。
2 路径中的实际延迟考虑
由图可以看出,在实际电路中,时钟路径的延迟由
T
c
l
k
1
T_{clk1}
Tclk1与
T
c
l
k
2
T_{clk2}
Tclk2 。而数据路径的延迟有
T
c
o
T_{co}
Tco、
T
d
a
t
a
T_{data}
Tdata、
T
s
u
/
T
h
T_{su}/T_h
Tsu/Th。它们分别代表的含义如下:
(1)
T
c
l
k
1
T_{clk1}
Tclk1:指的是专用时钟管脚到寄存器reg1的延时。
(2)
T
c
l
k
2
T_{clk2}
Tclk2:指的是专用时钟管脚到寄存器reg2的延时。
上面两个时钟延时很小,因为它在FPGA中有专门的全局时钟网络走线,确保时钟到达每个寄存器之间的时间尽量保持一致,减小时钟偏斜。时钟在节点扇出到各个寄存器中。
时钟偏斜:描述的是源端寄存器与目的端寄存器之间的这个时钟的延时差
(3)
T
d
a
t
a
T_{data}
Tdata:既表示数据传输路径的延时,也表示数据在寄存器之间的组合逻辑延时(如加减与或非等)。
(4)
T
c
o
T_{co}
Tco:时钟到来后,数据由D端到达Q端的时间。
以上的两个时间则是数据的传输延迟,其中
T
c
o
T_{co}
Tco是寄存器的内部延迟,这个与所选的FPGA器件有关,而
T
d
a
t
a
T_{data}
Tdata则是与布局布线以及FPGA的代码有关。FPGA中的资源所用越多,布局布线越困难,传输路径的延迟就越大;FPGA代码中的寄存器与寄存器之间的组合逻辑越多,组合逻辑所耗费的延时就越长。
(5)
T
s
u
T_{su}
Tsu:建立时间门限,采样沿到来之前数据需要稳定的最小时间。
(6)
T
h
T_{h}
Th:保持时间门限,采样沿到来之后数据需要稳定的最小时间。
建立时间门限以及保持时间门限都是为了保证数据采集的有效。数据要在采样时钟来之前保持一段时间,来保证数据开始由reg2的D端传输到Q端时刻的D端数据是正确的这就是建立时间的意义,同时在数据由D端传输到Q端的过程中D端的数据应该保持不变,这就是保持时间的意义。
(7)
T
c
y
c
l
e
T_{cycle}
Tcycle:时钟周期,数据发送的时钟沿称之为发送沿(Lunch edge),数据采样的时间称之为采样沿(Latch edge),通常情况下这两个边沿之差为一个时钟周期。
2.1 数据实际到达时间
数据到达时间(Data arrival time):时钟到达寄存器reg1的时间(到达后寄存器开始由D向Q开始传输数据)+ 数据由D端到达Q端的时间 T c o T_{co} Tco + 路径传输延迟与组合逻辑延迟 T d a t a T_{data} Tdata。
D a t a a r r i v a l t i m e = T c l k 1 + T c o + T d a t a (1) Data \;arrival\;time=T_{clk1}+T_{co}+T_{data}\tag{1} Dataarrivaltime=Tclk1+Tco+Tdata(1)
2.2 采样时钟实际到达时间
时钟到达时间(Clock arrival time):
C
l
o
c
k
a
r
r
i
v
a
l
t
i
m
e
=
T
c
l
k
2
+
T
c
y
c
l
e
(2)
Clock \;arrival\;time=T_{clk2}+T_{cycle}\tag{2}
Clockarrivaltime=Tclk2+Tcycle(2)
2.3 数据要求到达时间
上面说到寄存器有建立时间门限以及保持时间门限,这两个门限限制着数据不能太晚到达。
由于建立时间门限要求采样时钟到来时数据必须提前
T
s
u
T_{su}
Tsu时间到来,因此数据要求到达的时间最晚为采样时钟实际到达的时间减去建立时间门限:
D
a
t
a
R
e
q
u
i
r
e
t
i
m
e
=
T
c
l
k
2
+
T
c
y
c
l
e
−
T
s
u
(3)
Data \;Require\;time=T_{clk2}+T_{cycle}-T_{su}\tag{3}
DataRequiretime=Tclk2+Tcycle−Tsu(3)
2.4 建立时间裕量
根据2.1到2.3的三个时间概念,我们知道了数据实际到达的时间必须早于数据要求到达的时间,这也意味这实际到达的时间要不大于要求到达的时间。
D
a
t
a
R
e
q
u
i
r
e
t
i
m
e
≥
D
a
t
a
a
r
r
i
v
a
l
t
i
m
e
(4)
Data \;Require\;time \geq Data \;arrival\;time\tag{4}
DataRequiretime≥Dataarrivaltime(4)
这个大于的部分我们就称之为建立时间裕量(Setup Slack),即建立时间裕量=数据要求到达的时间-数据实际到达的时间:
S
e
t
u
p
S
l
a
c
k
=
D
a
t
a
R
e
q
u
i
r
e
t
i
m
e
−
D
a
t
a
a
r
r
i
v
a
l
t
i
m
e
=
T
c
l
k
2
+
T
c
y
c
l
e
−
T
s
u
−
(
T
c
l
k
1
+
T
c
o
+
T
d
a
t
a
)
(5)
Setup \;Slack= Data \;Require\;time-Data \;arrival\;time\\ \,\\\qquad\qquad\qquad=T_{clk2}+T_{cycle}-T_{su}-(T_{clk1}+T_{co}+T_{data})\tag{5}
SetupSlack=DataRequiretime−Dataarrivaltime=Tclk2+Tcycle−Tsu−(Tclk1+Tco+Tdata)(5)
建立时间的裕量表示的是数据可以晚到来的时间。