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

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

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

一、门控RS锁存器

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

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

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

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

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

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

二、D锁存器

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

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

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

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

因此我们发现,当

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

D锁存器在

时,对输入是“透明”的,和一根导线没有区别;因此,任何输入的变化都会引发状态的变化。其实对于RS锁存器也有这样的问题。但是,这又和我们的第二点设想有冲突:“

内存单元被写入的时间应当统一”,如果在时钟信号变为低之前,新的数据就已经到来,就会引起错误。究其原因,是因为锁存器能够改变状态的时间是整个高电平期间——为了改进这一点,我们要设法把改变状态的时间缩短为一个时刻

三、RS触发器

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

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

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

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

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

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

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

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

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

四、JK触发器

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

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

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

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

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

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

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

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

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

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

期间的输入,而不只是下降沿瞬间的输入。比如,考虑这样的变化:

理论上,在高电平期间的

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

这是因为,由于

永远相反,在任意时刻,
中只有一个能够工作——比如在这里,当状态为0时,只有
能够产生影响,而
的取值则根本不影响主锁存器的状态。这样,一旦
为1,主锁存器的状态就被保持在了1,无论
的取值为何。这被称作“

一次翻转”——JK触发器在两个下降沿之间的一个周期中,一旦被翻转,就无法被还原。它的原理是,只有与现态相反的输入能起作用——

时,
起作用;
时,
起作用。这种问题可能会导致状态受到干扰。

五、D触发器

仍然令

,便可以得到D触发器。

它的逻辑功能仍然是:

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

六、T触发器

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

那么,它的特性方程为:

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

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

对应的两个功能。

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

RS锁存器
门控RS锁存器
D锁存器
RS触发器
JK触发器
D触发器
T触发器

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

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

  1. jk触发器改为四进制_数字电路学习笔记(十):更多锁存器和触发器

    上一章中提到了普通RS锁存器的两大缺点: 1. S端口和R端口不能同时有效,但实际应用中不能保证这种情况不出现,此时可能会出错: 2. 在计算机中,有许多内存单元协同组成一个寄存器,存储同一个数据.但 ...

  2. 第3章 直流电机的工作原理及特性 学习笔记(一)

    本周主要学习了直流电机的基本结构及工作原理,需要复习到的知识主要有电磁感应定律和电磁力定律,即安培定律.法拉第定律.洛伦兹定律. 一.基本结构 根据工作原理,直流电机的组成可分为定子.转子和换向器三部 ...

  3. 双 JK 触发器 74LS112 逻辑功能。真值表_数字电路学习笔记(十一):时序逻辑...

    时序逻辑将会是本笔记的最后几章的主题.虽然数字电路课程还包括脉冲电路.模数转换.EDA等内容,但那些和本文的主线内容(不注重硬件搭建的电路设计)关系就不大了. 一.时序功能 我们从一个例子开始,说明时 ...

  4. 双 JK 触发器 74LS112 逻辑功能。真值表_数字电路学习笔记(七):经典组合逻辑器件(上)...

    一.集成电路 在引入"集成电路"后,电路设计实现了从原子到分子的质变.集成电路,最重要的当然是"集成"二字了--总体来说,我们希望设计出的集成电路具有: 可复用 ...

  5. 数字逻辑基础与verilog设计_数字电路学习笔记(五):逻辑设计基础

    马上就要正式进入电路设计了,再来看最后一个知识点:逻辑设计吧. 之前我们花了两章,探讨了逻辑运算是什么,怎么算:但还有最后一个大问题,巧妇难为无米之炊,我们得先有一个逻辑式,才能对它化简,并基于结果做 ...

  6. Unix原理与应用学习笔记----第六章 文件的基本属性2

    Unix原理与应用学习笔记----第六章 文件的基本属性2 改变文件权限命令:chmod 提示:文件或目录创建后,就被赋予一组默认的权限.所有的用户都有读,只有文件的所有者才有写. 相对权限设置 Ch ...

  7. 万能充电器工作原理_百度知道

    万能充电器工作原理_百度知道 万能充电器工作原理_百度知道 万能充电器工作原理     2008-08-29 21:27 457070320 | 分类:社会民生 | 浏览4372次 | 该问题已经合并 ...

  8. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  9. 吴恩达《机器学习》学习笔记十——神经网络相关(2)

    吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...

最新文章

  1. iMeta:德布鲁因图在微生物组研究中的应用(全文翻译,PPT,视频)
  2. 【转】完美解决Asp.Net的MasterPage中添加JavaScript路径问题
  3. Python列表的切片
  4. Django学习笔记之——Forms
  5. 做技术的,聊聊研发。
  6. JS事件循环机制:同步与异步任务 之 宏任务 微任务
  7. 开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
  8. C语言房地产销售管理系统,房地产销售管理系统的设计与实现
  9. 计算机图桌面打印出来,电脑excel图片无法打印怎么处理
  10. 缠中说禅股票交易系统图解 z
  11. 河北农业大学林学可转计算机系吗,河北农业大学专业排名,招生专业目录(10篇)...
  12. 项目管理中用什么工具可以增强团队协作?
  13. NLP-文本摘要:Rouge评测方法【Rouge-1、Rouge-2、Rouge-L、Rouge-W、Rouge-S】
  14. matlab 用m_map画地形水深图
  15. 想看两不厌,笑我太疯癫
  16. php立方体相册源码,纯CSS实现3D的代码(正方体、动态立体图片册、平面的星空)...
  17. LISP excel 冻结拆分_[转载]Visual LISP与Excel电子表格
  18. win10如何显示我的电脑在桌面
  19. 传华虹NEC重启赴港上市计划 可能融资3亿美元
  20. ubuntu下执行sudo apt-get install python-pip 出现错误 Unable to locate package python-pip

热门文章

  1. 正整数分解为几个连续自然数之和
  2. 读取exchange邮件的未读数(转载)
  3. 浅析透雾监控镜头的四大透雾技术
  4. 德鲁克的《卓有成效的管理者》
  5. 【图像处理】——opencv常用函数
  6. windows上使用cmake 编译yaml-cpp源码,生成yam-cpp.lib
  7. kali装电脑_Kali Linux可以安装到平板电脑吗?
  8. amazons3 检查连接是否_钢筋机械连接接头如何检查是否合格?抽检数量、合格率是多少?...
  9. matlab中udt函数,《MATLAB信号处理超级学习手册》——2.5 离散时间信号中的运算...
  10. python list遍历定位元素_python for循环,第二遍定位不到元素?