当前位置: 首页 > news >正文

【ShuQiHere】深入解析数字电路中的锁存器与触发器

深入解析数字电路中的锁存器与触发器 🤖🔌

在数字电路设计中,**锁存器(Latch)触发器(Flip-Flop)**是实现时序逻辑的基本元件。它们能够存储状态,是构建复杂数字系统的关键。本文将深入探讨 SR 锁存器的 NOR 和 NAND 实现、带门控的 SR 锁存器、时钟锁存器、D 触发器、SR 触发器和 JK 触发器等核心概念,帮助大家全面理解这些元件的工作原理和应用。🚀


一、SR 锁存器(SR Latch)🔒

**SR 锁存器(Set-Reset Latch)**是最基本的存储单元,能够存储一位二进制信息。

1.1 SR 锁存器的 NOR 门实现

SR 锁存器通常由两个交叉连接的 NOR 门(NOR Gate) 构成

输入端:

  • S(Set,置位):用于将输出 Q Q Q 设置为 1。
  • R(Reset,复位):用于将输出 Q Q Q 复位为 0。

输出端:

  • Q Q Q:主输出,表示当前存储的状态。
  • Q ′ Q' Q Q Q Q 的反相输出):始终与 Q Q Q 相反,即 Q ′ = Q ‾ Q' = \overline{Q} Q=Q

真值表:

SRQ(t)Q(t+1)状态
0000保持(存储0)
0011保持(存储1)
01X0复位
10X1置位
11X不允许非法状态

❗ **注意:**在 NOR 门实现的 SR 锁存器中,当 S = 1 S = 1 S=1 R = 1 R = 1 R=1 时,电路进入非法状态,需要在设计中避免。

工作原理:

  • 保持状态(Memory State):

    S = 0 S = 0 S=0 R = 0 R = 0 R=0 时,锁存器保持当前状态,即 Q ( t + 1 ) = Q ( t ) Q(t+1) = Q(t) Q(t+1)=Q(t)

  • 置位状态(Set State):

    S = 1 S = 1 S=1 R = 0 R = 0 R=0 时,输出被置为 Q = 1 Q = 1 Q=1 Q ′ = 0 Q' = 0 Q=0

  • 复位状态(Reset State):

    S = 0 S = 0 S=0 R = 1 R = 1 R=1 时,输出被复位为 Q = 0 Q = 0 Q=0 Q ′ = 1 Q' = 1 Q=1

1.2 SR 锁存器的 NAND 门实现

SR 锁存器也可以用 NAND 门(NAND Gate)
输入端:

  • S ‾ \overline{S} S(Set 的反相):低电平有效的置位输入。
  • R ‾ \overline{R} R(Reset 的反相):低电平有效的复位输入。

真值表:

S ‾ \overline{S} S R ‾ \overline{R} RQ(t)Q(t+1)状态
1100保持(存储0)
1111保持(存储1)
01X1置位
10X0复位
00X不允许非法状态

🌟 **提示:**在 NAND 门实现的 SR 锁存器中,输入信号是 低电平有效 的,与 NOR 门实现相反。

工作原理:

  • 保持状态(Memory State):

    S ‾ = 1 \overline{S} = 1 S=1 R ‾ = 1 \overline{R} = 1 R=1 时,锁存器保持当前状态。

  • 置位状态(Set State):

    S ‾ = 0 \overline{S} = 0 S=0 R ‾ = 1 \overline{R} = 1 R=1 时,输出被置为 Q = 1 Q = 1 Q=1

  • 复位状态(Reset State):

    S ‾ = 1 \overline{S} = 1 S=1 R ‾ = 0 \overline{R} = 0 R=0 时,输出被复位为 Q = 0 Q = 0 Q=0


二、带门控的 SR 锁存器(Gated SR Latch)🔑

为了解决 SR 锁存器在输入变化时可能出现的 毛刺(Glitch) 问题,引入了 使能信号(Enable,EN),形成了带门控的 SR 锁存器。

工作原理:

  • EN = 1(使能)

    • 锁存器根据输入 S S S R R R 进行置位或复位操作。
    • 与标准的 SR 锁存器行为一致。
  • EN = 0(禁用)

    • 锁存器忽略 S S S R R R 的输入。
    • 输出 Q Q Q Q ′ Q' Q 保持不变,实现记忆功能。

逻辑表达式:

当 EN = 1 时:

  • Q ( t + 1 ) = S ⋅ E N ‾ ⋅ Q ( t ) ‾ ‾ Q(t+1) = \overline{\overline{S \cdot EN} \cdot \overline{Q(t)}} Q(t+1)=SENQ(t)

当 EN = 0 时:

  • Q ( t + 1 ) = Q ( t ) Q(t+1) = Q(t) Q(t+1)=Q(t)

🛡️ **优势:**通过使能信号,电路只在需要时更新状态,增强了稳定性,避免了不必要的状态变化。


三、时钟锁存器与触发器⏰

3.1 时钟锁存器(Clocked Latch)

在锁存器的基础上加入 时钟信号(Clock,C),形成时钟锁存器,使状态变化受时钟控制。

工作原理:

  • C = 1(时钟高电平)

    • 锁存器响应输入 S S S R R R,进行状态更新。
  • C = 0(时钟低电平)

    • 锁存器忽略输入,保持当前状态。

🔄 **说明:**时钟锁存器通常是 电平触发(Level-Triggered) 的,在时钟高电平期间允许状态变化。

逻辑表达式:

  • C = 1 C = 1 C=1 时:

    • Q ( t + 1 ) = S + R ‾ ⋅ Q ( t ) Q(t+1) = S + \overline{R} \cdot Q(t) Q(t+1)=S+RQ(t)

3.2 触发器(Flip-Flop)与边沿触发

触发器 是在时钟信号的 边沿(Edge) 进行状态变化的存储元件。

  • 边沿触发(Edge-Triggered)

    • 状态变化仅在时钟信号的上升沿或下降沿发生。
  • 电平触发(Level-Triggered)

    • 状态变化在时钟信号的高或低电平持续期间发生。

区别:

  • 锁存器(Latch):通常是电平触发的。
  • 触发器(Flip-Flop):通常是边沿触发的。

⏰ **提示:**触发器是边沿触发的,确保了电路的同步性,避免了毛刺问题。


四、D 触发器(D Flip-Flop)💾

D 触发器(Data Flip-Flop) 是最常用的触发器之一,具有简单可靠的特性。

特点:

  • 单输入 D:只有一个数据输入 D D D,简化了控制逻辑。
  • 边沿触发:在时钟信号的有效边沿, D D D 的值被捕获并存储到 Q Q Q
  • 无非法状态:避免了 SR 触发器的非法状态问题。

真值表:

Clock EdgeDQ(t+1)状态
00存储 0
11存储 1
-XQ(t)保持(无变化)

工作原理:

  • 时钟边沿到来时

    • Q ( t + 1 ) = D Q(t+1) = D Q(t+1)=D:输出 Q Q Q 立即更新为输入 D D D 的值。
  • 时钟边沿之外

    • Q ( t + 1 ) = Q ( t ) Q(t+1) = Q(t) Q(t+1)=Q(t):输出 Q Q Q 保持之前的状态。

逻辑表达式:

  • Q ( t + 1 ) = D Q(t+1) = D Q(t+1)=D (在时钟边沿时)

💾 **应用:**D 触发器被广泛用于寄存器和时序电路中,作为基本的 一位存储器(1-bit Memory)

示例代码:

module D_FF (input wire D,input wire Clock,output reg Q
);always @(posedge Clock) beginQ <= D;end
endmodule

解释:

  • @(posedge Clock):在时钟的上升沿触发。
  • Q <= D;:将输入 D D D 的值赋给输出 Q Q Q

五、JK 触发器(JK Flip-Flop)🔄

JK 触发器 是 SR 触发器的改进版,解决了非法状态的问题,增加了 状态翻转(Toggle) 功能。

输入端:

  • J:对应于置位功能。
  • K:对应于复位功能。

真值表:

JKQ(t)Q(t+1)状态
0000保持
0011保持
01X0复位
10X1置位
1101翻转
1110翻转

工作原理:

  • 保持状态(Memory State):

    • J = 0 J = 0 J=0 K = 0 K = 0 K=0 时, Q ( t + 1 ) = Q ( t ) Q(t+1) = Q(t) Q(t+1)=Q(t)
  • 置位状态(Set State):

    • J = 1 J = 1 J=1 K = 0 K = 0 K=0 时, Q ( t + 1 ) = 1 Q(t+1) = 1 Q(t+1)=1
  • 复位状态(Reset State):

    • J = 0 J = 0 J=0 K = 1 K = 1 K=1 时, Q ( t + 1 ) = 0 Q(t+1) = 0 Q(t+1)=0
  • 状态翻转(Toggle State):

    • J = 1 J = 1 J=1 K = 1 K = 1 K=1 时, Q ( t + 1 ) = Q ( t ) ‾ Q(t+1) = \overline{Q(t)} Q(t+1)=Q(t)

🔁 **优势:**在 J = 1 J = 1 J=1 K = 1 K = 1 K=1 时,JK 触发器不会进入非法状态,而是执行状态翻转,适用于计数器等需要频繁切换状态的电路。

逻辑表达式:

  • Q ( t + 1 ) = J ⋅ Q ( t ) ‾ + K ‾ ⋅ Q ( t ) Q(t+1) = J \cdot \overline{Q(t)} + \overline{K} \cdot Q(t) Q(t+1)=JQ(t)+KQ(t)

示例代码:

module JK_FF (input wire J,input wire K,input wire Clock,output reg Q
);always @(posedge Clock) begincase ({J, K})2'b00: Q <= Q;            // 保持2'b01: Q <= 0;            // 复位2'b10: Q <= 1;            // 置位2'b11: Q <= ~Q;           // 翻转endcaseend
endmodule

解释:

  • {J, K}:将 J J J K K K 组合成一个 2 位的信号。
  • ~Q:表示对 Q Q Q 取反,实现状态翻转。

六、SR 触发器(SR Flip-Flop)🔄

SR 触发器 是 SR 锁存器的边沿触发版本,通过时钟信号控制状态变化。

特点:

  • 边沿触发:状态变化仅在时钟信号的边沿发生。
  • 非法状态存在 S = 1 S = 1 S=1 R = 1 R = 1 R=1 时依然是非法状态,需要避免。

真值表:

Clock EdgeSRQ(t)Q(t+1)状态
00XQ(t)保持
01X0复位
10X1置位
11X不允许非法状态
-XXXQ(t)保持

工作原理:

  • 保持状态(Memory State):

    • S = 0 S = 0 S=0 R = 0 R = 0 R=0 时, Q ( t + 1 ) = Q ( t ) Q(t+1) = Q(t) Q(t+1)=Q(t)
  • 置位状态(Set State):

    • S = 1 S = 1 S=1 R = 0 R = 0 R=0 时, Q ( t + 1 ) = 1 Q(t+1) = 1 Q(t+1)=1
  • 复位状态(Reset State):

    • S = 0 S = 0 S=0 R = 1 R = 1 R=1 时, Q ( t + 1 ) = 0 Q(t+1) = 0 Q(t+1)=0
  • 非法状态(Invalid State):

    • S = 1 S = 1 S=1 R = 1 R = 1 R=1 时,状态不确定,需要避免。

⚠️ **注意:**由于存在非法状态,SR 触发器在实际应用中较少使用,更倾向于使用 D 触发器或 JK 触发器。


七、总结📚

通过本文的学习,我们了解了数字电路中锁存器和触发器的基本类型和工作原理:

  • SR 锁存器:最基本的存储元件,但存在非法状态。
  • 带门控的 SR 锁存器:增加了使能信号,增强了控制能力。
  • 时钟锁存器:引入时钟信号,实现电平触发。
  • D 触发器:简化为单输入,无非法状态,常用于数据存储。
  • JK 触发器:解决了 SR 触发器的非法状态,增加了状态翻转功能。
  • SR 触发器:边沿触发的 SR 锁存器,存在非法状态。

💡 理解和掌握这些基本元件是设计复杂数字系统的基础。希望这篇文章能帮助你加深对数字电路的认识,在实践中灵活运用这些知识。

如果你对本文内容有任何疑问或建议,欢迎在评论区留言讨论!一起探索数字电路的奥秘吧!🤗🔍

相关文章:

【ShuQiHere】深入解析数字电路中的锁存器与触发器

深入解析数字电路中的锁存器与触发器 &#x1f916;&#x1f50c; 在数字电路设计中&#xff0c;**锁存器&#xff08;Latch&#xff09;和触发器&#xff08;Flip-Flop&#xff09;**是实现时序逻辑的基本元件。它们能够存储状态&#xff0c;是构建复杂数字系统的关键。本文将…...

【学习AI-相关路程-mnist手写数字分类-python-硬件:jetson orin NX-自我学习AI-基础知识铺垫-遇到问题(1) 】

【学习AI-相关路程-mnist手写数字分类-python-硬件&#xff1a;jetson orin NX-自我学习AI-基础知识铺垫-遇到问题&#xff08;1&#xff09; 】 1、前言2、先行了解&#xff08;1&#xff09;学习基础知识-了解jetson orin nx 设备&#xff08;2&#xff09;学习python&AI…...

数据轻松上云——Mbox边缘计算网关

随着工业4.0时代的到来&#xff0c;工厂数字化转型已成为提升生产效率、优化资源配置、增强企业竞争力的关键。我们凭借其先进的边缘计算网关与云平台技术&#xff0c;为工厂提供了高效、稳定的数据采集与上云解决方案。本文将为您介绍Mbox边缘计算网关如何配合明达云平台&…...

ifftshift函数

ifftshift 原理 将频域数据移回时域的函数。它通常与 fftshift 配合使用&#xff0c;后者用于将时域数据移动到频域中心。 而ifftshift所作的事正好相反&#xff0c;将频谱恢复到能量集中在两端&#xff08;或四个角&#xff09;上&#xff0c;接着就可以做逆傅里叶变换了 具…...

vue3 + ts + element-plus 二次封装 el-dialog

实现效果&#xff1a; 组件代码&#xff1a;注意 style 不能为 scoped <template><el-dialog class"my-dialog" v-model"isVisible" :show-close"false" :close-on-click-modal"false" :modal"false"modal-class&…...

MySQL9.0安装教程zip手动安装(Windows)

本章教程&#xff0c;主要介绍如何在Windows上安装MySQL9.0&#xff0c;通过zip方式进行手动安装。 一、下载MySQL压缩包 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 二、解压MySQL压缩包 将下载好的压缩包&#xff0c;进行解压缩&#xff0c;并且将…...

如何在浏览器中查看格式化的 HTML?

问题描述 我需要这个 HTML 页面在我的浏览器中显示格式化后的信息。我只是将文件存储在本地驱动器上。我需要将文件上传到服务器才能将其作为 HTML 查看&#xff0c;还是可以在本地查看&#xff1f;如在屏幕截图中看到的&#xff0c;它当前显示相同的 HTML 代码。我尝试搜索&am…...

浅谈计算机存储体系和CPU缓存命中

一、计算机存储 一般关于计算机存储体系分为三层 ①三级缓存/寄存器 大多数寄存器只有四字节到八字节&#xff0c;只用于读取很小的数据&#xff1b;三级缓存是为了方便CPU读取内存中数据而存在的 ②内存————数据结构就是在内存中管理数据 ③硬盘————数据库/文件就…...

ES操作:linux命令

查询数据库所有索引 没有密码 curl -X GET "http://localhost:9200/_cat/indices?v" 有密码 curl -u elastic:my_password -X GET "http://localhost:9200/_cat/indices?v" 删除索引 curl-X DELETE "http://localhost:9200/index_XXX" 不…...

Java使用原生HttpURLConnection实现发送HTTP请求

Java 实现发送 HTTP 请求&#xff0c;系列文章&#xff1a; 《Java使用原生HttpURLConnection实现发送HTTP请求》 《Java使用HttpClient5实现发送HTTP请求》 《SpringBoot使用RestTemplate实现发送HTTP请求》 1、HttpURLConnection 类的介绍 HttpURLConnection 是 Java 提供的…...

TinyC编译器5—词法分析

1.词法分析的概念 词法分析也称为 分词 &#xff0c;此阶段编译器从左向右扫描源文件&#xff0c;将其字符流分割成一个个的 词 &#xff08; token 、 记号 &#xff0c;后文中将称为 token &#xff09;。所谓 token &#xff0c;就是源文件中不可再进一步分割的一串字符&am…...

电子电气架构---智能计算架构和SOA应用

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消耗你的人和事&#xff0c;多看一眼都是你的不…...

Python Numpy 实现神经网络自动训练:反向传播与激活函数的应用详解

Python Numpy 实现神经网络自动训练&#xff1a;反向传播与激活函数的应用详解 这篇文章介绍了如何使用 Python 的 Numpy 库来实现神经网络的自动训练&#xff0c;重点展示了反向传播算法和激活函数的应用。反向传播是神经网络训练的核心&#xff0c;能够通过计算梯度来优化模…...

Apache Calcite - 基于规则的查询优化

基于规则的查询优化 基于规则的查询优化&#xff08;Rule-based Query Optimization&#xff09;是一种通过应用一系列预定义的规则来优化查询计划的技术。这些规则描述了如何转换关系表达式&#xff0c;以提高查询执行的效率。基于规则的优化器并不依赖于统计信息&#xff0c…...

react学习笔记,ReactDOM,react-router-dom

react 学习 1. 下载与安装 下载 npm install -g create-react-app 安装 npx create-react-app xxx 推荐 npm init react-app xxx yarn create react-app xxx 2. 创建 react 元素 indexjs 文件 import React from "react"; import ReactDOM from "react…...

优化UVM环境(八)-整理project_common_pkg文件

书接上回&#xff1a; 优化UVM环境&#xff08;七&#xff09;-整理环境&#xff0c;把scoreboard拿出来放在project_common环境里 Prj_cmn_pkg.sv考虑到是后续所有文件的基础&#xff0c;需要引入uvm_pkg并把自身这个pkg import给后续的文件&#xff1a; 这里有3个注意事项&…...

【实战案例】Django框架连接并操作数据库MySQL相关API

本文相关操作基于上次操作基本请求及响应基础之上【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 Django框架中默认会连接SQLite数据库&#xff0c;好处是方便无需远程连接&#xff0c;打包项目挪到其他环境安装一下依赖一会就跑起来&#xff0c;但是缺点…...

【其他】无法启动phptudy服务,提示错误2:系统找不到指定的文件

在服务中启动phpstudy服务时&#xff0c;提示“windows 无法启动phpstudy服务 服务(位于本地计算机上) 错误2:系统找不到指定的文件”的错误。导致错误的原因是可执行文件的路径不对&#xff0c;修改成正确的路径就可以了。 下面是错误的路径&#xff0c;会弹出错误窗口&#…...

AI驱动的支持截图或线框图快速生成网页应用的开源项目

Napkins.dev是什么 Napkins.dev是一个创新的开源项目&#xff0c;基于AI技术将用户的截图或线框图快速转换成可运行的网页应用程序。项目背后依托于Meta的Llama 3.1 405B大型语言模型和Llama 3.2 Vision视觉模型&#xff0c;结合Together.ai的推理服务&#xff0c;实现从视觉设…...

es集群索引是黄色

排查 GET /_cat/shards?hindex,shard,prirep,state,unassigned.reason 查询原因 发现node正常 执行重新分配 retry_failedtrue 参数告诉Elasticsearch重试那些因某种原因&#xff08;如节点故障、资源不足等&#xff09;而失败的分片分配。这个选项通常用来尝试再次分配那些…...

获取淘宝商品评论的方法分享-调用API接口item_review

在电商领域&#xff0c;商品评论是消费者了解产品、做出购买决策的重要依据。淘宝作为中国最大的电商平台之一&#xff0c;其商品评论系统涵盖了海量的用户反馈数据。为了帮助企业、电商数据分析师、市场研究人员以及普通消费者更高效地获取这些评论数据&#xff0c;淘宝开放平…...

MATLAB人脸考勤系统

MATLAB人脸考勤系统课题介绍 该课题为基于MATLAB平台的人脸识别系统。传统的人脸识别都是直接人头的比对&#xff0c;现实意义不大&#xff0c;没有一定的新意。该课题识别原理为&#xff1a;先采集待识别人员的人脸&#xff0c;进行训练&#xff0c;得到人脸特征值。测试的时…...

Spring篇(事务篇 - 基础介绍)

目录 一、JdbcTemplate&#xff08;持久化技术&#xff09; 1. 简介 2. 准备工作 2.1. 引入依赖坐标 2.2. 创建jdbc.properties 2.3. 配置Spring的配置文件 3. 测试 3.1. 在测试类装配 JdbcTemplate 3.2. 测试增删改功能 查询一条数据为实体类对象 查询多条数据为一个…...

qt EventFilter用途详解

一、概述 EventFilter是QObject类的一个事件过滤器&#xff0c;当使用installEventFilter方法为某个对象安装事件过滤器时&#xff0c;该对象的eventFilter函数就会被调用。通过重写eventFilter方法&#xff0c;开发者可以在事件处理过程中进行拦截和处理&#xff0c;实现对事…...

[ 钓鱼实战系列-基础篇-6 ] 一篇文章让你了解邮件服务器机制(SMTP/POP/IMAP)-1

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

wordpress伪静态规则

WordPress 伪静态规则是指将 WordPress 生成的动态 URL 转换为静态 URL 的规则&#xff0c;这样做可以提高网站的搜索引擎优化(SEO)效果&#xff0c;并且使得 URL 更加美观、易于记忆。伪静态规则通常需要在服务器的配置文件中设置&#xff0c;不同的服务器环境配置方法有所不同…...

缓存框架JetCache源码解析-缓存定时刷新

作为一个缓存框架&#xff0c;JetCache支持多级缓存&#xff0c;也就是本地缓存和远程缓存&#xff0c;但是不管是使用着两者中的哪一个或者两者都进行使用&#xff0c;缓存的实时性一直都是我们需要考虑的问题&#xff0c;通常我们为了尽可能地保证缓存的实时性&#xff0c;都…...

docker配置mysql8报错 ERROR 2002 (HY000)

通过docker启动的mysql&#xff0c;发现navicat无法连接&#xff0c;后来进入容器内部也是无法连接&#xff0c;产生以下错误 root9f3b90339a14:/var/run/mysqld# mysql -u root -p Enter password: ERROR 2002 (HY000): Cant connect to local MySQL server through socket …...

【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?

环境变量表具有全局性的原因&#xff1a; 环境变量表之所以具有全局性的特征&#xff0c;主要是因为它们是在进程上下文中维护的&#xff0c;并且在大多数操作系统中&#xff0c;当一个进程创建另一个进程&#xff08;即父进程创建子进程&#xff09;时&#xff0c;子进程会继承…...

如何在Linux中找到MySQL的安装目录

前言 发布时间&#xff1a;2024-10-22 在日常管理和维护数据库的过程中&#xff0c;了解MySQL的确切安装位置对于执行配置更改、更新或者进行故障排查是非常重要的。本文将向您介绍几种在Linux环境下定位MySQL安装路径的方法。 通过命令行工具快速定位 使用 which 命令 首…...