当然有用。通过学习你可以学到很多关于数字设计的知识。数字电子产品使用两种东西来构建。首先是逻辑,AND和OR的互连,而不是实现逻辑表达式的元素。
在实践中,实际上使用了其他逻辑元素,例如NAND,但是AND,OR和NOT更容易理解。其次是可以容纳一个或多个位的存储器元素。当引入存储器元件时,器件可以具有所谓的状态。它的存储器元素中不同的位组合对应于不同的状态。
考虑一个自动售货机状态机,该状态机在状态0时开始,并在每次插入硬币时移动到另一个状态。这样,机器就可以跟踪总金额,知道何时投入足够的资金并知道需要多少改变。
为了设计机器的电路,从带有箭头的状态图开始,显示转换到其他状态以及触发它们的条件。对于每个箭头,一个逻辑表达式标识一个条件。然后可以计算出所有这些表达式,并用逻辑元素实现它们。
对于自动售货机来说,这并不是很困难。对于复杂的控制器,它变得更加困难。微控制器是做同样事情的一种快捷方式。考虑一个“存储器”(从字节或字的意义上来说)是k bits,并且有n条地址线在存储器中产生2 ^ n个位置。
该存储器采用设计编程,在实践中为只读。请注意,使用存储器的地址位作为“输入”并将数据位用作输出,可对存储器进行编程以实现任何逻辑功能。
增加一个k bits的寄存器来保存一个存储器位置的内容会产生一个状态机。如果k bits被分成例如一个操作码和一个地址。操作码组位控制电路的其他部分(例如分配自动售货机产品),其他部分是n bits的存储器地址,每组k bits变为具有分支能力的微指令。
再加上一些算术逻辑,还有一些寄存器(其中一个或多个需要控制输入左右移位),并且可以构建一个CPU,其机器指令由一系列微指令实现。
就在二十世纪七十年代和八十年代时候,很多家公司使用这种设计构建了许多成功的计算机。其中一台(Digital Equipment公司的VAX 11)有一个计算整数多项式的机器指令,用于地址计算。事实证明,使用更简单的指令可以更快地执行指令。
与传统的状态机相比,单片机通常是一个效率较低的实现。但它们可以很容易地进行更改,设计更快,而且是更出色的控制器解决方案。