第三章:数字电路基础——逻辑门、组合逻辑、时序逻辑、状态机与常用数字IP

各位同学,欢迎来到数字电路基础这一章。说实话,很多ATE测试工程师在入行头两年,最容易栽跟头的地方就是这里。你想想看,ATE测试说白了就是在跟芯片里的数字逻辑打交道,如果连这些基本单元都搞不清楚,那测试向量怎么写?故障怎么定位?

我个人习惯,在带新人时,第一件事就是让他们把数字电路的几个基本概念吃透。别急着上手仪器,先把地基打牢。这一章,我们就来聊聊逻辑门、组合逻辑、时序逻辑、状态机,还有那些你天天见但可能没细想过的常用数字IP。

3.1 逻辑门:数字世界的“原子”

逻辑门是数字电路最基本的构建单元。说白了,就是实现布尔代数运算的硬件电路。常见的就那么几种:与门、或门、非门、与非门、或非门、异或门、同或门。

我记得刚入行那会儿,带我的老工程师跟我说:“你甭管芯片多复杂,拆到最底层,全是这些门电路拼起来的。” 这话我到现在都觉得很对。

逻辑门 符号 布尔表达式 真值表(2输入)
与门 (AND) & Y = A · B 全1出1
或门 (OR) ≥1 Y = A + B 有1出1
非门 (NOT) 1 Y = A' 入1出0,入0出1
与非门 (NAND) & Y = (A·B)' 全1出0
或非门 (NOR) ≥1 Y = (A+B)' 全0出1
异或门 (XOR) =1 Y = A ⊕ B 相异出1
小提示: 在ATE测试中,我们经常用与非门和或非门来做故障注入测试。为什么呢?因为它们是通用门,可以组合出任何逻辑功能。我曾在一次项目中,用NAND门搭了一个简单的测试向量生成器,省了不少事。

3.2 组合逻辑电路:没有记忆的“直性子”

组合逻辑电路,输出只取决于当前的输入,跟历史状态没关系。它就像个直性子的人,心里想什么,嘴上就说什么,不藏着掖着。

常见的组合逻辑电路有:

  • 编码器/译码器: 比如3-8译码器,输入3位二进制,输出8位独热码。我在测试MCU芯片时,经常用译码器来选通不同的测试模式。
  • 多路选择器 (MUX): 从多路输入中选一路输出。ATE测试中,MUX常用于通道切换。
  • 加法器: 半加器、全加器,是ALU的核心。测试加法器时,我习惯用穷举法,虽然慢,但最保险。
  • 比较器: 比较两个数的大小或是否相等。
避坑指南: 我曾经在测试一个高速ADC的数字接口时,发现译码器输出总是不稳定。查了半天,原来是组合逻辑的竞争冒险导致的毛刺。从那以后,我测试组合逻辑电路时,一定会关注时序余量和毛刺问题。

3.3 时序逻辑电路:有记忆的“老江湖”

时序逻辑电路就不一样了,它的输出不仅取决于当前输入,还跟过去的状态有关。它就像个老江湖,做事会考虑前因后果。

核心元件是触发器(Flip-Flop),最常见的是D触发器和JK触发器。

// D触发器行为描述(Verilog)
always @(posedge clk or negedge rst_n) begin
    if (!rst_n)
        q <= 1'b0;
    else
        q <= d;
end

时序逻辑电路的关键参数:

  • 建立时间 (Setup Time): 数据在时钟沿到来前必须稳定的时间。
  • 保持时间 (Hold Time): 数据在时钟沿到来后必须稳定的时间。
  • 时钟到输出延迟 (Clk-to-Q Delay): 时钟沿到输出变化的延迟。
注意: 在ATE测试中,建立时间和保持时间的测试是必测项。如果这两个参数不满足,芯片在高频下就会出问题。我见过一个案例,某款芯片在低温下保持时间违例,导致整批货报废,损失惨重。

3.4 状态机:数字系统的“大脑”

状态机(FSM)是数字电路设计的核心思想之一。它把系统的工作过程分解成若干个状态,根据输入和当前状态,决定下一个状态和输出。

状态机分两种:

  • Moore型: 输出只取决于当前状态。
  • Mealy型: 输出取决于当前状态和输入。

我画了一张状态机的结构图,帮你理解它的核心逻辑:

组合逻辑 (次态逻辑) 次态 状态寄存器 (D触发器) 现态 组合逻辑 (输出逻辑) 输出 输入 时钟 反馈(现态)

在ATE测试中,状态机测试是个难点。我常用的方法是:先确定状态转移表,然后编写测试向量,覆盖所有状态和转移路径。特别是那些“非法状态”,一定要测到。

经验之谈: 测试状态机时,别忘了测复位。我曾经遇到一个案例,芯片上电后状态机进入了非法状态,怎么都回不来。后来发现是复位电路设计有bug。所以,复位测试一定要做彻底。

3.5 常用数字IP:你身边的“老朋友”

数字IP(Intellectual Property)就是预先设计好的、可复用的数字电路模块。在ATE测试中,你几乎天天跟它们打交道。

常用的数字IP包括:

  • UART: 通用异步收发器。测试时主要关注波特率精度、帧格式、奇偶校验。
  • SPI: 串行外设接口。测试重点是时钟极性和相位、数据速率。
  • I2C: 内部集成电路总线。测试时要注意地址冲突、仲裁、时钟拉伸。
  • Timer/Counter: 定时器/计数器。测试精度和溢出行为。
  • PWM: 脉宽调制。测试占空比和频率。
  • GPIO: 通用输入输出。测试输入输出电平、上下拉、驱动能力。
IP模块 测试重点 常见故障
UART 波特率、帧格式、校验 波特率偏差、起始位丢失
SPI 时钟极性、相位、速率 时序违例、数据错位
I2C 地址、仲裁、时钟拉伸 总线锁死、ACK丢失
Timer 计数精度、溢出 计数不准、中断丢失
PWM 占空比、频率 占空比偏差、频率抖动
GPIO 电平、驱动能力、上下拉 驱动不足、漏电流
特别提醒: 测试数字IP时,一定要看datasheet里的时序图。我见过太多人,不看时序图就瞎写测试向量,结果测出来的结果全是错的。记住,时序图就是你的“圣经”。

好了,这一章的内容就到这里。数字电路基础是ATE测试的基石,把这些搞懂了,后面的路就好走了。记住,多动手,多思考,多总结。咱们下一章见。


公众号:蓝海资料掘金营,微信deep3321