1. 时序基础概念:时钟周期、上升沿/下降沿、建立时间、保持时间、传播延迟

各位同学,咱们今天聊点实在的。时序这东西,说白了就是数字电路的「心跳」和「节奏」。我见过不少新手,上来就追着高速接口跑,结果板子调不通,最后发现是最基本的时序概念没吃透。嗯,这节课咱们就把地基打牢。

1.1 时钟周期:系统的脉搏

时钟周期,就是时钟信号重复一次的时间间隔。你想想看,MCU 里所有动作都得跟着这个节拍走。比如一个 100MHz 的时钟,周期就是 10ns。这 10ns 里,CPU 要完成取指令、译码、执行……时间紧得很。

核心公式:

频率 (Hz) = 1 / 周期 (s)

周期 (s) = 1 / 频率 (Hz)

举个例子:我调试 STM32F4 的 SPI 接口时,发现通信偶尔丢包。查了半天,原来是时钟配置错了,实际频率比标称高了 20%。周期一缩,从设备跟不上,数据就乱了。所以,时钟周期是时序分析的起点,所有建立时间、保持时间的计算,都绕不开它。

1.2 上升沿与下降沿:数据的「快门」

数字信号不是从 0 瞬间跳到 1 的,它有个过渡过程。上升沿就是信号从低电平变高电平的那一瞬间,下降沿则相反。大多数 MCU 外设(比如 I2C、SPI)都是在上升沿采样数据。

我个人习惯把上升沿比作相机的快门。快门按下的那一刻,数据被「拍」进寄存器。如果数据在快门按下时没稳定,拍出来的就是模糊的——这就是时序违规。

小技巧: 看数据手册时,注意区分「上升沿采样」和「下降沿采样」。有些器件(比如某些 DAC)偏偏在下降沿锁存数据,搞反了就是灾难。

1.3 建立时间 (Setup Time):数据要提前到

建立时间,指的是在时钟有效沿到来之前,数据必须保持稳定的最短时间。说白了,就是数据得「提前站好位置」,等时钟来拍。

我曾经在一个项目中,用 FPGA 读取一个老款 ADC 的数据。ADC 的数据手册上写建立时间要求 5ns,但我 FPGA 内部逻辑延迟太大,数据送到 IO 口时只剩 3ns 了。结果呢?读回来的数据偶尔跳变,像鬼影一样。后来加了流水线寄存器,才把建立时间凑够。

避坑指南: 建立时间不满足,通常表现为「偶发性错误」。比如 1000 次通信里错 1 次,这种最难排查。我建议你在设计初期就用时序分析工具算一遍,别等板子回来了再抓瞎。

1.4 保持时间 (Hold Time):数据别急着走

保持时间,是时钟有效沿之后,数据必须继续保持稳定的最短时间。时钟拍完照,数据不能马上溜,得让寄存器稳稳地锁存住。

保持时间违规比建立时间更隐蔽。为什么?因为建立时间不够,你降降频率还能凑合;但保持时间违规,降频也没用——它跟时钟周期无关,只跟路径延迟有关。

我记得有一次调试一个高速 SPI 接口,时钟频率从 20MHz 降到 1MHz,错误依旧。最后用示波器一看,数据线的下降沿比时钟沿还快,保持时间直接变负数了。解决办法是在数据线上串个小电阻,减慢边沿速度。

参数 含义 违规后果 常见解决
建立时间 时钟沿前数据需稳定 偶发错误,降频可缓解 优化逻辑延迟、加流水线
保持时间 时钟沿后数据需稳定 固定错误,降频无效 增加延迟、串电阻

1.5 传播延迟:信号在路上跑

传播延迟,就是信号从发送端到接收端所花的时间。它包含门延迟、走线延迟、缓冲器延迟等。在高速设计中,传播延迟不能忽略。

举个例子:你从 MCU 的 SPI 主机发一个数据,到从设备收到这个数据,中间经过 PCB 走线、电平转换芯片、连接器……每一段都有延迟。如果这些延迟加起来超过了半个时钟周期,时序就可能乱套。

我做过一个项目,MCU 和传感器距离 30cm,用排线连接。SPI 时钟跑到 40MHz 时,数据总是错位。一算,排线的传播延迟大约 2ns,加上驱动芯片的延迟,总共 5ns,而 40MHz 的周期才 25ns。虽然看起来占比不大,但加上建立时间要求,余量就没了。后来换成差分传输,才搞定。

经验之谈: 传播延迟不是越小越好,关键是「匹配」。数据线和时钟线的延迟要尽量一致,否则会出现 skew(偏斜)。我习惯在布线时让时钟线比数据线长一点点,给数据多留点建立时间。

1.6 五个概念的关系:一张图说清楚

咱们把这五个概念串起来。你想想看,一个时钟周期里,数据从上一个寄存器出发,经过传播延迟到达下一个寄存器。它必须在下一个时钟沿到来之前,提前满足建立时间;在时钟沿之后,还得再待够保持时间。

说白了,时序分析就是算一笔账:

  • 收入: 时钟周期
  • 支出: 传播延迟 + 建立时间 + 保持时间
  • 余量: 周期 - (传播延迟 + 建立时间 + 保持时间)

余量要是负数,板子就等着返工吧。

我的习惯: 设计时至少留 20% 的时序余量。比如周期 10ns,所有延迟加起来最多用 8ns。剩下的 2ns 给温度变化、芯片批次差异、PCB 制造公差。别问我怎么知道的——吃过亏的人都会这么做。

1.7 小结

这一章咱们把时序的五个基础概念捋了一遍。时钟周期是节奏,上升沿/下降沿是采样时刻,建立时间和保持时间是数据稳定的窗口,传播延迟是信号在路上跑的时间。搞懂这些,后面学 I2C、SPI、UART 的时序图,你就能一眼看出门道。

下一章,咱们聊聊「时序图怎么看」。到时候我会拿几个真实的数据手册出来,带你们一行一行地读。嗯,记得带上你的放大镜。