From Nand To Tetris 从与非门到俄罗斯方块

16、P1 W3 U3.1 时序逻辑(待完善)

2019-07-31  本文已影响0人  shazizm

视频:
如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W3U3.1 - Sequential Logic

在说Sequential Logic (时序逻辑)前,先说一下 Combinational Logic (组合逻辑 ?)

前两周学习的逻辑门组成的逻辑单元,都是 组合逻辑,每个逻辑单元的输出 就等于 当下此逻辑单元的输入。

与 组合逻辑 不同的是,时序逻辑 的当下结果不仅由当下输入决定,也由历史的输入决定。

说到历史,课程到此其实一直忽略了时间这个问题,那么接下来几节就来说明它的作用。

因为我们之前和之后要用到的逻辑电路设计,都离不开时序的协同控制。

Combinatorial Logic 也叫 Combinational Logic

虽然目前还不知道时间在此如何起作用,但用好它,可以实现如下功能:

  1. 相同的逻辑单元,理论上,随时间变化,输入输出都是瞬时对应的
    例如:输入变了,输出也随之变化。

  2. 可以记忆一些“状态”
    例如:存储,计数等。(也是下几节的课程内容)

  3. 运算速度。


    你好,时间

时序
那么如何处理时间的呢,这里把物理世界的时间 分成连续的一段一段的概念,每一个时间段 叫 一个Clock(如下图 两红色竖线之间的区域)。

物理世界的电路里,有一个叫“晶振”的东西,这个晶振就干一件事,以一个固定的频率,不断的开关电压。

于是我们就有一个连续不断的上上下下(对应逻辑运算的 1 和 0)的电信号,。

如下图把一个“一下一上”,叫做一个Clock。

现在计算机的处理器的芯片时钟, 假如为 3.2GHz,那么Clock的间隔就是0.31ns

时序 与 逻辑

清楚了时序,下面引入逻辑门,看逻辑门在时序下,是如何工作的。
在一个Clock 时间段里,理论上为了方便理解,我们会假设逻辑电路的输入输出各状态和结果都是固定不变的。
例如下图:Not (非门)
In 是 1 ,Out 经过 非门 就是 0。持续一个Clok 时间段。
在第二个时间段里,如果 In 发生改变了 0,那么 Out 也立即随之改变 1。


理论,并不是实际状态。。。

延时
当你看到真正的物理信号时(比如电路电压信号),如下图:

事实上 例如 In 切换电压从 0 到 1 是需要一小小段时间才能达到稳定的 1(下图红圈里)。

同样 Out 也需要一小小段时间,而且往往比输入要多花些时间,因为从In到Out,内部还要经过很多逻辑运算,比如Adder(加法器,所以优化加法器,将大大缩短Clock时间段,从而提高整体运算速度)

实际情况是这样的。。。

如下图,将上面提到的各种延迟控制在灰色区域,确保在一个Clock时间段内,使所有运算进行完毕,且各输入输出状态到达稳定,再余留一些富余时间,提高稳定性。

如果能将灰色区域缩短,也就是可以缩短一个Clock所需的时间,那么就可以提高运算速度。

所以我们在一个 Clock 时间段 的 结束时,看到的才是这个 逻辑单元的最终状态。

在此基本就可以看出 out[ t ] = function( In [ t - 1 ] )

这样假如我们忽略延迟,那么我们就可以把 Time1、 Time2、 Time3 想成 一个个瞬间。

假设 Out 在 Time2 结束时刻,但 In 在 Time2 一开始确定。所以如果“一个瞬间” 来看这个事就是, Time2 时刻 的Out,是由 Time1 的 In 运算出来的。

例如 Time1 就是一个Clock结束时刻 (如上图红线),Time2 就是下一个Clock结束时刻。

Out(Time2)就等于 Function(In(Time1))

注:我知道以上翻译很有问题。。。囧,我理解简单解释就是,此时刻的out对应的是上一个时刻的in的结果

也就是下图要表达的意思。


in[t] 对应的结果不是 out[t],而是out[t+1]

本节课在数字计算(逻辑运算)中,用抽象出来的一步一步的方式 来代表 物理世界里一个个分段的连续时间。重点讲解了时序的抽象概念和具体运作原理,以及它潜在的作用。

那么下节课,就来讲讲 Flip Flops(触发器)一个具有记忆功能的基本逻辑单元。

上一篇下一篇

猜你喜欢

热点阅读