锁存器的工作原理_数字电路学习笔记(十):更多锁存器和触发器

1fcb12810052970fe9ddca56ebea18a2.png

上一章中提到了普通RS锁存器的两大缺点:

1. S端口和R端口不能同时有效,但实际应用中不能保证这种情况不出现,此时可能会出错;
2. 在计算机中,有许多内存单元协同组成一个寄存器,存储同一个数据。但每一位数据可能是先后到来的(比如加法器,计算出最高一位会花费比低位更多的时间),如果内存单元被写入的时间无法统一,就会造成混乱。RS锁存器并没有提供控制写入的端口——只要输入变化,状态就会改变。

本章中将要探讨如何改进这两点,并设计出更加适合存储数据的存储电路。基础电路仍然是RS锁存器:

2b447f253f5fdd91923d17fa62ad4975.png

一、门控RS锁存器

我们从问题二开始解决。为此我们只需增加一个写控制端口。当该端口为高电平时,

可以正常输入;当该端口为低电平时,
被保持在0,锁存器处于保持状态。那么,一个与门便可以解决问题。

e3184ed77480ca6d7dd6997832aa0108.png

控制端口,我们将其命名为

,即时钟(clock)。时钟信号依然是一种普通的信号,只是因为它起控制作用,会周期性变化,所以有这么一个特殊的名字。

门控RS锁存器的功能和普通RS锁存器一样,也有一样的状态转换图和特性方程:

,唯一不同的就是多了一个控制的时钟信号。当该信号为高时(
),锁存器会像普通锁存器一样工作;该信号为低,则无论
输入为什么,状态都会被保持。这样,计算机就可以在时钟为低时做计算,并准备好所有要写入的信号,然后在时钟信号为高时写入。

二、D锁存器

接下来,我们解决第一个问题:摆脱RS锁存器的

的约束条件。最简单的解决方法自然是将
取反之后作为
,这样两者永远不相等,也就不可能都是1了。我们把剩下的一个输入取名为
(D是Data的意思——D锁存器是数据存储单元的基础结构)。

dbbd43ee50b967db80b64817e4a5c46a.png

为此,我们做出的牺牲是放弃了

时的保持功能。我们可以通过特性方程看它的功能:由于
,我们有

因此我们发现,当

时,
会一直和
保持同步;然后当
后,才会保持之前的最后一个状态。我们画出它的状态转换图:

39cbd3287e52a4552bf5ce954d749862.png

D锁存器在

时,对输入是“透明”的,和一根导线没有区别;因此,任何输入的变化都会引发状态的变化。其实对于RS锁存器也有这样的问题。但是,这又和我们的第二点设想有冲突:“
内存单元被写入的时间应当统一”,如果在时钟信号变为低之前,新的数据就已经到来,就会引起错误。究其原因,是因为锁存器能够改变状态的时间是整个高电平期间——为了改进这一点,我们要设法把改变状态的时间缩短为一个时刻

三、RS触发器

一个只在某个时刻发生状态更新的锁存器就叫做触发器。我们考虑如何实现在某个时刻的更新。如果有两个RS锁存器,可以将它们串联,并给一个相反的

信号:

573cca659f08cca9dc28158e6e7fc16b.png
尤其注意,主锁存器的Q要连至从锁存器的S,这样才能保持两者状态一致而不是相反

第一个锁存器叫主锁存器,第二个叫从锁存器。从锁存器接收主锁存器的状态作为输入。在时钟信号低→高→低的一个周期中,它的功能发生了这样的变化:

  1. 时,主锁存器处于保持状态,不接受输入;从锁存器可以工作,但主锁存器状态不改变,所以它也不会发生改变。此时整个触发器就处于保持状态。主锁存器状态为1,则从锁存器S=1, R=0,状态也为1,反之则状态为0,所以整个触发器的状态和主锁存器状态一致。
  2. 时,主锁存器接受输入,能改变状态,但此时从锁存器不再工作,因此该状态改变暂时无法反映到触发器的输出上,触发器仍然处于保持状态;
  3. 又变回0,此时从锁存器重新开始工作,把主锁存器的最后一个状态接收,然后改变触发器输出。

一个信号要想通过整个触发器从输入走到输出,要先在时钟为高时进入主锁存器,然后在变成低电平时从主锁存器进入从锁存器,因此,只有在

从1变成0的一个瞬间,触发器才会发生状态更新;其他所有时候,都处于保持状态。这被称作下降沿更新。

要做出上升沿更新,也就是

从0到1的瞬间更新的触发器,只需要让信号在低电平时进入主锁存器,然后在高电平进入从锁存器即可,也就是再加一个反相器:

e90bfa011e3232dd4622e6d545c57402.png

要注意的是,触发器仅仅改变了锁存器更新的机制,并没有改变它的逻辑功能——比如,对于RS触发器,它的特性方程和RS锁存器一致:

四、JK触发器

对于RS触发器,我们也要继续解决这个约束条件的问题。当然,我们仍可以像D锁存器那样,把

当成
;这样连出的电路,自然就是D触发器,将会在后文介绍。

但还有第二种方案,就是利用

的这个性质,将其和
分别相与。不妨管两个输入分别叫J和K(为了纪念工程师Jack Kilby)——有
。这样,就必然有

58ee562c6e3bfcced50938584c6ae101.png

仍然用代入的方法得出它的特性方程:

但是,这个特性方程不像D锁存器一般直观,所以在画状态转换图时,我们可以分别代入各种输入并列出特性表:

a5ede0eee2f95278e7471a0d9555e3c8.png

从此表来看,J和K的四种取值对应四种功能——其中保持(

),置1(
),置0(
)三种功能都和RS锁存器对应功能一致,而由于多了
的输入情况,它还有翻转(
)的功能。

cd31f4c047b0e90893de9b628eb69862.png

JK触发器相比于RS触发器,还有一个性质,就是它会自己把自己锁死。对于RS锁存器,我们可以放心地在

为高电平时随意改变输入,因为从锁存器只关心当它开始工作的一瞬间,也就是
下降的那一刻时,主锁存器的状态;但对于JK触发器,我们就不得不关心它在高电平
期间的输入,而不只是下降沿瞬间的输入。比如,考虑这样的变化:

f7bf0c1d2a9c4735b21b129391a5f746.png

理论上,在高电平期间的

的那一个小扰动不应该影响最终的输出——触发器应该在时钟的下降沿工作,而那一刻对应的是
。因此,
应该保持在0。然而,却发现
变成了1。

这是因为,由于

永远相反,在任意时刻,
中只有一个能够工作——比如在这里,当状态为0时,只有
能够产生影响,而
的取值则根本不影响主锁存器的状态。这样,一旦
为1,主锁存器的状态就被保持在了1,无论
的取值为何。这被称作“
一次翻转”——JK触发器在两个下降沿之间的一个周期中,一旦被翻转,就无法被还原。它的原理是,只有与现态相反的输入能起作用——
时,
起作用;
时,
起作用。这种问题可能会导致状态受到干扰。

五、D触发器

仍然令

,便可以得到D触发器。

3109ae60c613536debe999741d17cf0c.png

它的逻辑功能仍然是:

相比JK触发器,由于它不使用自身状态作约束,所以不会产生一次翻转的问题。和RS触发器一样,它只关心下降沿瞬间主锁存器的状态。

六、T触发器

T触发器是一类偏功能性的触发器——它没有做出任何显著的改进,而只是提供了一种特殊的逻辑功能。我们将同一个输入赋给JK触发器的

7cdfb0be88b02e1829c6bda7975319f3.png

那么,它的特性方程为:

同样画出它的真值表和转换图:

25807f0277a3e8b8b135334e76155813.png

ea05fb11e9ea673d26b90747e1e14761.png

由此发现,它只有“保持”和“翻转”的功能,也就是JK触发器中

对应的两个功能。

总结:本文中,我们的锁存器经历了如下的迭代:

2b447f253f5fdd91923d17fa62ad4975.png
RS锁存器

e3184ed77480ca6d7dd6997832aa0108.png
门控RS锁存器

dbbd43ee50b967db80b64817e4a5c46a.png
D锁存器

573cca659f08cca9dc28158e6e7fc16b.png
RS触发器

339026ba67f4141767489f0be31640ba.png
JK触发器

3109ae60c613536debe999741d17cf0c.png
D触发器

dd9fff04b8d3fa90b75acdb38b9a8b17.png
T触发器

我们改进了上一章所提及的两个问题,并最终得到了两套解决方案:JK触发器和D触发器。这两个触发器,一个更全面,一个更简单,两个都是在时序电路设计中最常用的触发器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级筛选的以公式结果为条件

群里有朋友问到一个“高级筛选”的问题: 如何筛选出名称列中所有以“A"开头,以“E”到“G”结尾的数据? 这让我想到了高级筛选中“以公式结果作为条件”的方法。很久不用已经生疏了,温习了下,结果如下&#xff1a…

怎么求平均数_EXCEL怎么求企业连续几年业绩的平均增长率

如果你是个秘书,老板哪天问你,我们公司过去三年业绩的平均增长率是多少呢?你该怎么算呢?每年的增长率加起来直接除以3?如下图:报告老板,我们过去三年的平均增长率11%,老板乐开了花。…

linux常用命令:top 命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是 一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止…

Ext.form.field.ComboBox组合框

1、Ext.form.field.ComboBox主要配置 Ext.form.field.ComboBox主要配置项 配置项类型说明allQueryString发往服务器用来查询全部信息的查询字符串,默认为空autoSelectBoolean是否自动选择第一个列表值,默认为truedefaultListConfigObject listConfig配置…

联想服务器开启虚拟化,联想电脑虚拟化开启方法

适用范围:联想电脑操作步骤:1、Intel平台笔记本:进入BIOS,选择configuration的选项,找到Intel Virtual Technology,改成Enable的开启状态。2、AMD平台的笔记本:进入BIOS,选择configuration的选项&#xf…

绘制半圆_超细致:Ai绘制萌蠢可爱卡通形象

来源:Envato艺云台原文作者:Amanda Tepie 翻译:Yimin Zhou完成效果在这篇教程中,我将展示如何在Adobe Illustrator中使用基本图形工具、路径查找器、宽度和描边工具创建一个可爱的呆萌兽。完了你还可以利用这些技巧绘制其他卡通…

服务器系统装软路由,服务器系统设置软路由

服务器系统设置软路由 内容精选换一换无法正常使用Cloud-init。弹性云服务器获取Metadata的流程如图1所示:获取Metadata流程图您可以按照以下原因进行排查,如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。检查弹性云服务器是否…

Scrapy-redis实现分布式爬取的过程与原理

Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据的爬取。但是当我们要爬取的页面非常多的时候,单个主机的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候…

华为服务器如何登录修改密码,如何修改云服务器的登录密码

如何修改云服务器的登录密码 内容精选换一换本节为您介绍如何通过控制台提供的远程登录功能(即VNC方式)登录到弹性云服务器上。登录成功后,如需使用VNC界面提供的复制、粘贴功能,请参见后续处理。对于“密钥对”方式创建的Linux弹性云服务器,…

云服务器有i5的性能吗,i5云服务器

i5云服务器 内容精选换一换查询指定后端云服务器组的后端云服务器。支持过滤查询和分页查询。如未特殊说明,匹配规则为精确匹配。GET /v2/{project_id}/elb/pools/{pool_id}/members无请求样例1 全量查询后端云服务器GET https://{Endpoint}/v2/1a3e005cf9ce40308c9…

windows下MongoDB的安装及配置

https://blog.csdn.net/heshushun/article/details/77776706 一、先登录Mongodb官网https://www.mongodb.com/download-center#community 下载 安装包。32、64位的都行。 二、安装MongoDB 下载后的安装包: 安装比较简单,类似于普通QQ软件,中…

CSS3实现多样的边框效果

CSS3实现多样的边框效果 原文:CSS3实现多样的边框效果半透明边框 实现效果&#xff1a; 实现代码&#xff1a; <div> 你能看到半透明的边框吗&#xff1f; </div>div {/* 关键代码 */border: 10px solid rgba(255,255,255,.5);background: white;background-clip: …

mysql 导入json_JsonToMysql(json导入mysql数据库工具)

JsonToMysql是款功能强大的json导入mysql数据库工具&#xff1b;用户在进行开发数据库、或者完成对相关的数据库维护的时候&#xff0c;经常需要将JSON的数据导入到数据库里面&#xff0c;如果没有专业的工具&#xff0c;就会对您的时间浪费&#xff0c;也会对工作的效率影响&a…

使用mysql事件_MySQL事件的使用详解

在系统管理或者数据库管理中&#xff0c;经常要周期性的执行某一个命令或者SQL语句。这个时候就会用到mysql事件&#xff0c;使用这个功能必须保证是mysql的版本是5.1以上。1.首先要查看事件是否开启了&#xff0c;SHOW VARIABLES LIKE event_scheduler;SELECT event_scheduler…

iPad 如何创建UISplitViewController应用程序

原文摘自&#xff1a;UISplitViewController的使用。UISplitViewController在ipad中的使用ipad的屏幕比iphone大&#xff0c;所以在界面上&#xff0c;ipad比iphone多一个UISplitViewController&#xff0c;用来实现ipad在横屏时&#xff0c;分两栏显示所需要的界面&#xff0c…

navicat怎么导出mysql_navicat怎么把数据库导出

Navicat是一套快速、可靠并价格相当便宜的数据库管理工具&#xff0c;专为简化数据库的管理及降低系统管理成本而设。下面我们就为大家介绍一下如何使用naviact把数据库导出。使用Navicat连接到mysql&#xff0c;然后选中你要导出的数据库&#xff0c;右键&#xff0c;选择转储…

Windows 2003下网络负载平衡(负载均衡)的配置

网络负载平衡(网络负载均衡、NLB、集群)概述 首先&#xff0c;我们先了解下 Windows 2003 自带的 负载平衡(负载均衡)—— Network Load Balancing&#xff0c;简称NLB。NLB是一种集成高可用性&#xff0c;高可靠性和高扩展性的集群。它不但能实现均衡负载&#xff0c;而且还能…

前后端分离的思考与实践(二)

原文出处&#xff1a; 淘宝UED - Herman 基于前后端分离的模版探索 前言 在做前后端分离时&#xff0c;第一个关注到的问题就是 渲染&#xff0c;也就是 View 这个层面的工作。 在传统的开发模式中&#xff0c;浏览器端与服务器端是由不同的前后端两个团队开发&#xff0c;但…

mysql对大量数据查询花费时间_对于Mysql大量数据查询速度慢的问题

1.如果mysql数据量过大&#xff0c;当查询的时候耗时比较长&#xff0c;则会影响页面数据展示。给客户的直观反应的&#xff1a;点击了某个查询功能&#xff0c;结果等了差不多十几秒才反应出来&#xff0c;这样的体验感太差了。2.为了增加反应速度。一般来是建立索引&#xff…

推自己的镜像到网易云

推送本地镜像 本文介绍如何将本地镜像推送至你的网易云私有镜像仓库&#xff0c;以便在网易云上部署容器或集群。 注&#xff1a;Docker 客户端版本要求 1.7 及以上。 1. 列出本地镜像 docker images 2. 后台启动容器&#xff0c;验证配置是否正确 docker run -d {镜像名或ID} …