如何看懂时序图(1):时序图基础知识

news2024/11/16 19:27:42

对于参考手册中经常出现的一些时序图,经常会让我摸不着头脑。比如对于Flash的时序图来说,要看懂的话,里面的每一个参数都得系统地学一遍,而且时序图中的一些符号也不太懂是什么意思。前一段时间调HyperRAM的时候,因为那些参数不懂,也无从用示波器对波形进行分析,软件上也不知道改哪里合适,最后都是乱试着调出来的。本篇文章以74HC595芯片为例,介绍时序图的一些基础概念。

文章目录

  • 1 常见时序图符号
  • 2 74HC595
    • 2.1 74HC595封装
    • 2.2 时序图
  • 3 总结

1 常见时序图符号

首先来看一些时序图中会经常遇到的一些常用时序,需要注意的是时序图并没有一个统一的标准,所以下面列举的时序在不同的手册上可能会有略微的不同,但这些时序都是非常典型的。
(1)方波
在这里插入图片描述
(2)上升/下降沿:箭头表示信号被触发
在这里插入图片描述
(3)斜坡(Ramping)
通常表示一个连续变化的信号,其数值随时间逐渐增加或减小。它被用来表示一种渐进的变化或模拟信号的过渡过程,或者用来清楚地表示两个信号是相反的。
在这里插入图片描述
(4)白色交叉
在这里插入图片描述
该信号是上图中的横向交叉。它表示对应信号的值在对其进行采样的时钟周期内可以是高值或低值,它的值由外部事件决定,数据在上升或下降沿采样。

(5)灰色交叉
在时序图中,可以有几个与灰色部分相关的定义,表示芯片不关心值是多少。比如I2C一次传输8位,但是只使用了MSB的3位,所以前3位是白色交叉,剩下5位是灰色交叉。还有一种情况,就是前面的74HC595的输出高阻态。
在这里插入图片描述
(6)省略
下面时序图中的小空隙表示有大量的数据正在传输,这里就不把每一个字节的时序图显示出来,而是省略掉。比如Flash一次可以传输256字节,就不太可能一个时序中给你展示256个字节的时序。
在这里插入图片描述
(7)位标记
位标记就是提供了详细的数据流指示,比如刚刚说的256字节,这里显示出时序图中的每一个字节。
在这里插入图片描述

2 74HC595

2.1 74HC595封装

这里以74HC595芯片为例,介绍时序图的相关概念。74HC595是一个8位串行输入、并行输出的移位缓存器。封装如下:
在这里插入图片描述

  • QA~QH:并行数据输出
  • SER:串行数据输入端
  • QH’:串行数据输出端
  • RCLK:输出存储器锁存时钟线
  • SRCLK:数据输入时钟线
  • SRCLR ‾ \overline{\text{SRCLR}} SRCLR:复位,高电平清空输出寄存器
  • OE ‾ \overline{\text{OE}} OE:输出使能,低电平有效

2.2 时序图

首先来看一下,当时钟脉冲信号来临的时候,输入数据线Data(SER)为0的情况:
在这里插入图片描述
可以看到锁存信号在时钟信号之后产生,Data一直为0,这里似乎什么事都没有做,所以我们继续延伸这个时序图,把Data拉高。
在这里插入图片描述
我们可以看到,在后面一段时序中,在CLOCK的上升沿,Data是高电平。然后在CLOCKData输出完后,锁存信号就改变了输出QA

由于这是一个移位芯片,所以现在再把QB Out加到时序中看看:
在这里插入图片描述
在下一个时钟周期中,又输入了一个0,所以在锁存后,QA的输出被移位到QB,而QA保存本次的0

然后我们把剩余的输出引脚都补上,后面的时钟周期的Data都输出0:
在这里插入图片描述可以看到第一个时钟周期输入的1,被一个个移位到QH

现在我们简单地知道了时序图的工作原理,我们就来看看真正手册中的时序图,以下是TI的SNx4HC595手册中给出的时序图:
在这里插入图片描述
图中列出了所有引脚的时序,其中QA~QH最开始的虚线表示当前输出为未知状态,因为此时 SRCLR ‾ \overline{\text{SRCLR}} SRCLR为低电平,之前的状态我们不知道,而当它被拉高时,寄存器内部的数据会被清零,并将输出引脚恢复到默认状态。最后还有一个网状的时序,这表示在输出不使能,即 OE ‾ \overline{\text{OE}} OE为1的时候,输出变为高阻抗的第三状态。


前面有说到,时序图没有一个标准,所以对于74HC595来说,不同厂商生产的74HC595的时序图都有一点不同,下面来看一下DIODE的74HC595的时序来分析一下数据的建立时间:
在这里插入图片描述
图中用红框标出的部分表示在时钟上升沿时,数据进行采样,此时DS应该保存稳定。那红框这一段时间(时钟的下降沿到上升沿),就被称为建立时间。在手册的后面有列出数据的建立和保持的时序详细的时序:
在这里插入图片描述
其中tsu为数据的建立时间,表示你要在时钟信号来临之前,需要保证数据线上的数据至少已经稳定tsu。同时在时钟变为高电平之后之后,至少还要将数据保持th,这样锁存器才能正常地保存数据。以建立时间tsu为例,如果我们没有满足这个时间要求,数据就可能出现异常,现在我们就需要来看看手册中tsu的要求:
在这里插入图片描述
这里看DS to SHCP(Data set to SHCP)这一行,在VCC为4.5V、温度为25℃的情况下,数据建立时间的典型值为4,它只是一个具有代表性的值,实际上我们设置不应该低于最小值10。

3 总结

这篇文章简单地介绍了一下时序图的基础知识,但如果我们现在打开一个芯片手册中的时序图,我们会发现还是读不懂,因为实际比这些复杂多了,所以在后续的文章中,将实际举一些例子进行深入理解。

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

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

相关文章

冯·诺依曼架构哈佛架构(嵌入式学习)

冯诺依曼架构&哈佛架构 0. 前言1. 冯诺依曼架构(von Neumann architecture)关键组件限制&挑战 2. 哈佛架构关键组件限制&挑战 3. 冯诺依曼架构&哈佛架构的区别4. 知识扩展 0. 前言 冯诺依曼架构(von Neumann architecture&a…

Python 命令行参数

Python 命令行参数 1、sys 库 sys.argv 获取参数2、getopt 模块解析带-参数2.1 短参数shortopts2.1.1 无短参数2.1.2 短参数h无值2.1.3 短参数h有值2.1.4 多个短参数h:v 2.2 长参数longopts2.2.1 长参数无值2.2.2 长参数有值 2.3 有空格字符串值 1、sys 库 sys.argv 获取参数 s…

Kubernetes核心概念汇总—调度、抢占和驱逐(Pod 调度就绪态)

Pod 一旦创建就被认为准备好进行调度。 Kubernetes 调度程序尽职尽责地寻找节点来放置所有待处理的 Pod。 然而,在实际环境中,会有一些 Pod 可能会长时间处于"缺少必要资源"状态。 这些 Pod 实际上以一种不必要的方式扰乱了调度器(…

Vue3 如何去开发安卓 或者 ios

Vue3 有没有一款好用的开发原生的工具 1.uniapp 我个人认为uniapp 适合开发小程序之类的,用这个去开发原生应用会存在一些问题 性能限制:由于 Uniapp 是通过中间层实现跨平台,应用在访问底层功能时可能存在性能损失。与原生开发相比&#xf…

【Linux】调试工具gdb

目录 前言 一、前情了解 二、gdb常用命令 1.基本指令 2.断点 3.调试过程 4.查看内容 前言 gdb是Linux环境下了一个调试工具,在代码运行出现问题时,我们可以通过它来进行调试,找出问题的所在。本文来带大家来了解一下gdb的使用方法。 …

单片机第一季:零基础1

目录 1,第一章 2,第二章 1,第一章 单片机是全球用量最大的CPU,是物联网节点设备主控CPU,单片机是其他物联网编程技术的基础,通过学习单片机学习编程语言、调试技巧、工具使用等; 51单片机最简…

【前端笔记】indexDB使用简单介绍

什么是indexDB? IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。该 API 使用索引实现对数据的高性能搜索。虽然 Web Storage 在存储较少量的数据很有用&…

chatgpt赋能python:如何用Python计算圆面积

如何用Python计算圆面积 介绍 圆是几何学中基本的图形之一,圆面积的计算是数学中的基础知识。使用Python编程语言可以快速、简便地计算圆的面积。本文将介绍如何使用Python编写圆面积计算器,并演示计算圆面积的步骤。无需高深的数学知识,只…

IPv6地址分类

一. 前言 IPv6地址分为单播地址,组播地址和任播地址。它们的地址详细分类和地址的范围如下图所示。 二. IPv6地址分类 1. 全球单播地址 类似于IPv4的公网地址,由前缀,子网ID和接口标识组成。 2. 链路本地地址 只能在连接到同一个本地链路的节…

《空指针》Optional解决链式调用NPE问题

Optional解决链式调用NPE问题 1.map() public class Main {public static void main(String[] args) {Person person new Person();Info personInfo new Info();int result;// 1.PersonInfo 为空person.setPersonInfo(null);result Optional.ofNullable(person).map(Person…

cpp-httplib

安装 cpp-httplib gitee链接: https://gitee.com/yuanfeng1897/cpp-httplib?_fromgitee_searchv0.7.15版本链接: https://gitee.com/yuanfeng1897/cpp-httplib/tree/v0.7.15把httplib.h拷贝到我们的项目中即可 接入cpp-httplib:header-only&#xff…

Kubernetes 1.27 版本基于(haproxy+keepalived)部署高可用集群

Kubernetes 1.27 版本基于(haproxykeepalived)部署高可用集群 二、系统架构2.1 架构基本需求2.2 架构图 三、环境准备3.1 云服务或虚拟机清单3.2 升级操作系统内核3.3 设置hostname3.4 修改hosts文件映射(注意替换你的规划每一台机器的IP&…

泛型深入~

1:泛型的概述的优势 2:泛型的好处 2:自定义泛型类 2:泛型类的原理 把出现泛型变量的地方全部替换成传输的真实数据类型 3:自定义泛型方法 4:自定义泛型接口 5:泛型通配符,上下限

03-1_Qt 5.9 C++开发指南_Qt核心特点(元对象系统特性:属性系统;信号与槽机制、动态类型转换;元对象特性测试实例)

Qt 是一个用标准 C编写的跨平台开发类库,它对标准 C进行了扩展,引入了元对象系统信号与槽、属性等特性,使应用程序的开发变得更高效。本章将介绍 Qt 的这些核心特点,对于理解和编写高效的 Ot C程序是大有帮助的;还介绍…

Servlet 项目创建和部署

目录 创建步骤: 1.创建项目 ​编辑2. 引入依赖 3.创建目录,复制内容 4.编写代码 5.打包 6.部署 7.验证 简化: 常见报错情况: 1.端口占用 2.路径错误 3.405 4.500 服务器代码抛出异常 5.依赖没下载好 创建步骤: 1.…

标注一致性计算

在统计学中,标注一致性(Inter-annotation agreement, IAA)用于评价独立观察者之间对同一现象进行评估时的一致程度。因此,本文讨论最多的是多位标注员对相同数据进行标注时的一致性评估方法。 一、Kappa统计量 评估一致性最简单…

Mysql高级篇(面试必看)

Mysql高级篇知识点,全篇手打,大家觉得有用的话点一个赞,持续更新 目录 1.Mysql锁的机制:粒度分类,思想分类,实现分类,状态分类,算法分类 2.Mysql的隔离级别:读未提交&…

视觉SLAM学习路线思维导图

整理了一下视觉SLAM学习路线的思维导图,防遗忘,不足的地方也希望各路大神能够不吝赐教。

Nginx(2)静态资源部署

静态资源 静态资源的配置指令静态资源优化配置静态资源压缩Gzip模块配置指令Gzip压缩功能的实例Gzip和sendfile共存问题gzip_static测试使用 静态资源的缓存处理浏览器缓存相关指令 Nginx的跨域问题解决静态资源防盗链防盗链的实现原理防盗链的具体实现 上网搜索访问资源是通过…

Java15——枚举类、注解、作业

1. 枚举类 跳了很多。。。 2. 注解 3. 作业 1. 注意:所有类共享静态属性 所以结果是 9,red 100,red package com.zsq.homework1;public class HM1 {public static void main(String[] args) {Cellphone cellphone new Cellphone();cel…