天天看点

数据流动控制学习笔记

组合逻辑和时序逻辑学习笔记

服完上篇博文的知识,再服用此博文效果更佳!认真看下去,其实还挺有意思。

我们知道,诸如加、减、乘、除、比较等运算都可以用组合逻辑来实现,但运算的输入必须稳定一段时间,才可能得到稳定的输出,而输出要被下一阶段的运算作为输入,也必须要有一段时间的稳定,因而输出结果必须保存在寄存器组中。在计算电路中设有许多寄存器组,它们是用来暂存运算的中间数据。对寄存器组之间数据流动进行精确的控制,在算法的实现的过程中有着极其重要的作用。这种控制是由同步状态机实现的。

开关逻辑应用举例:

设想下面的组合逻辑是一个乘法器,把输入的数乘 3,然后输出。因为乘法器是由门组成的,所以会有延迟,从图上看,为了取得稳定的输出需要 10ns 的延迟。如果能有效地控制Sn 的开关时间就可以取得稳定的输出,把运算结果存入寄存器。

数据流动控制学习笔记

带输出控制开关的运算组合逻辑和数据流波形

设想下图中由开关 S1 和开关 S2 控制的两个组合逻辑都是运算逻辑,例如乘法器或加法器等,而寄存器 A,B,C 是用来寄存运算的输入、中间和输出数据的。如果能与时钟配合来精确地控制开关的闭合和断开,在寄存器中暂存的中间或输出数据都会是上一步运算的稳

定结果,而不会出现冒险和竞争的现象。

设想下图中由开关 S1、S3、S5 控制的三个组合逻辑都是运算逻辑,例如乘法器或加法器等,而寄存器组 A,B,C 是用来寄存运算的输入、中间和输出数据的。开关 S2、S4、S6 是三态门,能控制寄存器组 A,B,C 的输出到总线上还是与总线隔离。 如果能与时钟配合来精确地控制 S1 到 S6 开关的闭合和断开,在寄存器中暂存的中间或输出数据都会是上一步运算的稳定结果,而不会出现冒险和竞争的现象。运算的过程可以在这几个寄存器组内反复地执行,直到通过开关的控制使其停止。下面让我们通过简单的描述来说明一个极其重要的概念:生成与时钟精确配合的开关时序是计算逻辑的核心。

数据流动控制学习笔记

由开关逻辑控制的数据流动和计算逻辑结构示意图

我们在“数字电子技术基础”中已经知道当时钟正跳变沿到来时,在 D 触发器数据端口的数据才能存入触发器中。我们也知道当组合逻辑的输入变化时,输出必须经过一段时间后才能稳定,这是由于门级电路和布线的延迟造成的。只有稳定的输出对运算才是有意义的。

如果我们想把寄存器组 C 中的数据经过组合逻辑的运算存入寄存器组 A 中,我们应该如何来控制这几个开关呢?

从上面的描述我们知道开关 S1、S3、S5 分别控制着三个组合运算逻辑的输出。如果 S1、S3、S5 切断数据通道,则组合运算逻辑的输出总是为零(即每一个输出线总为低电平)。当时钟正跳变沿到来时这三个寄存器组将全部清零。为了要把寄存器组 C 中的数据送出,必须在时钟正跳变沿到来前接通 S6,待运算组合逻辑输出稳定后接通 S1,在时钟正跳变到来时便可把稳定的结果存入寄存器组 A 中。此时寄存器组 C 中的数据已被清零,因为这时开关 S3、S5、S2、S4 必须把数据通道断开,寄存器组 C 端口的零电平被存入寄存器组 C。但由原来寄存在寄存器组 C 中的数据所生成的结果已稳定地存入寄存器组 A 中。同理断开所有的通道,只按时序先后接通 S2、S3,在下一运算时钟前沿到来时就能稳定地把由 S3 控制的运算结果存入寄存器组 B。