我是靠谱客的博主 危机黑裤,最近开发中收集的这篇文章主要介绍【数字逻辑入门】计算机如何存储1位二进制数0 前言1 确立一个目标,提升你的认知效率2 R-S锁存器3 锁存器的核心和本质3 外壳一:基本R-S锁存器4 外壳二:门控R-S锁存器5 外壳三:D型锁存器6 一点注意7 思考题&预告,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

0 前言

本文将会以R-S锁存器为例,引出锁存器的核心和本质,之后再带你构建更多类型的锁存器,你能够:

  • 感受到由浅入深的学习方式
  • 体会到掌握核心本质的快感
  • 深刻理解核心套外壳的设计理念(产品迭代1.0–>2.0–>3.0)

同时,强烈建议你使用logisim软件,边看文章边实践,这样能够加深理解,这款软件半小时即可入门,图形化的操作方式,简单又好用。

核心套外壳的思想,能够帮助你【区分表象与本质,抓住问题的核心,理解设计理念!】

1 确立一个目标,提升你的认知效率

点进这篇文章,我想你是非常想要学会锁存器相关知识的,那么,为了进一步提高你的认知效率,我先给你定下一个目标,带着这个目标,再去一步一步寻找和学习相关知识,并且,你应该使用软件,在实践中学习,这么一来,你的认知效率将会翻倍。

我们都知道计算机的硬盘和内存,我们也知道,这些设备能够存储数据,并且这些数据是二进制信息,也就是0、1的各种排列组合,那么,你是否曾经产生疑惑,4GB、16GB,乃至1TB的信息,是如何被存储的?

今天让我们来解答这个问题,我们先不管1TB的信息如何存储的,今天我们就谈:如何存储1位二进制信息,也就是如何存储一个0或者一个1

我们需要制作一个器件,能够存储一个0或者一个1。这个器件,就是R-S锁存器,在通电状态下,它能够锁住(存储)1个二进制位,也就是1 bit

让我们来一步步地揭开它的神秘面纱吧!

2 R-S锁存器

2.1 基本结构

我们来看一下他=它的结构,通常有两种描述方法:

  • 描述1
    在这里插入图片描述
  • 描述2
    在这里插入图片描述

这两种结构完全一样,只不过放置的方式不一样,通常我们会采用描述2的方式。

可以看到,R-S锁存器包含了2个或非门,2个输入端口,1个输出端口,这个结构真的简单至极。

如果你学过一点数字逻辑的知识,也许你会跟我争辩,R-S锁存器不是2个输出端口吗?先按照我说的继续往下听,之后会解释的。

2.2 如何锁住1-bit

那么,这样一个结构,如何锁住(存储)1-bit的?

为了方便描述,我们先为上面的结构命名一下。

在这里插入图片描述

  • 2个输入端口分别命名为RS
  • 1个输出端口被命名为Q

让我们记住这个初始状态

RSQ
000

然后,我们将R置为1
在这里插入图片描述
你会发现,此时的状态是

RSQ
100

我们再S置为1
在这里插入图片描述
此时的状态是

RSQ
110

我们再R置为0
在这里插入图片描述
此时的状态是

RSQ
011

我们再S置为0
在这里插入图片描述
此时的状态是

RSQ
001

接下来,我们汇总一下上面的几种状态

RSQ
000
100
110
011
001

我们可以看到,同样是0,0,但是输出却可能是01,这也就意味着,这不是组合逻辑,而是时序逻辑,输入的顺序会影响结果

同时,我们再继续进行实验可以发现(此处请自行完成实验,亲自体验以下结论

  • 一旦置R = 1,S = 0,S不变的情况下,无论R如何改变,Q都等于0
  • 一旦置R = 0,S = 1,R不变的情况下,无论S如何改变,Q都等于1
  • R = 0,S = 0的时候,Q的结果,取决于上一个状态。如果之前是因为R = 1,S = 0导致的Q = 0,则现在的Q依然0;如果之前是因为R = 0,S = 1导致的Q = 1,则现在的Q依然为1
  • 一旦置R = 1,S = 1,Q一定等于0,这种情况与我们的目标不符,我们需要禁止

因此,我们得到了R-S锁存器特性表

RSQ
00和之前状态的Q一样
011
100
11禁止使用

我带你分析完了这些,我们改回看主题,看一下它是如何锁住1-bit的。我们看一下刚才描述的状态:

  • 一旦置R = 1,S = 0,S不变的情况下,无论R如何改变,Q都等于0
  • 一旦置R = 0,S = 1,R不变的情况下,无论S如何改变,Q都等于1

我们观察后面加粗的句子,不难看出,1个二进制数被“锁在”了器件中,这也就是所谓的锁存器,它在功能上,实现了存储1个二进制位

2.3 为什么可以锁住1-bit

刚才,我们知道了R-S锁存器能够存储1个二进制位,并且已经达成了目标,是的,我们成功存储了1个二进制位,但是,这还不够,我们应该保持好奇心,问一问自己,为什么能够锁住?

让我们来分析一下R-S锁存器的工作,以R = 1,S = 0为初态举例。

下面是初态,并且我在几个关键的地方做了标记。
在这里插入图片描述
之后,我令R = 0,我们来逐步地分析一下,到底发生了什么。

首先,0信号传到了a端,此时a = 0
在这里插入图片描述
然后,ae进行或非运算,得到的结果传到了b端,此时b = 0
在这里插入图片描述
然后b端的结果,反馈到了c端,c = 0;之后,可以得到d = 1;之后,d端的结果又反馈到了e端,可以得知,e = 1并没有发生变化,就此,这个过程就稳定了下来,b端输出到Q的数据也就是最终结果了。

我们梳理一下这个过程,在令R = 0之后,只有a端的数据变为了0,其他端口的数据均没有变化,这样一来,也就产生了锁住数据的现象,产生这种现象的原因,是因为反馈回路的存在

我们可以知道,bc锁住了0de锁住了1,这二者正好相反,因此我们有时候也会将R-S锁存器设计为下面的样子,这样可以获得两个一直相反的输出结果
在这里插入图片描述
其中,上面读作输出Q,下面读作输出Q拔,二者的取值永远相反,你也能够理解,为什么之前我们禁止了R = S = 1的情况,因为这样输出就不相反了,与设计目标不符。

2.4 为什么叫“R-S锁存器”

为什么这个器件被命名为R-S锁存器呢?为什么不叫别的名字?

我们要知道,凡是命名,都有其含义,都能表达其意义,这样的命名才有价值,R-S锁存器也是如此。

它是英文名称是:Set-Reset latch,有被称为S-R Latch或者R-S Latch

我们来解释一下

  • R就是reset重置、复位的意思,所以,当仅有它为1的时候,输出Q = 0
  • S就是set设置、置位的意思,所以,当仅有它为1的时候,输出Q = 1
  • Latch,锁存器的意思,它能够存储1个二进制位

2.5 R-S锁存器的功能

R-S锁存器,也可以被称为置位复位触发器,我想你明白这个含义了,现在我们只是总结一下。

RSQ说明
00和之前状态的Q一样保持
011置位
100复位
11禁止使用非法

3 锁存器的核心和本质

通过R-S锁存器,我们可以理解锁存器的本质,掌握一类锁存器的核心,这才是我们要关注的重点内容,至于锁存器的设计和样子,不是最重要的,那只不过是在核心的基础之上,套上了外壳,从而让其拥有更广泛的的应用。

关于核心套外壳,我有必要进一步解释一下,我们知道,计算机领域又很多核心部件,例如CPU,这是被外国垄断的高科技器件,它是核心,而计算机其他的部分,内存、硬盘、显示器等等,都是外壳,我们给核心套上不同的外壳,就构成了不同的计算机,能够进行不同的应用;又比如富士康代工厂,他们做的就是给核心套上外壳的工作。

我想你应该能够理解核心的重要性了。

那么锁存器的核心是什么?

在这里插入图片描述
这就是锁存器的核心,原理方面,我之前已经详细讲解过,不再赘述,但是希望你认真对待那些看似简单容易的知识,因为它们可能蕴含着拥有无穷力量的核心思想

3.1 核心套外壳的产品

那么核心套外壳之后,有那些产品呢?有很多,例如:

  • 基本R-S锁存器
  • 门控R-S锁存器
  • D型锁存器

甚至,由此核心,还可以构成各种各样触发器

需要注意的是,这些外壳,并不是死板的,你完全可以根据需要,灵活地变化他们,不必拘泥于某种特定的形式,不过前提是,变化之后的产品真的很好用,否则,你更应该直接使用封装好的产品。

后面的小节,我会为你详细讲解核心套外壳的产品

3 外壳一:基本R-S锁存器

嘿!一个新的目标出现了,之前我们为了存储1位数据,制作了R-S锁存器,现在,我们需要存储一位数据,并能够让他输出存储的数据,以及和存储数据互补(0和1在二进制下是互补的)的数据

这个产品我不再分析,因为你之前见过了:
在这里插入图片描述
现在我们将其封装一下,让它更像一个产品。
在这里插入图片描述
至于它的功能,我想你已经知道了,基本R-S锁存器,增加的外壳是一个输出端口

4 外壳二:门控R-S锁存器

现在,新的任务又下达了,我们的基本R-S锁存器,可以随意被使用,这可不好,现在我们需要增加一个开关,只有开关打开的时候,基本R-S锁存器才可以被使用。

我们考虑一下,看看上面封装好的基本R-S锁存器,我们可以加的外壳是:在进入R、S输入端口之前,增加2个与门,这样就可以控制输入信号的有效、无效。

在这里插入图片描述
你可以试一试这个电路,这就是门控R-S锁存器

名称的含义,门控,就是加一个开关,它被称为使能端(Enable terminal),简写EN

我们将它封装一下:
在这里插入图片描述

5 外壳三:D型锁存器

全新的任务

  1. 彻底禁止掉R = S = 1的情况,对于任何输入的数据,使其,不可能存在这种情况,保证安全,完全避免非法状态。
  2. 让这个器件能够实现数据0和1的写入,并且能够控制是否写入。

我们由门控R-S锁存器开始思考,既然R和S不能相同,那就只能相反了,这样虽然会舍弃掉R = S = 0的情况,不过,既然这种情况会与上一个状态相同,而上一个状态R和S一定相反,所以,舍弃掉又有何妨呢?因此,我们的思路就有了,让R和S永远相反,我们怎么做呢?我想你应该知道了,使用1个输入端和1个非门

就像下面这样,加缓冲器是为了让数据流动时间和加了非门的线路同步
在这里插入图片描述
那么第二个目标如何达成?显然我们已经完成了一部分,1个输入端和1个开关我们已经有了,我们只需要,去掉Qbar即可。
在这里插入图片描述
你会发现,这里有了较大的变化,我的节奏加快了,如果你前面认真实践了的话,我想你是适应这种变化的。

我来解释一下这些变化

  1. 为了达成目标,我们要让R和S的值一直相反,因此我们加了一个非门和缓冲门,用一个输入端操控它,注意,不要将非门放错位置,你仔细想一下会明白怎么放置的(举一个例子就好,例如DI = 0的时候,如何让DO = 0)。
  2. 我们将开关作为写入端
  3. 我们不使用Qbar端口

我来解释一下端口名称的变化

  1. DI:数据输入端,可以控制输入的数据是0还是1
  2. DO:数据输出端,可以读取存储在锁存器中的数据
  3. W:写入端,可以控制是否将数据写入端的数据写入到锁存器中
    1. W = 1,则DI中的数据会被写入到锁存器中,并且存储起来,此时,DO读取的数据是和DI一样的
    2. W = 0,则DI中的数据不会被写入到锁存器中,此时,DO将会读取锁存器中存储的数据,与DI的数据无关

我们封装一下这个器件
在这里插入图片描述

扩展内容:这也是我们现在会常用的锁存器类型,我们通常会使用Verilog HDL实现它

module moduleName (
       input wire w,
       input wire Din,

       output reg Dout
   );

   always @(w or Din)
   begin
       if(w)
           Dout <= Din;
       else
           Dout <= Dout;
   end

endmodule

关于Verilog HDL的知识,你可以自行搜索,如果你不感兴趣,这部分内容可以忽略。

6 一点注意

这里器件的存储,不是永久保存,因为它的本质是电子器件,电是难免会泄露的,我们还需要对其做一些补充,这里不深入展开。

另外,对于门控R-S锁存器中的开关,也被称为保持位(Hold That Bit),当它为0的时候,无论R、S怎么变,锁住的数据也不会改变,这也就是所谓的保持

7 思考题&预告

我留下思考题和预告,请你仔细思考并认真实践

  1. 最初,我们使用或非门构造了R-S锁存器,事实上,与非门一样可以完成这件事情,我在3.1节提过,产品的设计的不能死板,它是灵活的,请你思考一下如何设计。
  2. 请思考一下,具体讲解的几种外壳,有没有感受到,外壳的设计也又核心思想支撑? 之后我们会揭秘。
  3. 核心套外壳的产品,也完全可以作为新的核心,为他们再赋予外壳,做出更多有用的产品。
  4. 我们的目标是构建一个RAM存储器,以R-S为锁存器的RAM产品,随着时代的发展,它的性能提升进入了瓶颈期,这个时候,人们的最佳选择是优化核心,这也由RAM存储器,转变成了SRAM、DRAM等类型的存储器,这些后面也会提及(也可以按照此思路,去想一想:算盘–>计算器–>电子计算机–>量子计算机)。

最后

以上就是危机黑裤为你收集整理的【数字逻辑入门】计算机如何存储1位二进制数0 前言1 确立一个目标,提升你的认知效率2 R-S锁存器3 锁存器的核心和本质3 外壳一:基本R-S锁存器4 外壳二:门控R-S锁存器5 外壳三:D型锁存器6 一点注意7 思考题&预告的全部内容,希望文章能够帮你解决【数字逻辑入门】计算机如何存储1位二进制数0 前言1 确立一个目标,提升你的认知效率2 R-S锁存器3 锁存器的核心和本质3 外壳一:基本R-S锁存器4 外壳二:门控R-S锁存器5 外壳三:D型锁存器6 一点注意7 思考题&预告所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(83)

评论列表共有 0 条评论

立即
投稿
返回
顶部