FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。对于时序如何用FPGA来分析与设计,本文将详细介绍。
( F2 t5 b1 R( `( z1 h& x, O* w
8 ]3 k5 W+ R# u: B& E, [基本的电子系统如图 1所示,一般自己的设计都需要时序分析,如图 1所示的Design,上部分为时序组合逻辑,下部分只有组合逻辑。而对其进行时序分析时,一般都以时钟为参考的,因此一般主要分析上半部分。在进行时序分析之前,需要了解时序分析的一些基本概念,如时钟抖动、时钟偏斜(Tskew)、建立时间(Tsu)、保持时间(Th)等。时序分析也就是分析每一个触发器(寄存器)是否满足建立时间/保持时间,而时序的设计的实质就是满足每一个触发器的建立时间/保持时间的要求。
, B8 G1 j3 ^* P2 f
0 p; G6 Q) ^' }0 T5 B一、时钟抖动和时钟偏斜
! K; M$ @& }# L- m& x# u, J
1.时钟抖动
3 }0 i1 J) T6 R, N: W# _, a! `
时钟信号边沿变化的不确定时间称为时钟抖动,如图 2所示。一般情况下的时序分析是不考虑时钟抖动,如果考虑时钟抖动,则建立时间应该是Tsu+T1,保持时间应该是Th+T2。
" @& t s5 Y0 y9 Y, h+ |* J
C+ E" c' e( ~. Q. T+ b- }; Q4 b2.时钟偏斜
@+ B* n2 w" c7 l/ O
" _' { P, M6 r. m5 ^. I/ t" B1 E6 p时序偏斜分析图如图 3所示。时钟的分析起点是源寄存器(Reg1),终点是目标寄存器(Reg2)。时钟在图中的结构中传输也会有延迟,时钟信号从时钟源传输到源寄存器的延时为Tc2s,传输到目标寄存器的延时为Tc2d。时钟网络的延时为Tc2s与Tc2d之差,即Tskew=Tc2d-Tc2s。
K4 a& ] Y+ J; h/ |( s
+ _6 d' o- H$ A7 y, b; A S5 F二、建立时间和保持时间
2 q1 U; ~5 g+ \1 T1 h3 A建立时间(Setup Time)常用Tsu表示,指的是在触发器的时钟信号上升沿到来以前,数据和使能信号稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器,使能信号无效,也就是说在这个时钟周期对数据的操作时无效的;保持时间(Hold Time)常用Th表示,指的是在触发器的时钟信号上升沿到来以后,数据和使能信号稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器,对数据的操作同样是无效的,使能信号无效。数据要能稳定传输,就必须满足建立时间和保持时间的关系,图 4标识了它们间的关系。
& t7 N2 _; v5 ^% \
2 G0 E$ l& O" g0 C2 c: B三、发送沿和捕获沿
: { p- {) F4 `(1)发送沿(Launch Edge):前级寄存器发送数据对应的时钟沿,是时序分析的起点;
& m ^- U1 I: y8 `& x9 `; |9 i$ H% u$ V: N/ l9 ]1 O$ }
(2)捕获沿(Latch Edge):后记寄存器捕获数据对应的时钟沿,是时序分析的终点。相对于launch Edge通常为一个时钟周期,但不绝对,如多周期。
, N9 C& o9 L/ `6 f: x. ~8 Y- D
( E. C4 V0 Z1 Q$ @2 {) V3 m! m2 _( [
“信号跳变抵达窗口”:对latch寄存器来说,从previous时钟对应的Hold Time开始,到current 时钟对应的Setup Time 结束。
[! z! D: g# j) k% L) V
3 `# l6 R- R# n1 z& _
“信号电平采样窗口”:对latch寄存器来说,从current时钟对应的Setup Time开始,到current时钟对应的Hold Time结束。
2 d1 D6 P* j, C9 Y
& w" E# s+ E: L4 slaunch寄存器必须保证驱动的信号跳变到达latch寄存器的时刻处于“信号跳变抵达窗口”内,才能保证不破坏latch寄存器的“信号电平采样窗口”。
/ ]* v( S2 I8 X1 E5 [, e
/ U8 x! E6 u- K6 _+ {1 O+ L* x
四、数据和时钟的时序分析
; l: j, s& w# S如图 6所示,为分析建立时间/保持时间的基本电路图。Tclk1为Reg1的时钟延时,Tclk2为Reg2的时钟延时,Tco为Reg1固有延时,Tdata为Reg1的到Reg2之间组合逻辑的延时,Tsu为Reg2的建立时间,Th为Reg2的保持时间,设时钟clk周期为T,这里分析数据的建立时间和保持时间。
6 K0 ]# P. v# a
; h `9 p1 D) S" i3 r* U, r+ }1、建立时间的分析
" f% g. t7 P. n3 S如图 7所示,建立时间的分析是以第一个launch Edge为基准,在Latch Edge查看结果。建立时间的裕量(T为时钟周期):
1 _% l$ Y" Y* q) P5 ?% w
" e/ y6 M4 M. B. C$ M, d. ^
Setup Stack = (T+Tclk2) – Tsu – (Tclk1+Tco+Tdata)
& c0 A5 x- p4 l* x+ r% E$ W5 s
. O- b% B6 X; c* ^6 Z$ y# g$ |4 \
假设△T = Tclk2-Tclk1,则:
# A6 g }# Y2 F5 c: H( z% l
: j8 m8 [& Q& v# z0 E, USetup Stack = (T+△T) – Tsu – (Tco+Tdata)
+ W6 v8 ~# |, Y1 A) |, |
; e: X( w* s% c0 I: V8 n' f) T! ?可见△T<0影响建立时间,使建立时间的要求更加苛刻。因此对于△T尽量避免,采用同步单时钟,并且尽量采用全局的时钟信号,这样△T几乎为0,,△T的影响几乎不存在,可以忽略不计。
: d0 \# l8 M% _$ V+ [/ l) f
4 K% d6 w8 f2 q
如果建立时间的裕量Setup Stack小于0,则不满足建立时间,也就会产生不稳定态,并通过寄存器传输下去。
, g8 E9 q6 a% s7 y- B& {; W
7 L! Q* J6 y. j5 E B8 M/ V2、保持时间的分析
& ]4 t8 d. `4 s" A- {1 V
如图 8所示,保持时间的分析是以第二个launch Edge为基准,在Latch Edge查看结果。保持时间的裕量:
; S, W1 k( j2 M4 `; }9 r1 |( \* T+ U+ `1 }+ X- M
Hold Stack = (Tclk1+Tco+Tdata) – Tclk2 – Th
* T) l) F1 ]4 T5 u9 V# S! u" y: X
假设△T = Tclk2-Tclk1,则:
! t) O+ U! I2 F8 t
8 v1 T ]# _: g1 S7 _6 AHold Stack = (Tco+Tdata) – △T – Th
5 W/ ?3 y+ ^( K' C( p* o9 x* _+ P& P3 Z
可见△T>0影响保持时间,使保持时间的要求更加苛刻。。因此对于△T尽量避免,采用同步单时钟,并且尽量采用全局的时钟信号,这样△T几乎为0,,△T的影响几乎不存在,可以忽略不计。
) O$ h% q3 {# v2 i5 `
8 ^) r% x. k% H$ J如果保持时间的裕量Hold Stack小于0,则不满足保持时间,也就会产生不稳定态,并通过寄存器传输下去。
' m6 N# c# n2 P- e
& O8 H6 r& u4 g3 f! N4 ~$ \
五、DT6000S项目实例
/ z/ W) z+ `3 |2 b0 L! L4 N
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。
8 g$ H1 }2 t/ x
5 ? d9 c4 X! q
其一是PHY输出的TX_CLK和FPGA依据TX_CLK产生的TXD[3:0]&TX_EN延时大,主要延时为内部逻辑的延时,PCB延时小并且一致,导致PHY的TX_CLK的建立时间不满足,从而导致发送数据错误。
9 a c5 T1 e1 b) b5 c! K, f" {6 u! s& D
其二是PHY输出的RX_CLK和RXD[3:0]&RX_DV&RX_ER到FPGA内部同步触发器的延时之差太大,导致FPGA内部同步触发器的RX_CLK的建立时间不满足,从而导致接收数据错误。
- J. m, G* I. a
5 a! I, u6 B+ p! [- }9 Z% M
因此FPGA在综合时需要添加约束,使之时序满足要求,约束的条件为TXD[3:0]和TX_EN的输出延时要少。RX_CLK和RXD[3:0]&RX_DV&RX_ER路径延时之差要小。添加约束之后,4路MII接口的光以太网数据通信就正常了。
: t- X8 M3 P# y4 i; I4 X
5 l6 y2 S, Y+ Z/ O
这里阐述了时序分析基础,说明概念的同时进行了时序分析,通过时序分析理解建立时间和保持时间。希望大家阅读本文之后可以对FPGA时序分析有进一步的了解。