构建自己的CPU--锁存器
很多时候都需要存储数据,这一节就来介绍一下用门电路制作的存储结构
SR锁存
所谓锁存即为想一把锁一样把数据锁住,不让其丢失。先来看一下下面的实现:
锁存器 如上图,上边写着一个0
的是输入信号,连接着非门的第一个输入,而非门的第二个输入与一个输出相连,这样就可以把输入1
的信号进行存储,当输入信号由1
变成0
后,输出仍然是1
。
上面已经把数据1
存储了,但是无法再把数据从1
置换成0
,因此SR-锁存器
就发挥作用了。
SR锁存器如上图所示,由两个或非门
组成,每个或非门的一个输入与另一个或非门的输出相连,另一个输入与输入信号相连。定义上边的输入信号为Reset(R),下边的输入信号为Set(S),上一个输出为输出信号(Q), 下一个输出为反向输出(Q非,简写为Q~),与输出信号相反。下面是它的电路图和真值表:
R | S | Q | Q~ |
---|---|---|---|
0 | 0 | X | X |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 1 | -- | -- |
(X表示保持原状态。对于S和R都是1
时,就取决于是那一个先恢复0
来决定是存储1
或0
,在实际操作中是不允许的)
上边的SR锁存器一旦输入的数据改变就立马改变其值,当我们使用同一条输入信号来控制多个锁存器时,需要单独的控制其中一个时,这种结构不能满足要求,应为一旦改变输入信号,所有的锁存器都将会改变,因此需要一条信号来告诉锁存器,我要操控的时哪一个,这个信号为使能信号(EN)
我们来观察一下真值表,当S/R其中一个为1
时,锁存器才会改变值,然后我们通过使能信号为1
来确定时要改变值,也就是说当S/R和EN都为1
时才输出,这个逻辑就很符合与门
。所以,新的SR锁存器就出来了。下面是它的电路图和真值表:
EN | R | S | Q | Q~ |
---|---|---|---|---|
0 | 0 | 0 | X | x |
0 | 0 | 1 | X | X |
0 | 1 | 0 | X | X |
0 | 1 | 1 | X | X |
1 | 0 | 0 | X | x |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | -- | -- |
D锁存器
D锁存器是SR锁存器的改良版。在SR锁存器中,我们需要输入两个数据信号,并且要避开两个都是1
的情况。在D锁存器中,添加一个非门使S、R的信号始终保持相反的状态,并且把输入信号减少一个。下面是它的电路图和真值表:
EN | D | Q | Q~ |
---|---|---|---|
0 | 0 | X | X |
0 | 1 | X | X |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
【在本篇章中使用的软件均为Logisim】