《高级数字系统设计技术与实例分析》(学习笔记)

3.7 组合逻辑

在verilog语言中可以使用两种方法描述组合逻辑——使用always组合块或assign语句。当使用always组合块描述时,变量被声明为reg类型当使用assign语句描述时,变量被声明为wire类型。

5.1 组合逻辑门

5.1.15 扇入和扇出

逻辑门的扇入指的是一个逻辑门正产工作时输入端的数量,例如理论上一个与门可以有20个输入端,但是包含20个输入端的与门可能会因为输入负荷过大而出现逻辑错误或者速度下降的情况,此时其扇入就不能选为20。

扇出是在不降低输出电平的情况下,逻辑门能够驱动的负载的数量。

5.3 通用D触发器

D触发器是最简单的触发器类型,可以用作单比特存储元件,如图5.30所示。它在现代同步数字芯片设计中得到了广泛的应用。我们知道,现代同步数字系统离不开时钟,每个时钟周期内,D触发器都会对所存储的值进行一次更新。我们在前面讨论的组合逻辑门是不能存储数值的,当输入改变时,信号的输出值随即发生改变。而对于D触发器,只能在其有效时钟触发沿到达时其输出值才能够发生改变。

D触发器有数据、始终和RST#输入端以及Q和!Q两个输出端。在每一个时钟的上升沿,输出Q将输入D的值锁存,直到下一个时钟上升沿出现时才继续锁存当前D的值。!Q输出的值与Q输出得值相反。子啊始终上升沿进行输出数据更新时,D端的输出数据必须满足成为建立时间的定时要求,否则输出端Q可能会出现不稳定值。

在D触发器的输出级有两个由交叉连接的与非门构成的锁存器用于保持输出值不变,直到下一个时钟边沿出现。

RST#引脚是异步复位端,用于对触发器进行复位操作,使其输出一个确定的值。我们将在后面看到,复杂数字系统中的状态机通常是由D触发器构成的,而这些触发器需要再RST#为低电平时进入确定状态,从而使状态机进入确定的初始状态。RST#为低电平有效,时触发器输出0。可以在任何时间置为0,是一个异步信号,不需要与时钟同步。当RST#有效是,输出立即变化。然而,RST#由低到高的变化必须满足一定的定时要求。

5.3.1 D触发器时序图

D触发器输入/输出时序图如图所示

1.只要RST#有效,输出会保持在0 ,并且与D输入值无关

2.RST#从0跳变为1的过程需要与时钟同步,即在某个时钟上升沿出现时,RST#发生翻转。

3.在RST#引脚拉高之后(点2),D的值在下一个时钟上升沿出现时被锁存在Q端。

4/5.如果始终上升沿出现时D为0(点4),则时钟上升沿出现之后Q端跳变为0(点5)。

6.在两个时钟上升沿之间,D上出现的瞬间变化被过滤掉,在Q端显示不出来。

7.RST#可以在任何时间置为0

8.RST#有效后,Q值立即改变,不需要等到下一个始终上升沿出现时才改变。

5.4 建立和保持时间

5.4.1 建立时间

D触发器的正常工作是有定时要求的,必须满足建立时间和保持时间的要求。在时钟上升沿出现之前,D的值必须在一段指定的时间内保持稳定,否则D触发器无法正产干工作。在时钟上升沿之前D需要保持稳定的最短时间成为建立时间。如果在建立时间D的值发生了变化,那么讲无法确定Q的电平,其可能为一个不确定的电平值。图5.32中,在点a处,在建立时间窗口之前D发生改变,Q迅速变为为1(点b)。然而,在点c,在建立时间窗口之内D输入发生改变,在接下来相当长的一段时间内(几乎整个时钟周期)Q输出电平在1和0之间无法稳定(点d)。

5.4.2 保持时间

在时钟的上升沿之后的一段时间内,D的输入值也不允许改变,否则也会造成Q输出得不稳定,这个窗口被称为保持时间。

5.4.3 亚稳态

如图5.32,当输入D在建立时间和保持时间窗口内发生变化事,在此后的几乎一个时钟周期内,输出电平既不是0也不是1,处于不确定值。这种不稳定的状态也被成为亚稳态。亚稳态的输出将在下一个时钟的上升沿之前稳定为0或1。

5.5 单比特信号同步

5.5.1 两个触发器构成的同步器

在只有一个时钟的数字系统中(称为单时钟域数字系统),通过控制一个D触发器的输出到另一个D触发器的输出到另一个D触发器输入之间组合逻辑门的数量,可以减少其带来的延迟从而避免D触发器的输入在建立时间和保持时间窗口内发生波动。但是,当一个数字系统中有两个或两个以上时钟(称为多时钟域系统),会出现一个时钟域的D触发器的输出作为另一个时钟域的D触发器输入的情况,当两个时钟之间没有任何关联时,亚稳态的出现是无法避免的。

图5.33给出了解决这个问题的一种方法,即在CLK_B 时钟域中,使用两个级联的D触发器。此时,在两个时钟域连接的地方,Q_BS1的输出会出现亚稳态,但在下一个时钟上升沿到达前,输出会稳定下来,此时Q_BS2上就不会出现亚稳态了,该信号提供给后面的数字电路使用,就可以避免系统的不稳定。当时钟频率非常高时,Q_BS2也有可能出现亚稳态,此时可以考虑增加级联的D触发器的数量。在实际应用中,通常使用两级D触发器级联就可以了。

 5.5.2 信号同步规则

当信号从一个时钟域进入另一个时钟域师,为了使信号正确传递的同时,保持系统工作稳定,必须遵循以下几条设计规则。

跨时钟域的信号必须直接来自源时钟域的寄存器输出。如果信号来自组合逻辑,而不是直接来自触发器,可能会造成信号在目标时钟域中出现难以预料的不稳定情况,从而导致整个系统出现无法预料的情况。

如图5.34所示,在开始时,与门的两个输入端是1和0,产生的输出c为0。当a从0变为1时,b从1变为0是,输出草仍是0。但是,输入a和b在一个短暂的时刻都是1,造成输出c在一个短暂的时间内是1。如果时钟B的上升沿出现在c为1的时刻,那么逻辑值1将最终传递到输出e,而这不是希望看到的结果。如果CLK A时钟域的寄存器插入到与门后面,那么c上出现的毛刺就会被过滤掉,不会传递到后续电路中。

使用逻辑单元库中的专用触发器实现两级同步器。

在一个点而不是多个点上进行跨时钟域信号的同步。同步电路可以消除亚稳态及其传递,但得到的结果可能是1也可能是0,当只有一个连接点时,最多是信号延迟不同的问题,如果是多个点,那么这些信号组合后的结果可能性非常多,这回造成信号传递的错误,可能会导致下游系统出错。 

5.6 关于时序

各种类型的逻辑门(AND、OR、NAND等)可用于实现逻辑运算,它们都会带来一定的门延迟。它们的延迟可能非常小,但不是零。当这些门的输入发生变化时,需要经过一定的延迟才会出现输出变化。此外,信号通过连接逻辑门的信号线时,还存在着传播延迟。

Tclk:时钟周期。两个时钟上升沿之间的时间。例如,对于250MHz的时钟频率,时钟周期为4ns,对于500MHz时钟频率,时钟周期为2ns。

Tctoq:这是触发器输出相对于其时钟上升沿之间的延迟。

Tgate:逻辑门的延迟。这里包括了传播时延。

Tsetup:目的触发器的建立时间。

Tskew:时钟便宜。同一个时钟到达不同的触发器的时钟引脚经历的路径可能存在差异,造成它们的时钟上升沿不是同时出现的,这种偏差成为时钟偏移。通过使用时钟树综合工具可以有效地减小时钟便宜,但不能消除始终偏移。

下面分析给定时钟周期Tclk后系统能够承受的最大门延迟Tgate。

Tctoq + Tgate(max) = Tclk -Tskew - Tsetup

即:

Tgate(max) = Tclk - (Tskew + Tsetup + Tctoq)

 当门和互联线的延迟之和超过了允许的Tgate(max)时,系统就会出现定时错误。

当另一种与定时相关的错误就是保持时间错误。这种情况通常发生在源触发器的输出和目的触发器的输入之间逻辑门过少活着根本没有逻辑门的情况下。在这种情况下,源触发器中时钟上升沿到Q产生稳定输出得延迟可能不能满足目的触发器对保持时间的要求。另外时钟便宜可能会加剧这一情况。图5.36和图5.37展示了时钟便宜造成定时错误的两种情况。

图5.36中,CLK T2与CLK T1之间存在便宜,使得目的始终寄存器输入端出现了不能满足保持时间的情况,目的寄存器二代输出出现了亚稳态。如果失踪便宜过多,如图5.37所示,虽然不会出现保持时间错误,但当前始终周期的数据没有被正确采样,它被延迟了一个时钟周期。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值