RS锁存器是如何做到存储数据的呢?这里我们只讲解用与非门实现的RS锁存器,用或非门实现的RS锁存器的工作原理其实是相似的。我们先看图。
上图就是RS锁存器的结构。其中S和R为输入端,a和b为输出端,A使得a和R连接在同一个与非门,B使得b和S连接在同一个与非门。我们一般把a的值作为RS锁存器所保存的值。
当S = 1,R = 0时,我们会发现,不管之前A和B的值是多少,总会有a = 0,b = 1。这是因为R = 0,使得不论A的值为多少,NOT(A AND R)必为1,故b和B必为1,于是NOT(S AND B)必为0,即a必为0。此时,我们说RS锁存器存储的值为0,因为a的值就是0。
同理,当S = 0,R = 1时,根据对称性,不管之前A和B的值是多少,必有a = 1,b = 0。这时我们说RS锁存器存储的值是1。
S和R的值都为1时是一种比较特殊的情况。假设一开始S = 1,R = 0,然后我们让R的值变为1,S的值保持不变,这时我们会发现a和b的值是不变的。这是因为之前A的值已经为0了,即使R的值变为1,NOT(A AND R)依然为1,于是整个电路就没有发生什么变化。所以,当RS锁存器从“S = 1,R = 0”的状态转移到“S = 1,R = 1”的状态时,RS锁存器存储的值不变。根据对称性,当RS锁存器从“S = 0,R = 1”的状态转移到“S = 1,R = 1”的状态时,RS锁存器存储的值也不变。
S和R的值都为0的状态对于RS锁存器来说是没有意义的,所以我们一般认为RS锁存器只有上述三种状态。
所以,当我们设置S = 1,R = 0时,相当于把值0写入锁存器;当我们设置S = 0,R = 1时,相当于把值1写入锁存器。当S和R的值都变为1时,之前被写入锁存器的值依然被存储在锁存器中,就像是被锁住了一样。这就是RS锁存器的工作原理。