3、数字电路基础:逻辑门、触发器、时序逻辑、组合逻辑、总线协议(I2C、SPI、UART)基础
数字电路是硬件测试的底层语言。无论是MCU、FPGA、DDR、传感器接口还是电源管理芯片,其内部行为最终都可以抽象为逻辑门、触发器以及由它们构成的组合逻辑和时序逻辑。而I2C、SPI、UART这三种总线协议,则是芯片之间通信最常用的“对话规则”。本章将围绕这些核心概念,从测试工程师的视角出发,帮助你建立从电路原理到实际信号测量的完整知识链路,为后续的时序测试、协议解码和故障定位打下坚实基础。
3.1 逻辑门:数字世界的原子操作
逻辑门是构成数字电路的最小功能单元。测试工程师在调试故障时,往往需要从芯片引脚的电平关系反推内部逻辑门的工作状态。例如,当一颗ADC芯片的输出数据异常时,我们需要确认其片选信号(CS)与时钟信号(SCLK)之间的逻辑关系是否符合数据手册中的“与”逻辑要求。
核心原理:逻辑门执行布尔代数运算,常见类型包括与门(AND)、或门(OR)、非门(NOT)、与非门(NAND)、或非门(NOR)、异或门(XOR)等。每个逻辑门都有明确的真值表,定义了输入电平组合与输出电平之间的映射关系。在硬件测试中,我们通常使用逻辑分析仪或示波器同时观测多个输入输出引脚,通过对比真值表来判断逻辑门是否工作正常。
判断方法:测试逻辑门时,应首先确认供电电压(VCC)和参考地(GND)正常,然后使用信号发生器或相邻引脚提供已知逻辑电平输入,用示波器探头测量输出引脚。关键参数包括:
- 高电平阈值(VIH):输入被识别为逻辑“1”的最低电压,通常为VCC×0.7(TTL为2.0V)。
- 低电平阈值(VIL):输入被识别为逻辑“0”的最高电压,通常为VCC×0.3(TTL为0.8V)。
- 传播延迟(tPD):从输入变化到输出稳定所需的时间,是衡量逻辑门速度的核心指标。
3.2 触发器与时钟边沿:时序逻辑的基石
触发器(Flip-Flop)是能够存储1位二进制信息的时序元件。与逻辑门不同,触发器的输出不仅取决于当前输入,还取决于时钟信号(CLK)的边沿以及电路的历史状态。在硬件测试中,触发器的建立时间(tSU)和保持时间(tH)是最常被验证的参数,它们直接决定了系统能否在高速时钟下稳定运行。
核心原理:以D触发器为例,其输出Q在时钟上升沿(或下降沿)到来时,会采样D输入端的电平并保持到下一个有效边沿。这种边沿触发的特性使得触发器能够同步数据流,构成移位寄存器、计数器和有限状态机(FSM)。
操作流程:测试触发器的建立/保持时间,通常采用以下步骤:
- 使用码型发生器(Pattern Generator)产生数据信号(D)和时钟信号(CLK)。
- 逐步移动数据信号相对于时钟边沿的位置(步进通常为100ps或1ns)。
- 用逻辑分析仪或示波器监测输出Q是否稳定跟随D输入。
- 记录输出开始出现亚稳态(Metastability)或错误采样的临界时间点,即为tSU和tH的边界。
| 参数 | 定义 | 测试方法 | 典型值(74HC74) |
|---|---|---|---|
| tSU(建立时间) | 数据在时钟有效边沿前必须保持稳定的最短时间 | 扫描数据边沿位置,观察输出稳定性 | 20ns |
| tH(保持时间) | 数据在时钟有效边沿后必须保持稳定的最短时间 | 扫描数据边沿位置,观察输出稳定性 | 5ns |
| tCO(时钟到输出延迟) | 时钟有效边沿到输出稳定的时间 | 测量CLK与Q之间的时间差 | 35ns |
3.3 组合逻辑与时序逻辑:从电路到系统
组合逻辑电路(如译码器、多路选择器)的输出仅由当前输入决定,没有存储功能;而时序逻辑电路(如计数器、寄存器)则依赖时钟驱动,能够记住历史状态。在实际硬件系统中,这两类逻辑往往交织在一起。例如,一个典型的SPI从设备接口,其内部就包含组合逻辑(地址译码)和时序逻辑(移位寄存器)。
案例拆解:假设我们正在调试一块FPGA开发板上的UART接收模块。该模块的核心是一个16倍波特率过采样计数器(时序逻辑),配合一个起始位检测器(组合逻辑)。测试中发现接收数据偶尔出现乱码,通过逻辑分析仪抓取波形后发现:
- 初始现象:UART接收到的数据在波特率设置为115200时,每100帧约有2帧错误。
- 关键数据:示波器测量TX引脚信号,发现上升沿过冲达到1.2V(3.3V系统),振铃持续约15ns。
- 分析过程:过冲导致接收端的输入电平在阈值附近反复穿越,使得起始位检测器误判,进而导致采样点偏移。
- 实际操作:在TX引脚串联22Ω电阻以抑制振铃,并在接收端添加100pF对地电容进行滤波。
- 结果对比:修改后连续测试10000帧,误码率降为0。
总结复盘:这个案例说明,时序逻辑的稳定性不仅取决于逻辑设计本身,还受到信号完整性的强烈影响。测试时不能只关注逻辑波形,还要检查模拟域的过冲、振铃和串扰。
3.4 总线协议基础:I2C、SPI、UART的测试要点
I2C、SPI和UART是板级硬件通信最常用的三种协议。作为硬件测试工程师,掌握它们的电气特性和时序要求是必备技能。下表对比了三种协议的核心差异:
| 特性 | I2C | SPI | UART |
|---|---|---|---|
| 信号线数量 | 2(SCL+SDA) | 4(SCLK+MOSI+MISO+CS) | 2(TX+RX) |
| 通信模式 | 半双工 | 全双工 | 全双工 |
| 主从结构 | 多主多从 | 单主多从 | 点对点 |
| 时钟来源 | 主机提供SCL | 主机提供SCLK | 双方约定波特率 |
| 典型速率 | 100k/400k/1Mbps | 可达几十Mbps | 9600~4Mbps |
| 地址机制 | 7位或10位设备地址 | 通过CS片选 | 无地址 |
I2C测试要点:I2C使用开漏输出,必须外接上拉电阻(通常为2.2kΩ~4.7kΩ)。测试时应关注SDA和SCL的上升沿时间(tR),标准模式要求不超过1μs。使用示波器测量时,应同时观察起始条件(SDA下降沿先于SCL)和停止条件(SDA上升沿先于SCL)。
SPI测试要点:SPI的时序参数包括SCLK频率、CPOL(时钟极性)和CPHA(时钟相位)。测试时需确认主从设备的CPOL/CPHA配置一致,否则数据采样会错位。重点测量SCLK到MOSI/MISO的数据建立时间和保持时间。
UART测试要点:UART是异步协议,没有时钟线,因此波特率误差是测试重点。通常要求收发双方的波特率误差不超过±2%。测试时可通过示波器测量一个字节的起始位到停止位的总时间,反推实际波特率。
- 确认电平标准(3.3V/5V/1.8V)和逻辑阈值。
- 使用示波器或逻辑分析仪抓取完整通信帧。
- 解码并核对地址、数据、校验位是否符合预期。
- 测量关键时序参数(建立时间、保持时间、上升/下降时间)。
- 进行极限测试(如改变负载电容、温度、电压)验证设计裕量。
在实际项目中,建议为每种总线协议建立标准的测试模板,记录不同条件下的时序余量。例如,在-40℃和+85℃下分别测量I2C的上升沿时间,确保在最坏情况下仍满足规范要求。通过这种系统化的测试方法,可以提前发现潜在的通信可靠性隐患,避免产品在量产阶段出现偶发故障。