所有关于电路

有限状态机

第16章 - 数字计算原则

PDF版本

反馈是一种迷人的工程原则。它可以将相当简单的设备或进程变成了更复杂的东西。我们已经看到了反馈的效果与一些相当令人震惊的效果有意集成到电路设计中:

  • 比较器+负面反馈------>可控增益放大器
  • 比较器+正面反馈------>比较器与滞后
  • 组合逻辑+正面反馈 - >多族脉动

在过程仪器领域,反馈用于将简单的测量系统转换为能够控制的东西:

  • 测量系统+负反馈 - >闭环控制系统

反馈,正面和负面,具有向设备或系统的操作添加全新动态的趋势。有时,这些新动态找到了有用的应用程序,而其他时候它们仅仅是有趣的。

通过编程到存储器设备的查找表,从数据输出的反馈返回地址输入创建了一系列新型设备:有限状态机, 或者FSM.

上述电路示出了基本思想:存储在每个地址处的数据成为ROM被解决的下一个存储位置。结果是在输出时在输出端时的二进制数(按照编程到ROM的序列)的特定序列。

为避免信号时序问题,我们需要将数据输出连接回地址输入,通过4位D型触发器,使得序列将步骤进行到受控时钟脉冲的节拍:

对于这种设备的工作的类比可能是邮局框的数组,每个框都有一个具有识别号码(地址)的识别号码,并且每个包含一张纸的纸张,其中包含另一张纸的纸张。盒子写在它上(数据)。一个人,打开第一个p.o.框,会在它中找到下一个p.o.的地址。盒子打开。

通过在p.o中存储特定的地址模式。框,我们可以决定每个盒子打开的顺序,因此纸张被读取的顺序。

在ROM中具有16个可寻址的内存位置,该有限状态机将有16个不同的稳定“状态”,其中它可以锁存。在每个状态中,下一个状态的标识将被编程到ROM中,等待下一个时钟脉冲的信号作为地址反馈到ROM。

这种FSM的一个有用应用是生成任意计数序列,例如格雷码:

地址----->数据格雷码计数序列:0000 -------> 0001 0 0000 0001 -------> 0011 1 0001 0010 -------> 0110 2 0011 0011-------> 0010 3 0010 0100 -------> 1100 4 0110 0101 -------> 0100 5 0111 0110 ------- >>>>>>-----> 0101 7 0100 1000 -------> 0000 8 1100 1001 -------> 1000 9 1101 1010 -------> 1011 10 1111 1011 -------> 1001 11 1110 1100 -------> 1101 12 1010 1101 -------> 1111 13 1011 1110 -------> 1010 14 1001 1111 -------> 1110 15 1000

尝试按照FSM执行序列遵循灰码计数序列:从0000开始,遵循存储在该地址(0001)的数据到下一个地址,依此类推(0010),等等在(0110)等中。结果,对于所示的程序表来说,寻址序列从地址跳转到地址,以似乎是一种随意的方式,但是当您检查访问的每个地址时,您会发现它遵循4位格雷码的正确顺序。

当FSM到达其最后一个编程状态(地址1000)时,存储的数据有0000,其在与下一个时钟脉冲的步骤中在地址0000中再次启动整个序列。

通过使用具有更多地址线的ROM,我们可以扩展上述电路的功能,并添加更多编程数据:

现在,就像通过使用更多地址线作为“功能控制”输入,我们转换为算术逻辑单元(+, - ,x,/函数)的查找表加法器电路,这个fsm计数器可用于生成更多比一个计数序列,针对两个功能控制线输入组合中的每一个(A4 = 0或1)的四个反馈比特(A0至A3)编程的不同序列。

地址----->数据地址----->数据00000 -------> 0001 10000 -------> 0001 00001 -------> 0010 10001 -------> 0011 00010 -------> 0011 10010 -------> 0110 00011 -------> 0100 10011 -------> 0010 00100 -------> 0101 10100 -------> 1100 00101 -------> 0110 10101 -------> 0100 00110 -------> 0111 10110 -------> 0111 00111 -------> 1000 10111 -------> 0101 01000 -------> 1001 11000 -------> 0000 01001 -------> 1010 11001 -------> 1000 01010 -------> 1011 11010 -------> 1011 01011 -------> 1100 11011 -------> 1001 01100 -------> 1101 11100 -------> 1101 01101 -------> 1110 11101 -------> 1111 01110 -------> 1111 11110 -------> 1010 01111 -------> 0000 11111 -------> 1110

如果A4为0,则FSM在二进制中计数;如果A4为1,则FSM计数在格雷码中。在任何一种情况下,计数序列都是任意的:由程序员的呼扰确定。就此而言,计数序列甚至不必具有16个步骤,因为程序员可以决定在任何一个步骤中将序列回收到0000。它是一个完全灵活的计数设备,由ROM中的软件(编程)严格确定的行为。

通过利用具有附加地址输入和数据输出线的ROM芯片,我们可以更多地扩展FSM的功能。拍摄以下电路,例如:

这里,D0至D3数据输出专门用于反馈到A0至A3地址线。日期输出线D4至D7可以编程为输出除FSM的“状态”值之外的内容。作为四个数据输出位被送回四个地址位,这仍然是一个16状态的设备。

但是,具有输出数据来自其他数据输出线,使程序员更自由地配置功能。换句话说,这个设备可以远远超过伯爵!该FSM的编程输出不仅取决于反馈地址线(A0至A3)的状态,还取决于输入线的状态(A4至A7)。

d型触发器/触发器的时钟信号输入也不必来自脉冲发生器。为了让事情更有趣,触发器/触发器可以连接到一些外部事件的时钟,这样FSM只有在输入信号告诉它的时候才会进入下一个状态。

现在我们有一个设备更好地满足“可编程”这个词的含义。写入ROM的数据是最真实的程序:输出基于设备的输入遵循预先建立的顺序,并且其序列中的“步骤”。

这非常接近于操作设计制品,由ALAN图灵发明的理论计算设备,数学上被证明能够解决任何已知的算术问题,给予足够的内存容量。