《编码——隐匿在计算机软硬件背后的语言》精炼——第14章(边沿触发器,计数器)

news2025/1/12 13:27:07

学习不是一次性的投资,而是一份长期稳定的收益。

文章目录

  • 8位锁存器
  • 边沿触发器
  • 计数器
  • 改进的边沿触发器

8位锁存器

上篇文章讲到了1位存储器的组成,将8个1位存储器的时钟端连在一起就形成了一个8位锁存器,如下所示:
在这里插入图片描述
这个锁存器一次存储八位,由统一的时钟端进行管理。为了深入理解这个结构,我们用这个结构实现一个连加的加法器。
连加的原理就是将每次相加的结果存储起来作为下一次进行加法运算的加数。具体电路实现如下:
在这里插入图片描述
其中,2-1选择器从两个8位输入中选择一个作为输出与左侧的A相加。这个选择器电路组成如下:
在这里插入图片描述

看一下这个电路的运作过程:

  1. 2-1选择器选择A输出作为B输入和左边的A输入相加,输出结果
  2. 结果传输到右上角D处进行存储,输出到Q被选择器选择,在进入加法器进行相加操作
  3. 重复过程。

可以发现,这个加法器处理不了进位符号的累加,但这个问题我们之后再讲,先看一下这个电路的改进。
不难发现,这个电路中锁存器的左边输入只需要用到一次,这样的话,我们能不能省去这八个开关呢?答案是可行的。但在此之前,我们需要为锁存器加一个清零开关,如下图所示:
在这里插入图片描述
打开这个清零开关,可以让这个锁存器的输出一定为0。当然,也可以通过把时钟置1,数据端置0的方法使输出为0,但很显然,在加法器中我们不能决定锁存器的数据端输入,所以只能通过这个方法。
接下来,我们可以通过调换加法器和锁存器的顺序省去一组开关,如下图所示:
在这里插入图片描述

边沿触发器

边沿触发器在时钟端从0到1变化的一瞬间存储数据。其电路如下:
在这里插入图片描述
边沿触发器实际上就是两个R-S触发器串联,一个时钟信号同时控制两个触发器,但在第一级触发器取反。同时数据端的输入只在第一级取反,以达到和电平触发器相同的输出。
看一下这个电路存储数据的过程:

  1. 时钟端置0,数据端置1,数据传入第一级触发器。
    在这里插入图片描述
  2. 接下来时钟端置1,第一级触发器的时钟输入变为0,像当于把数据存储进第一级触发器;同时第二级触发器时钟输入变为1,数据传入第二级触发器并在输出上显示。
    在这里插入图片描述
  3. 数据端置0,由于第一二级触发器已经存储了数据端的数据,因此电路不变。注意:此时即使时钟端变为0,数据依然会存储在电路中。
    在这里插入图片描述

到此这个电路的运作原理也介绍完毕,看一下它的真值表(⬆表示电压从0到1的正跳变):
在这里插入图片描述
边沿触发器的符号如图所示,小三角表示这是一个边沿触发器:
在这里插入图片描述

计数器

显然,将边沿触发器连接一个振荡器的话,它会周期性的改变输出:
在这里插入图片描述
在这个电路中,振荡器周期性的01切换,且每次¬Q变化后都会变化。看一下这个电路的变化过程:

  1. 假设启动时时钟端输入为0,D输入为1。
    在这里插入图片描述

  2. 时钟正跳变,输出随数据端D改变。
    在这里插入图片描述

  3. 由于¬Q变为0,则D变为0,但此时跳变结束,输出数据不改变。
    在这里插入图片描述

  4. 时钟输入变为0,负跳变不影响输出。
    在这里插入图片描述

  5. 继续正跳变,输出随D变化。
    在这里插入图片描述

  6. ¬Q变为1,D随之改变为1。
    在这里插入图片描述

  7. 时钟负跳变,回到最开始的状态。

时钟端和输出端呈周期性变化,由于每次时钟端负跳变时输出端不变,只有正跳变时才变化,因此输出端的变化周期是时钟端的2倍:
在这里插入图片描述
想象一下,如果把多个边沿触发器串联起来,将前面触发器的输出端作为后面触发器时钟端的输入,那么每一个触发器的周期都是前一个的2倍,这种电路称为分频器:
在这里插入图片描述
在这里插入图片描述
尝试着写一下从0-15的二进制数,你会发现每前一个二进制位从0到1的周期都是后一位的2倍,与这个电路的规律相同。因此这个电路可以做一个计数器,每次时钟信号正跳变或负跳变时计数加1。
在实际操作中,我们将第一个触发器的输出作为最后一个二进制位,那么将8个边沿触发器串联起来,就是一个八位行波计数器,这种计数器的缺点是电路一级一级传递,到最后一级时会有延迟。下面是八位行波计数器的符号:
在这里插入图片描述

改进的边沿触发器

和电平触发器相同,边沿触发器也可以加上预置和清零开关,而且原理和普通边沿触发器相同,我们只是简要介绍。下面是这种触发器的电路表示:
在这里插入图片描述
预置信号让Q为1,¬Q为0;清零信号让Q为0,¬Q为1。
这是边沿触发器的符号表示:
在这里插入图片描述
请添加图片描述
我是霜_哀,在算法之路上努力前行的一位萌新,感谢你的阅读!如果觉得好的话,可以关注一下,我会在将来带来更多更全面的知识讲解!

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

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

相关文章

vbscript+asp编写接口

1、前言 因为目前工作在对内网老系统用reactjava微服务进行升级改造,因为一些老的业务逻辑都是用vbscript编写的,很复杂,因此持久层和业务层代码不能动,以asp接口的形式给到数据。java接口调用asp接口,然后前端再调用j…

Elasticsearch --- DSL、RestClient查询文档、搜索结果处理

一、DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1、DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据&#xff0c…

他工作10年,老板却让他走人

大家好,我是五月,一个编程街溜子。 二狗被裁了,他在公司待了快十年,他想留下来,老板却让他走。 我和他一样困惑。 他985毕业,工作中有从0开始一个项目直到日活过千万,也有过参与顶级产品核心…

【数据结构】算法的时间复杂度和空间复杂度(含代码分析)

文章目录 一、算法的效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度的概念 二、大O的渐进表示法三、时间复杂度2.1 时间复杂度的概念2.2常见时间复杂度计算举例 四、空间复杂度2.1 空间复杂度的概念2.2常见空间复杂度计算举例五、解决问题的思路LeetCode-exercise 总结 一、算…

【Java笔试强训 7】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥Fibona…

Android BuildConfig不生成的解决办法

为了验证一些问题新建了一个demo,其依赖的AGP版本是8.0.0 但是在运行过程中报了一个错误就是找不到BuildConfig。 重新build了下代码,然后找编译后的代码,发现确实没有生成BuildConfig. 给我整的直接怀疑人生,以为是自己的AS有问…

QT、事件处理机制

闹钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimer> //定时器 #include <QTime> //shijian #include <QTimerEvent> //定时器事件类 #include <QDateTime> //日期实间类 #include <QTextToSpeech> …

【C++】特殊类设计+单例模式+类型转换

目录 一、设计一个类&#xff0c;不能被拷贝 1、C98 2、C11 二、设计一个类&#xff0c;只能在堆上创建对象 1、将构造设为私有 2、将析构设为私有 三、设计一个类&#xff0c;只能在栈上创建对象 四、设计一个类&#xff0c;不能被继承 1、C98 2、C11 五、设计一个…

UNIX环境高级编程——进程控制

8.1 引言 本章介绍UNIX系统的进程控制&#xff0c;包括&#xff1a; 创建新进程、执行程序、进程终止进程属性ID——实际、有效、保存的用户ID和组ID解释器文件system函数进程会计机制 8.2 进程标识 进程ID&#xff1a;一个非负整数&#xff0c;进程的唯一标识。 进程ID可…

【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】

文章目录 1. 原始DBO算法2. 改进后的IDBO算法2.1 Bernoulli混沌映射种群初始化2.2 自适应因子2.3 Levy飞行策略2.4 动态权重系数 3. 部分代码展示4. 效果图展示5. 资源获取 1. 原始DBO算法 详细介绍此处略&#xff0c;可参考DBO算法介绍 2. 改进后的IDBO算法 2.1 Bernoulli混…

【Linux问题合集002】解决虚拟机里面的Linux系统部分无法上网情况,保姆级教程

&#x1f340;一、前言 正如标题所说&#xff0c;解决虚拟机里面的Linux系统部分无法上网情况&#xff0c;这个网络问题的原因有很多种可能&#xff0c;这篇博客不一定能够解决所有朋友的网络问题&#xff0c;但是如果遇到和我一样情况的&#xff0c;我保证解决步骤一定是非常详…

使用 Python 创建端到端聊天机器人

使用 Python 创建端到端聊天机器人 1. 效果图2. 原理2.1 什么是端到端聊天机器人&#xff1f;2.2 创建端到端聊天机器人步骤 3. 源码3.1 streamlit安装3.2 源码 参考 聊天机器人是一种计算机程序&#xff0c;它了解您的查询意图以使用解决方案进行回答。聊天机器人是业内最受欢…

《LKD3粗读笔记》(11)定时器和时间管理

文章目录 1、内核中的时间概念2、 节拍率&#xff1a;HZ3、jiffies4、硬时钟和定时器5、时钟中断处理程序6、实际时间7、定时器8、延迟执行 1、内核中的时间概念 硬件为内核提供了一个系统定时器用以计算流逝的时间&#xff0c;该时钟在内核中可看成是一个电子时间资源&#x…

Nginx安装删除JDK Tomcat Redis

1.卸载Nginx ps -ef|grep nginx 查询Nginx 进程pid 如上图 master是主进程, worker是工作进程, master负责维护worker进程 Nginx启动后默认启动master进程和worker进程 Nginx默认使用端口80 kill -9 7035 或者 kill -term 7035 kill -9 7036 查找根下所有名字包…

带你搞懂人工智能、机器学习和深度学习!

不少高校的小伙伴找我聊入门人工智能该怎么起步&#xff0c;如何快速入门&#xff0c;多长时间能成长为中高级工程师&#xff08;聊下来感觉大多数学生党就是焦虑&#xff0c;毕业即失业&#xff0c;尤其现在就业环境这么差&#xff09;&#xff0c;但聊到最后&#xff0c;很多…

07 Kubernetes 网络与服务管理

课件 Kubernetes Service是一个抽象层&#xff0c;用于定义一组Pod的访问方式和访问策略&#xff0c;其作用是将一组Pod封装成一个服务&#xff0c;提供一个稳定的虚拟IP地址和端口号&#xff0c;以便于其他应用程序或服务进行访问。 以下是Kubernetes Service YAML配置文件的…

FPGA时序约束(五)衍生时钟约束与I/O接口约束

系列文章目录 FPGA时序约束&#xff08;一&#xff09;基本概念入门及简单语法 FPGA时序约束&#xff08;二&#xff09;利用Quartus18对Altera进行时序约束 FPGA时序约束&#xff08;三&#xff09;时序约束基本路径的深入分析 FPGA时序约束&#xff08;四&#xff09;主时…

2023五一建模A题完整版本【原创首发】

已经完成五一数学建模全部内容&#xff0c;大家可以文末查看&#xff01;&#xff01;供参考使用&#xff01; 摘要 本文研究了喷气式无人机在执行空中物资投放和爆破任务过程中的数学建模问题。我们分析了无人机投放距离与飞行高度、飞行速度、空气阻力等因素之间的关系&…

【Mybatis源码分析】动态标签的底层原理,DynamicSqlSource源码分析

DynamicSqlSource 源码分析 一、DynamicSqlSource 源码分析&#x1f62f;DynamicContext源码分析&#x1f644;SqlNode源码分析&#xff08;动态SQL标签&#xff09;Mybatis 动态SQL标签举例、调试SqlNode源码分析MixedSqlNodeIfSqlNodeWhereSqlNode、SetSqlNode、TrimSqlNodeS…

区域医疗云his系统源码,具有可扩展、易共享、易协同的优势

云HIS系统采用SaaS软件应用服务模式&#xff0c;提供软件应用服务多租户机制&#xff0c;实现一中心部署多机构使用。相对传统HIS单机构应用模式&#xff0c;它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景&#xff0c;并提升区域内应用的标准化与规范…