首页 > 其他分享 >时序图

时序图

时间:2024-05-10 19:33:48浏览次数:16  
标签:CLK DATA 时序 3.2 延时 data

时序图

1. 参考资料

2. 基础

  • 时序图:用于表示单片机硬件的底层通信原理
  • 多波形时序图:同一时间内,多个端口组合出的电平关系变化
  • 横轴:表示时间
  • 纵轴:表示逻辑信号0或者逻辑信号1

3. 符号

3.1. 斜线形式的上升沿、下降沿

上升沿、下降沿除了直线以外,也有斜线(因为在物理上不可能出现状态的秒变化)。

3.2. Either or 信号

表示信号在这一时间既可以高电平,也可以是低电平,常见于数据线。

3.3. 波形省略

波形省略在图中有两种常见的表现形式:

3.2.1. 虚线

3.2.2. 波浪号


3.4. 地址&数据表示

时序图上常用A来表示Address, D来表示Data

4. 实例-WT588F语音芯片时序图

4.1. 了解背景

MCU向语音芯片发送控制指令,语音芯片按照指令运行

4.2. 分析

分析这张时序图:

  1. 默认电平状态:CLK和DATA都是默认高电平
  2. 开始信号及结束信号:开始信号CLK拉低5ms;结束信号CLK和DATA恢复高电平
  3. 操作时序:上升沿接收数据,根据图像,需要先将CLK拉低、配置DATA数据,延时一个周期,再将CLK拉高延时一个周期。
  4. 数据顺序:接收数据低位在先

4.3. 列逻辑

列出详细逻辑:

  1. 初始化高电平
  2. CLK拉低延时5ms
  3. 获取data最低位数据(尽可能放在数据发送之外)
  4. 循环8次,MCU发送8位数据
  5. CLK拉低(第1次循环的时候没有明显作用,但是后续需要)
  6. DATA设置为指令对应逻辑电平
  7. CLK延时一个周期
  8. CLK拉高
  9. CLK延时一个周期
  10. 更新待发送的数据(尽可能放在数据发送之外)
  11. 循环执行完成之后将DATA和CLK拉高

4.4. 根据逻辑写代码(伪代码)

#define CLK P1 // 引脚定义
#define DATA P2

void operation(data) // data是发送的指令数据
{
    CLK = 1;                    // 初始化高电平
    DATA = 1;
    CLK = 0;                    // CLK拉低延时5ms
    delay_ms(5); 
    b_data = data & 0x01;       // 获取data最低位数据
    for(int i=0; i<8; i++)      // 循环8次,MCU发送8位数据
    {
        CLK = 0;                // 第1次循环的时候没有明显作用,但是后续需要
        DATA = b_data;          // DATA设置为指令对应逻辑电平
        delay_us(300);          // CLK延时一个周期
        CLK = 1;                // CLK拉高
        delay_us(300);          // CLK延时一个周期

        data = data >> 1;
        b_data = data & 0x01;   // 更新待发送的数据
    }
    CLK = 1;                    //  循环执行完成之后将DATA和CLK拉高
    DATA = 1; 
}

5. 总结

  1. 请依据时序图写出伪代码

others

我记得最一开始接触时序图的时候,觉得它好难,不想看。但是这次复习这部分知识的时候,又觉得好简单,视频两倍速我都觉得速度有点慢。复习的时候这种时刻最爽了,感觉现在的自己比之前厉害好多。

从我的经验来说,根据时序图进行编码的时候需要注意两个问题:

  • 一是在通讯的代码中不要随便打印内容进行debug。这个说起来很蠢,但是我就是这样干的,为了检查代码运行是否正常,在通讯程序中添加了串口打印,本身程序执行就是需要时间的,这种处理很有可能影响正常通讯。
  • 二是如果项目是在RTOS基础上构建的情况下,需要注意最小的延时范围。比如我之前的实践当中,配置FreeRTOS的tick是1ms,我如果想要实现300us的延时,是没有办法直接通过系统的delay函数实现的,还是需要使用硬件定时器去处理。

标签:CLK,DATA,时序,3.2,延时,data
From: https://www.cnblogs.com/HoNorthNorth/p/18185149

相关文章

  • 时序数据库IoTDB的安装与使用
    ApacheIoTDB(物联网数据库)是一体化收集、存储、管理与分析物联网时序数据的软件系统。ApacheIoTDB采用轻量式架构,具有高性能和丰富的功能,并与ApacheHadoop、Spark和Flink等进行了深度集成,可以满足工业物联网领域的海量数据存储、高速数据读取和复杂数据分析需求。装环境安装......
  • 时序分析习题练习(一):最大时钟频率
    STA(静态时序分析)详解:如何计算最大时钟频率,以及判断电路是否出现时钟违例(timingviolation)?-CSDN博客DFF1:到达时间:Tclk1= 1+1.1+1.1 Tdata1=1.5Tco1=2 到达时间:3.2+1.5+2=6.7ns需求时间:Tperiod+Tclk2-Tsu1+1.1+1.1=Tclk2Tsu=2.5Tperiod+Tclk2-Tsu -......
  • 时序约束学习拓展(一):偏移和Slack
    已知:(来自单刀)SetupSlack=DataRequiredTime–DataArrivalTime,即SetupSlack=(latchedge +Tclk2-Tsu)–(launchedge+Tclk1+Tco+Tdata)=(latchedge-launchedge)+(Tclk2 -Tclk1 )-(Tsu +Tco+Tdata)= Tperiod +Tskew-(Tsu +Tco+Tdata)。......
  • InfluxDB时序数据库图形用户界面可视化工具(influxdb-gui)
    说明之前开发了一款TDengine的GUI程序,出于兴趣,简单搞个InfluxDB的复制版,类似Navicat,目前基础操作功能已满足,后续看情况,可以继续扩展功能。介绍InfluxDB-GUI是一款功能全面、操作简便的influxdb时序数据库图形界面工具,V1.0.0目前支持influxdb版本列表如下:influxdb1.8.10版本......
  • 时序数据分解
    时序数据  时序数据作为与时间强相关数据,有着独特的特点,但是也有很多通用的数据的性质。1.通过数学期望与协方差进行特征相关性的计算;2.平稳性检验  定义上的平稳性指的是固定时间和位置的概率分布与所有时间和位置的概率分布相同的随机过程。其数学期望和方差这......
  • 时序数据的可视化(1)
    一、 项目目标:理解时序数据的特点和类别,掌握时序数据可视化的方法以及基本图形的绘图方法二、学生知识和能力要求(1)掌握时序数据的特点及可视化要求。(2)掌握折线图的绘制方法。三、工具与设备1、操作系统:Windows112、软件:anaconda、jupyternotebook四、实施步骤与......
  • (3)计数器&时序逻辑
    设计思路: 设计代码:RTL:moduleled_flash(clk,rst_n,led);inputclk,rst_n;outputregled=0;parametermax=24999999;//(计数的最大值)reg[24:0]cnt=0;always@(posedgeclkornegedgerst_n)if(!rst_n)cnt<=0......
  • 下列关于静态,动态时序模拟的优缺点说法错误的是()
    A、静态时序分析是提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求B、静态时序分析可以对芯片设计进行全面的时序验证和功能验证,验证每一条路径,发现时序的重大问题,比如建立时间和保持时间冲突,slowpath以及过大的时钟......
  • 时序预测 | Python实现VMD-CNN-LSTM时间序列预测
    时序预测|Python实现VMD-CNN-LSTM时间序列预测目录时序预测|Python实现VMD-CNN-LSTM时间序列预测预测效果基本介绍模型描述代码设计预测效果基本介绍VMD-CNN-LSTM是一种混合深度学习模型,结合了变分模态分解(VMD)、卷积神经网络(CNN)和长短期记忆......
  • FPGA时序约束实战
    改编自8FPGA时序约束实战篇之主时钟约束_checktimingnoclock 以Vivado自带的wave_gen工程为例,该工程的各个模块功能较为明确,如下图所示。为了引入异步时钟域,我们在此程序上由增加了另一个时钟–clkin2,该时钟产生脉冲信号pulse,samp_gen中在pulse为高时才产生信号。下面我......