数据流动控制学习笔记
服完上篇博文的知识,再服用此博文效果更佳!认真看下去,其实还挺有意思。
本文来自于《从算法设计到硬件逻辑的实现》,仅供学习交流使用!
我们知道,诸如加、减、乘、除、比较等运算都可以用组合逻辑来实现,但运算的输入必须稳定一段时间,才可能得到稳定的输出,而输出要被下一阶段的运算作为输入,也必须要有一段时间的稳定,因而输出结果必须保存在寄存器组中。在计算电路中设有许多寄存器组,它们是用来暂存运算的中间数据。对寄存器组之间数据流动进行精确的控制,在算法的实现的过程中有着极其重要的作用。这种控制是由同步状态机实现的。
开关逻辑应用举例:
设想下面的组合逻辑是一个乘法器,把输入的数乘 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。
这个简单的例子说明:如果我们能设计出一个状态机,在这个状态机的控制下生成一系列的开关信号,严格按时钟的节拍来开启或关闭数据通道,我们就能用硬件来构成复杂的计算逻辑,如果硬件的规模可以达到几十到几千万门,我们就可以设计出并行度很高的高速计算逻辑。
文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。
原文链接:reborn.blog.csdn.net/article/details/82316903
- 点赞
- 收藏
- 关注作者
评论(0)