FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。对于时序如何用FPGA来分析与设计,本文将详细介绍。
, R9 M* ]* s Y
, b% n8 r6 K: d; m1 h" T; |! z T基本的电子系统如图 1所示,一般自己的设计都需要时序分析,如图 1所示的Design,上部分为时序组合逻辑,下部分只有组合逻辑。而对其进行时序分析时,一般都以时钟为参考的,因此一般主要分析上半部分。在进行时序分析之前,需要了解时序分析的一些基本概念,如时钟抖动、时钟偏斜(Tskew)、建立时间(Tsu)、保持时间(Th)等。时序分析也就是分析每一个触发器(寄存器)是否满足建立时间/保持时间,而时序的设计的实质就是满足每一个触发器的建立时间/保持时间的要求。
( S! I3 o# |1 u. S
N! _$ ~8 r; J4 z# b2 E" I一、时钟抖动和时钟偏斜
: s4 \+ p2 x; I+ m1 Q, m; S1 g+ S
1.时钟抖动
* L1 X8 Y+ @7 Q9 O& U4 ` R0 t9 p+ A u. s' j+ t1 m3 h+ n
时钟信号边沿变化的不确定时间称为时钟抖动,如图 2所示。一般情况下的时序分析是不考虑时钟抖动,如果考虑时钟抖动,则建立时间应该是Tsu+T1,保持时间应该是Th+T2。
1 |2 N- ]4 q8 p# ~, N! t/ C7 e
# U9 a; d- J8 |
2.时钟偏斜
' q4 e9 j$ i6 k+ v$ y/ I% \( c5 N3 O3 X. U
时序偏斜分析图如图 3所示。时钟的分析起点是源寄存器(Reg1),终点是目标寄存器(Reg2)。时钟在图中的结构中传输也会有延迟,时钟信号从时钟源传输到源寄存器的延时为Tc2s,传输到目标寄存器的延时为Tc2d。时钟网络的延时为Tc2s与Tc2d之差,即Tskew=Tc2d-Tc2s。
& U- _; R# x' t; c( k) o8 {7 h
! @- z7 N) W9 Z+ o. `7 {二、建立时间和保持时间
* {3 t0 K6 k4 A' |* C2 ?* O' Y' z( r9 V建立时间(Setup Time)常用Tsu表示,指的是在触发器的时钟信号上升沿到来以前,数据和使能信号稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器,使能信号无效,也就是说在这个时钟周期对数据的操作时无效的;保持时间(Hold Time)常用Th表示,指的是在触发器的时钟信号上升沿到来以后,数据和使能信号稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器,对数据的操作同样是无效的,使能信号无效。数据要能稳定传输,就必须满足建立时间和保持时间的关系,图 4标识了它们间的关系。
5 O4 T, |) d" e) {
( @$ y" F K) @* k三、发送沿和捕获沿
& u, D% _9 R, o+ z
(1)发送沿(Launch Edge):前级寄存器发送数据对应的时钟沿,是时序分析的起点;
0 t" L; V4 |# L0 ]4 u, E, \% e# f7 @+ [5 f; j7 b: i
(2)捕获沿(Latch Edge):后记寄存器捕获数据对应的时钟沿,是时序分析的终点。相对于launch Edge通常为一个时钟周期,但不绝对,如多周期。
$ `) I I1 F$ T6 P3 X/ C8 k
3 q1 [" H. D8 Q: M9 a; @
“信号跳变抵达窗口”:对latch寄存器来说,从previous时钟对应的Hold Time开始,到current 时钟对应的Setup Time 结束。
% B/ \9 S7 u1 O) |& j5 v# _4 O5 V8 ~ f/ v1 ~
“信号电平采样窗口”:对latch寄存器来说,从current时钟对应的Setup Time开始,到current时钟对应的Hold Time结束。
$ X7 c8 P9 a L k' A7 Y8 G4 I# l. ~
launch寄存器必须保证驱动的信号跳变到达latch寄存器的时刻处于“信号跳变抵达窗口”内,才能保证不破坏latch寄存器的“信号电平采样窗口”。
$ G2 B/ [' t( m% z$ f! m- }. A8 f2 @
2 p1 F) _' s- G4 {
四、数据和时钟的时序分析
8 u/ L8 c1 V2 L! b( \
如图 6所示,为分析建立时间/保持时间的基本电路图。Tclk1为Reg1的时钟延时,Tclk2为Reg2的时钟延时,Tco为Reg1固有延时,Tdata为Reg1的到Reg2之间组合逻辑的延时,Tsu为Reg2的建立时间,Th为Reg2的保持时间,设时钟clk周期为T,这里分析数据的建立时间和保持时间。
3 j5 L% U$ T. Z, |
8 }& q7 q) x( t3 G2 z( k' q/ B1、建立时间的分析
/ J/ n' i! P0 ~+ v如图 7所示,建立时间的分析是以第一个launch Edge为基准,在Latch Edge查看结果。建立时间的裕量(T为时钟周期):
- B/ X& d: y4 [% ?$ t8 [2 A' C* W7 ^. q0 r, D2 y" }+ l5 b. M
Setup Stack = (T+Tclk2) – Tsu – (Tclk1+Tco+Tdata)
( F1 C1 A0 N8 e# H m) R7 K( p3 f7 U2 B' {5 A6 ^7 x) d( J
假设△T = Tclk2-Tclk1,则:
2 z5 O9 U, i( X# u9 }/ x! j
0 S: d% ~" z" k7 _8 k1 HSetup Stack = (T+△T) – Tsu – (Tco+Tdata)
3 m% J2 M2 Z7 O- S9 x+ u7 K( ?/ s
5 q' F3 W! G$ L
可见△T<0影响建立时间,使建立时间的要求更加苛刻。因此对于△T尽量避免,采用同步单时钟,并且尽量采用全局的时钟信号,这样△T几乎为0,,△T的影响几乎不存在,可以忽略不计。
! L. K* I* d0 n- J5 w/ N
* r. X g4 _* }9 Q& b如果建立时间的裕量Setup Stack小于0,则不满足建立时间,也就会产生不稳定态,并通过寄存器传输下去。
8 G5 v; Y2 J! k! M& u
5 Q" d0 w0 V& n* G2、保持时间的分析
6 ~9 N! G5 ]( Y) K# a7 x5 ]如图 8所示,保持时间的分析是以第二个launch Edge为基准,在Latch Edge查看结果。保持时间的裕量:
" P- Y) @5 Q* i* b8 H* k
5 E' N$ |1 _$ c1 B, Y+ hHold Stack = (Tclk1+Tco+Tdata) – Tclk2 – Th
6 o8 T! d( _3 i( x) z
L: z. F, _3 w) n假设△T = Tclk2-Tclk1,则:
3 q0 V' ?+ j" B, \
+ d# ]) e' _( t3 u9 |Hold Stack = (Tco+Tdata) – △T – Th
! |& X+ h4 q# R$ c
; B& T/ K/ L/ r3 l- v3 S
可见△T>0影响保持时间,使保持时间的要求更加苛刻。。因此对于△T尽量避免,采用同步单时钟,并且尽量采用全局的时钟信号,这样△T几乎为0,,△T的影响几乎不存在,可以忽略不计。
3 Z% Z& ^6 H6 f) c8 l% w+ j4 E
+ m) w1 K' e% C1 t如果保持时间的裕量Hold Stack小于0,则不满足保持时间,也就会产生不稳定态,并通过寄存器传输下去。
0 d! Q( Q f* |, f6 q, S
8 a/ O, {) a6 [0 P- m8 B五、DT6000S项目实例
6 a, T2 t' I% W; \! k$ s
DT6000S项目上有4路光以太网接口连接到FPGA,由FPGA进行实现MAC层和解码IEC61850的SV和GOOSE。以太网PHY通过MII接口和FPGA,因此FPGA与外部的接口有4路MII接口。项目初期是实现1路光以太网接口,并且验证功能正确之后,但是后期变成的4路光以太网时,总会存在1路光以太网通信不正常。经过分析得到是FPGA通MII接口和PHY的时序不满足。如图 9所示为MII接口的时序图,时序不满足分为TX_CLK和RX_CLK。
5 |# n, L* g% ]" L
: S3 v# f; b. a( X$ z4 F _其一是PHY输出的TX_CLK和FPGA依据TX_CLK产生的TXD[3:0]&TX_EN延时大,主要延时为内部逻辑的延时,PCB延时小并且一致,导致PHY的TX_CLK的建立时间不满足,从而导致发送数据错误。
# E/ Q% ~/ X" J- @4 P# g' m1 K. p2 h, ]& }1 |* l3 x2 j0 N
其二是PHY输出的RX_CLK和RXD[3:0]&RX_DV&RX_ER到FPGA内部同步触发器的延时之差太大,导致FPGA内部同步触发器的RX_CLK的建立时间不满足,从而导致接收数据错误。
7 P$ s5 y1 e- [( ^
9 [+ H$ [ U- o( T/ f
因此FPGA在综合时需要添加约束,使之时序满足要求,约束的条件为TXD[3:0]和TX_EN的输出延时要少。RX_CLK和RXD[3:0]&RX_DV&RX_ER路径延时之差要小。添加约束之后,4路MII接口的光以太网数据通信就正常了。
, J! V# J/ A0 B, K
) i. W {: c, h$ n+ f( U, [) E
这里阐述了时序分析基础,说明概念的同时进行了时序分析,通过时序分析理解建立时间和保持时间。希望大家阅读本文之后可以对FPGA时序分析有进一步的了解。