时序电路的时间参数问题

时序电路的时间参数问题


电路工作的本质就是电子的移动。是电子,就有其速度,就必然不可能是瞬时的,电子就得花费一定时间完成转移。那么,在电路基本元器件中,电子的移动时间也有相应的反映,在这里,主要讨论一下时序电路的时间参数问题。

数字系统的时序分类

  所有的时序电路都具有一个共同的性质————如果要使电路正常工作就必须严格执行预先明确定义好的开关事件的顺序。如果不这么做,也许会把错误的数据写入到存储元件中,导致计算出错。
  信号可以根据它们与本地时钟的关系进行分类,只在预先决定的时间周期上发生反转的信号相对于系统时钟可分为同步的(synchronous)、中等同步的(mesochronous)或近似同步的(plesiochronous)。反之,可以在任意时间发生反转的信号称为异步(asynchronous)信号。
同步互连:
同步互联方法
中等同步:
中等同步
近似同步:
近似同步

异步:
异步

时序电路的时序参数

  有三个重要的时序参数与起存其有关,建立时间(tsu)实在时钟翻转(对于正沿触发器为 0->1 的反转)之前数据输入(D)必须有效的时间。维持时间(thold)是在时钟边沿之后数据输入必须仍然有效的时间。假设建立和维持时间都满足要求,那么输入端 D 处的数据则在最坏情况下的传播延时( tc-q )(相对于时钟边沿)之后被复制到输出端Q。
在这里插入图片描述
  实际上今天设计的所有系统都采用周期性的同步信号或时钟。时钟的产生和分布对系统的性能和功耗会产生显著的影响。让我们暂且假设存在这么一个系统:它是一个正边沿出发的系统,时钟的上升沿标识着一个周期的结束和开始,在理想情况下,时钟到达每个寄存器的时刻完全一致。如下图所示,即,寄存器1和寄存器2的时钟具有相同的周期,并在完全相同的时刻进行翻转(相对于全局参考时钟无偏移)。
同步时序考察图1
已知上图时序电路的时序参数:

  •   寄存器的污染或最小延时 t(c-q,cd) 和最大传播延时 tc-q
  •   寄存器的建立时间 tsu 和维持时间 thold
  •   组合逻辑的污染延时 **t(logic,cd)**和最大延时 tlogic
  •   时钟CLK1和CLK2的上升沿相对于全局参考时钟的位置(分别为 tclk1tclk2 )。


    在理想情况下,tclk1=tclk2,因此这一时序电路要求的最小时钟周期仅取决于最坏情况下的传播延时。周期必须足够长,以便于在时钟的下一个上升沿之前数据能够传播通过寄存器和逻辑并在目标寄存器处建立起来(满足建立时间要求)。其约束如下:
      T ≥ tc-q + tlogic + tsu
    于此同时,目标寄存器的维持时间必须小于通过逻辑网络的最小传播延时:
      thold ≤ t(c-q,cd) + t(logic,cd)

同步设计 ———— 一个深入的考察

  时钟偏差(Clock Skew)

  集成电路中一个时钟到达时间在空间上的差别通常称为时钟偏差。在一个集成电路中,两点 ij 之间的时钟偏差为 δ(i,j) = ti - tj ,这里 ti , tj 是该时钟上升沿相对于参考时钟的位置。考虑上图中寄存器 R1 和 R2 之间传送数据。根据不限方向和时钟源的位置,时钟偏差可以有正有负。下图显示了正偏差情况下的时序图。如图所示,在第二个寄存器处时钟上升沿延迟了一个正的 δ 。
时钟偏差图
  时钟偏差是由时钟路径的静态不匹配以及时钟在负载上的差异造成的。根据定义,各个周期的偏差是相同的。也就是说如果在一个周期 CLK2 落后 CLK1 一个 δ ,那么在下个周期也将会落后同一数量。值得注意的是,时钟偏差并不会造成时钟周期的变化,造成的只是相位的偏移。
  从上图可以看到,由R1在边沿①处采样的一个新输入 In 将传播通过组合逻辑并被 R2 在边沿 ④ 处采样。如果时钟偏差为正,那么信号由 R1 传播到 R2 的可用时间就增加了一个时钟偏差值 δ 。组合逻辑的输出必须在 CLK2 上升沿(点 ④)的一个建立时间之前有效。于是最小时钟周期推导如下:
  T + δ ≥ tc-q + tlogic + tsu
  这提示我们时钟偏差实际上具有改善电路的性能的可能,也就是电路可靠工作所要求的最小时钟周期随着时钟偏差的增加而减少!这的确没错,可惜的是,增加偏差会使电路对竞争情况更加敏感,而这有可能会危及到整个时序系统的工作。因为如果组合逻辑块的最小延时很小的话,那么 R2 的输入就很可能在时钟边沿②之前就改变,导致求值出错。为了避免竞争,我们必须保证通过寄存器和逻辑的最小传播延时足够长,以使R2的输入在边沿②之后的一段维持时间内保持有效。约束如下:
  δ + thold < t(c-q,cd) + t(logic,cd)
  下图显示的是 δ<0 情况下的时序图。这时,CLK2 的上升沿发生在CLK1的上升沿之前。R1 在 CLK1 的上升沿处采样一个新的输入。该新数据传播通过组合逻辑,并在 CLK2 的上升沿处(相应于边沿④)被 R2 采样。负的时钟偏差对时序系统的性能有负面影响。然而,δ + thold < t(c-q,cd) + t(logic,cd) ,负偏差则意味着系统永远不会失误,因为边沿 ② 发生在边沿 ① 之前。
负时钟偏差
正时钟偏差和负时钟偏差:
正负时钟偏差
  ①δ > 0 。这相当于时钟布线的方向与数据通过流水线的方向一致。在这种情形下,时钟偏差应严格控制并满足保持时间。如果不满足保持时间约束条件,那么无论什么样的时钟周期电路都会出错。降低一个边沿触发电路的时钟频率并不能帮助解决时钟偏差问题!所以在设计时必须满足对维持时间的约束。即使时钟周期可以缩短δ。但这一改进是有限的,很容不满足建立时间约束。
  ②δ < 0 。当时钟布线与数据方向相反时,时钟偏差为负值并显著提高了抗竞争的能力,如果维持时间为0或者负值,竞争就可以被消除,因为上式可以无条件成立!由于偏差降低了可用于进行实际计算的时间,所以时钟周期必须增加一个|δ|。总之,在与数据相反的方向上布时钟线可以避免出错,但会降低电路的性能。
由于在一般的逻辑电路中数据可以在两个方向上流动(如具有反馈的电路),所以这种消除竞争的方法并不总能有效。一般来说,设计者使时钟布线只发生负偏差是不现实的。因此,设计一个偏差小额时钟网络才是最重要的。
警告:由于存在虚假路径(也就是数据不可能流通的路径),组合逻辑最坏的传播延时不能简单地通过相加各个逻辑门的传播延时来计算。关键路径很大程度上取决于电路的拓扑结构以及数据的相关性。

  时钟抖动(Clock Jitter)

  时钟抖动是指在芯片的某一给定点上时钟周期发生暂时的变化,即时钟周期在每个不同的周期上可以缩短或加长。时钟抖动是严格衡量时钟暂时不确定性的一项指标,并且经常针对某一给定点进行说明。抖动可以用许多方法来衡量和表征,它是一个零均值随机变量
绝对抖动(tjitter)是指在某一给定的空间位置处的一个时钟边沿相对于理想的周期性参考时钟边沿在最坏情形下的变化(绝对值)。
周期至周期抖动(Tjitter)一般是指单个时钟周期相比于理想参照时钟的时变偏移(time-varying)偏离。
在最坏情形下,周期至周期抖动等于绝对抖动的2倍。
  抖动直接影响时序系统的性能。下图显示了一个时钟周期的变化。
时钟抖动
在理想情况下,时钟周期起始于边沿②而在边沿⑤结束,周期为Tclk。然而在最坏情况下,例如时钟起始于③,结束于④,那么在这种情况下可用来完成操作的总时间减少了2tjitter:
  Tclk - 2tjitter ≥ tc-q + tlogic + tsu
上式表明,抖动直接降低了时序电路的性能。

  偏差和抖动的共同影响

在实际电路中,时钟抖动和偏差往往是同时出现的,如下图
时钟抖动和偏差共同作用
假设存在时钟偏差δ(假设δ>0),同时两个时钟都有抖动tjitter。则为了确定最小时钟周期,分析得,最坏情况下,CLK1的当前时钟上升沿推迟到③,CLK2的下一个时钟上升沿提前到了⑩。由此可得最小时钟周期约束(由建立时间约束得到):
  Tclk + δ -2tjitter ≥ tc-q + tlogic + tsu
为了推导最小延时约束,考虑CLK1周期的上升沿提前到达(边沿①),而CLK2当前周期得上升沿推迟(边沿⑥)。边沿①和边沿⑥间隔应当小于经过整个电路得最小延时:
  δ + thold + 2tjitter < t(c-q,cd) + t(logic,cd)

  偏差和抖动的来源

信号的产生:信号的产生本身就会引起抖动。
器件制造中的偏差:
互联偏差:互连线的差别会造成不同路径得时钟偏差。
环境变化:环境变化可能是引起时钟偏差和抖动的最重要因素。
电源噪声:供电变化是始终分布网络中抖动的主要原因,电源噪声基本上限制了时钟网络的性能。
电容耦合:电容负载变化也会影响到时序的不确定性。

相关推荐

  1. 时序电路Verilog设计——基本时序元件

    2023-12-10 04:54:01       24 阅读
  2. 1.linux时间问题

    2023-12-10 04:54:01       17 阅读
  3. Sparktimestamp 数据时间问题

    2023-12-10 04:54:01       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 04:54:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 04:54:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 04:54:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 04:54:01       18 阅读

热门阅读

  1. Qt OpenCV 学习(文章链接汇总)

    2023-12-10 04:54:01       45 阅读
  2. 谈一谈Linux下的进程和线程

    2023-12-10 04:54:01       42 阅读
  3. Linux 如何解决磁盘空间没有扩大的问题。

    2023-12-10 04:54:01       33 阅读
  4. uart接收数据处理

    2023-12-10 04:54:01       37 阅读
  5. vue实例事件

    2023-12-10 04:54:01       34 阅读
  6. linux命令积累

    2023-12-10 04:54:01       35 阅读
  7. 如何检查mysql表里,某个字段是否存在相同值?

    2023-12-10 04:54:01       39 阅读