| 
本帖最后由 电子渣 于 2017-1-12 09:22 编辑 # e& x: K! A/ y" w* T/ F2 f8 ]
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  
 0 c8 p9 t6 Z7 c) k2 F+ C. K1、建立时间和保持时间的定义、原因
 8 F; P4 C  T- x2 K6 H建立时间(Setup time):在有效时钟(例如D触发器,上升沿到来之前)到来之前,输入数据能够保持数据稳定的最短时间就是建立时间,其建立时间存在的原因是为了触发器将输入数据读取锁存进触发器内部,便于等待有效时间来之后能够输出;
 ) Z+ A4 {! E8 d9 GPS:同步设计考量的是建立时间
 ) M$ Q7 N1 b; W
 0 \( L  [1 E: `( G保持时间(Hold time):在有效时钟到来之后,输入数据能够保持数据稳定的最短时间就是保持时间;其保持时间存在的原因是触发器内部的传输门(FPGA内部采用的CMOS工艺)的关闭和开始不是瞬间完成,有时间过程,这个过程需要保持稳定,才能稳定的输出数据。具体的文档解释见附件《Understanding the basics of setup up and hold time.pdf
 # s4 ~. T" q/ {, n+ Y' h》,其中内部结构图和传输过程如图1所示。# {2 N# T/ X4 q" }1 E( g
 
 , Y% Y) _) {' O, w( e+ K
 file:///C:/Users/NOOBS/Documents/My%20Knowledge/temp/924d9f19-bfe3-4d03-a6dd-d284eae6e3a8/128/index_files/a65704654444ba93ee51ab33d13eef90.png 6 L7 n8 ^' W. G5 m( E# y4 W+ Z1 [' l
 图 1 建立时间保持时间图解( p3 T; K! w+ ^# V3 M. n 2、建立时间、保持时间在设计电路中的实际应用( C# q( D* H8 y  E
 
 % t# M- ?1 p: b0 H在FPGA设计中,经常是时序电路和组合电路相互使用,如图2所示的是一个同步设计的基本模型。
 , r& R$ `) g! z" W/ e4 lfile:///C:/Users/NOOBS/Documents/My%20Knowledge/temp/924d9f19-bfe3-4d03-a6dd-d284eae6e3a8/128/index_files/99d6609f-f12b-4c0d-9987-1548742199c4.jpg3 X# R/ _+ M# t; ^# E
 & ~5 n7 y5 D  R6 F
 ; N$ D& D8 K4 y; X
 图 2  同步设计的基本模式
 6 s0 d: I" V; W图中,Tco表示D触发器数据输出的延时,Tdelay表示组合电路的延时,Tpd表示CLK(时钟)到两个触发器的延时,Tsetup表示第二个D触发器建立时间;
 ' z6 H  n/ q" C$ n# w, D如果第一个触发器的建立时间最大为T1max,最小为T1min,组合逻辑延时最大为T2max,最小为T2min,则第二个触发器的建立时间Tsu和保持时间Th应该满足什么条件?或者已知Tsu和Th,能接入的最大时钟能达到多少?$ D9 w2 G; V/ j- x. j/ v
 
 & ?. z0 e5 L, t" q5 s  h. Y8 z下面进行时序图分析,分析之前假设两个触发器的时钟均使用了FPGA内部的全局时钟网络,即可认为其时钟延时Tpd=0;此时不需要考虑保持时间,因为数据本身的延时大于时钟延时,所以保持时间一定是满足条件的(具体的数学求算可解释);
 # @  h* k8 l& l. C# n: Q因此同步设计中重点关注考虑的就是建立时间! d: [% K9 y( D1 W+ b
 如图3所示的时序图:
 # b1 c2 s5 f' l6 C% Q$ C7 G+ |7 jfile:///C:/Users/NOOBS/Documents/My%20Knowledge/temp/924d9f19-bfe3-4d03-a6dd-d284eae6e3a8/128/index_files/23f7e9d7-bc3d-41fa-b1cd-4b66c15bebd2.jpg/ B  X9 e8 x* |
 8 K+ e2 ~( k- n4 }8 h. G
 图 3 可正确采集数据的时序图
 / p: m% b! O1 |) |从图3可知,只有当T-Tco-Tdelay>Tsu时(T为时钟周期,Tsu为第二个触发器的建立时间),方可实现同步设计;从式子中也可看出D2的建立时间和保持时间和D1的建立时间和保持时间无关联,而只和输入端前的组合延时和D1的数据输出延时有关,进而说明了延时没有叠加效应。
 , j; q3 n  Z) x" N9 t7 i3 z因此可推出系统的时钟的频率应该满足的条件是:
 9 K  k5 w& g8 j$ a/ G, i. w
 file:///C:/Users/NOOBS/Documents/My%20Knowledge/temp/924d9f19-bfe3-4d03-a6dd-d284eae6e3a8/128/index_files/clip_image00287326624-58b9-46d0-aea2-416726d6878b.pngT2max为组合延时最大的时间;) H; i+ B, z/ `8 e/ X7 F 如果考虑时钟存在延时(时钟出现较大延时的多数原因是因为采用了异步时钟设计),其时序图如图4所示。" f* g5 x3 B! f, T$ |
 因为建立时间和保持时间之和为时钟脉宽,所以T-(T-Tco-Tdelay)>Th,即Tco+Tdelay>Th ,而得延时就比保持时间更长了,所以不用考虑保持时间,一般情况下都是满足保持时间的条件。+ w) A, H9 S) }; k) R8 B
 
 file:///C:/Users/NOOBS/Documents/My%20Knowledge/temp/924d9f19-bfe3-4d03-a6dd-d284eae6e3a8/128/index_files/2b69bcb2-878d-4833-9597-16911e868589.jpg) G0 a& S: g: o7 t8 i( ?
 图 4  考虑时钟延时的时序 从图中可得:T-Tco-Tdelay-Tpd>Tsu 因此当存在时钟延时,其建立时间会延长,那保持时间会减少。其保持时间为Tco+Tdelay-Tpd>Th 。 ' z; i: i: f2 b# y( l, V# z7 m) u
 |