数字电路从根本上可以分为两大类,组合逻辑电路和时序逻辑电路。
组合逻辑电路:输出只取决于输入,不包含记忆元件也没有记忆功能,因此不能存储状态。加法器,乘法器,编码器/译码器,多路选择器都属于组合逻辑电路。

时序逻辑电路:输出不仅取决于当前输入,还取决于电路过去的状态,包含记忆元件有记忆功能,可以存储状态。还通常与时钟信号同步,输出不会立即响应,而是等到特定的时刻(如时钟上升沿)。锁存器,触发器,寄存器,计数器,存储器都属于时序逻辑电路。
实际上简化一个CPU工作的步骤如下,先将需要进行运算的数据从寄存器或内存(时序逻辑电路)中取出,然后将数据送入加法器,乘法器(组合逻辑电路)等进行运算。最后在时钟信号的上升沿将计算得到的结果同步写回对应的寄存器中。
可以看到时许逻辑电路负责“记”,组合逻辑电路负责“算”。正是这种“记”和“算”的完美结合,才使得CPU能够有条不紊地进行各种复杂的程序。没有存储,计算将是瞬时的,无法累计的结果。没有计算,存储的数据是静态的,没有意义的。
上面的部分是希望给读者一个整体的感知,也是后面笔者介绍的整体逻辑,即分为两部分介绍时序和组合逻辑电路,本文将先着重介绍时序逻辑电路的锁存器,触发器,寄存器的基本原理。
锁存器要解决的根本问题是,如何采用原本无记忆的逻辑门电路,来构造一个具有记忆功能的电路。其基本逻辑是通过反馈将输出型号送回输入,从而使得形成一个可以保持自身状态的稳定回路。
首先还是举个例子方便大家理解,笔者小时候在刚学习数学中九九乘法表时,老师在讲解完十以内数字相乘得到的结果后,会要求我们将乘法表当成顺口溜全文背诵下来,这样能够满足日常算数的需要。但是当时笔者的脑子里只有神奇宝贝的各种进化和奥特曼的各种救场,对于乘法表的背诵远不及妙蛙种子的各种技能,所以每当课堂抽查和课后作业总是各种拉跨。最终喜提九九乘法表抄写20遍,每天早读课背诵半小时,所以一旦忘记三七二十一的时候,就不管三七二十一再拿出小纸条重复背诵一遍。没错我想说的就是这种自我提醒与重复的机制,让我们至今还能记得三七得二十一。
在设计具有记忆功能的电路时,本质类似于例子中体现的自我提醒机制。下面一步一步具体介绍如何让电路有记忆功能。
下图是上一篇文章中介绍的反相器/非门,它的作用是将输入信号进行反转。如果引入上面提到的自我提醒机制,也就是将非门的输出与输入相连。
假设最初的输入是一个低电压,经过非门后就变成高电压,输出的高电压经过导线后又会传回输入,然后输入又变成高电压,输出又变成低电压,如此反复循环。从当前电路的状态来看是无法存储数据的。
如果假设可以将信号线上的光速电磁波调慢,当输出的高电压回到输入前的某一位置时,在其导线中再接入一个非门。这样高电压的输出经过新的非门后又会变成低电压回到输入。此时的电路中的电压信号就不会反复变化,从而进入了一种稳定的状态。

当输入为高电压时同理。

上述两个电路在结构上是完全一致的,但是电路上的电压状态却是完全不同的。像这样同样结构但可以拥有两种不同状态的电路,将其称之为双稳态电路“Bistable Circuit”。也意味着可以利用这种电路来存储一些数据,左侧的代表1,右侧的代表0。

但是上述的电路存在一个不可忽略的问题,即电路的状态一旦确定就无法进行修改了,所以需要进一步改造电路,以实现数据修改的功能。选取两个或门放到两个非门的输入线上,或门多出的两个输入线分别InputA和B。

将InputA设置为低电压,InputB设置为高电压。此时左上角的或门的输出完全取决于下面信号线的状态,那么也意味着这个或门是不起作用的,其输出完全取决于另一个输入。由于InputB为高电压,此时右下角或门的输出状态确定为高电压,与上面非门输出的导线状态没有关系。那么也意味着自我提醒机制被阻断,双稳态机制也被打破。

将InputA设置为高电压,InputB设置为低电压。状态同理。

那么这种一个输入是高电压,另一个输入是低电压的情况下电路的状态是确定的,并且电路的状态只与 InputA和InputB的输入相关,那么如果用这个电路做储存的话,写入数据用这种状态即可。将输入一个是低电压,一个是高电压的状态称为写入状态。
如果此时将InputA的状态也设置成低电压,那么电路中的两个或门其实是不起作用的,因为输出完全由电路信号线决定,这时候的电路实际上就是上面只有两个非门构成的双稳态电路结构。此时观察发现电路中的状态并未发生改变,说明当前的状态就是电路上一时刻的状态,此时电路记住了过去发生的事情,拥有了记忆的功能。将两个输入都是低电压的状态称为锁存状态。
所以当想要写入数据的时候,将输入设置为一高一低,具体根据想要写入的是1还是0,然后再将两个输入都设置成低电压进入锁存状态。这样该电路就可以将写入阶段写入的数据存储下来了。再连接一根导线用于读取信号线上的电压获取存储的数据。
此时,写入状态,锁存状态,读取状态的功能就完备了。
上面对两个输入线的状态更改时缺少了同时输入高电压的情况,当InputA和B都是高电压时,此时这两个或门输出都是高电压,在经过非门又变成低电压,这么看下来是一种比较稳定的状态。
此时再将两个输入同时变成低电压,即回到锁存的状态。首先或门的输出会变成低电压状态,在经过非门后翻转成高电压,再进入非门后又变成低电压,最终又变成了循环反复的状态。也就意味着在从双高输入切换双低输入后,电路有可能会从一个稳定状态进入到一个不确定的循环中。电路中所有的电路都是理想化的,实际中翻转相应并非立刻完成的,在切换过程中的延迟会导致电路发生完全意想不到的情况。所以高电压的双输入在实际使用中需要被避免。
在上一篇文章中介绍了或门是由一个或非门和一个非门组合而成,那么或门之后再接一个非门,负负得正等于这两个非门不起作用,可以将其简化成一个或非门即可。
所以整个电路重新设计就变成了两个或非门连接,再将他们两个的方向拉起到一边,这样我们就得到了一个锁存器(准确来说是或非门组成的SR锁存器)。但是这个锁存器并不能直接放到芯片中当成寄存器来使用,原因我们下面介绍。

锁存器的真值表:
众壹云服务国内头部晶圆厂达20年,在致力于实现晶圆制造的工艺优化和良率提升的同时,发挥自身优势,推动芯片设计和制造协同。目前我们的AI ADC产品已经在国内头部的晶圆厂中进行了部署,并得到了实地验证,取得了良好的效果。AI ADC产品是为半导体制造商提供的基于机器视觉的自动晶圆缺陷分类的完整方案。通过升级部分高级制程控制(APC),将其与缺陷/良率管理系统(DMS/YMS)的关键指标关联起来,实现缺陷的减少及良率提升。
我们诚挚地欢迎所有有合作意向的客户与我们取得联系,以便能够深入探讨合作事宜,携手探寻互利共赢的发展机遇。我们热切期待与您交流,并且愿意为您提供最优质的服务与支持。