移位寄存器检测:原理与方法
移位寄存器是数字系统中广泛使用的时序逻辑电路,用于实现数据的串行传输、延迟、并行-串行转换等功能。其可靠性对系统整体运行至关重要。本文将系统阐述移位寄存器的检测原理与常用方法。
一、 移位寄存器基础
- 结构: 由多个触发器(通常是D触发器)级联构成,每个触发器的输出连接到下一级触发器的输入。
- 核心操作: 在时钟信号驱动下,存储的数据依次向相邻位(左移或右移)传递。
- 工作模式:
- 串行输入串行输出 (SISO): 数据逐位输入,逐位输出。
- 串行输入并行输出 (SIPO): 数据逐位输入,所有位同时输出。
- 并行输入串行输出 (PISO): 所有位同时输入,数据逐位输出。
- 并行输入并行输出 (PIPO): 所有位同时输入和输出(此时功能类似于普通寄存器)。
- 关键信号:
- 时钟 (CLK): 控制数据移位的时序信号。
- 数据输入 (Serial In, SI / Parallel In, PI): 待移入的数据。
- 数据输出 (Serial Out, SO / Parallel Out, PO): 移出的数据。
- 模式控制 (如 Shift/Load): 决定当前是移位操作还是并行加载操作。
二、 常见故障类型
检测的目标是发现电路中的物理缺陷导致的逻辑错误,常见类型包括:
- 固定型故障 (Stuck-At Faults): 电路中某节点逻辑值永久固定为
0
(Stuck-At-0, SA0) 或1
(Stuck-At-1, SA1)。这是最常建模的故障。 - 开路/短路故障: 导线断裂(开路)或不应连接的节点短路。
- 桥接故障: 两个或多个不应连接的节点短接在一起。
- 触发器故障: 如复位/置位失效、时钟失效、数据无法锁存等。
- 相邻位桥接: 移位链中相邻触发器单元输出间发生短路。
三、 检测核心原理
移位寄存器检测的核心在于利用其移位特性:
- 可控性与可观测性:
- 可控性: 通过串行输入或并行输入端口,可以将特定的测试数据模式(Test Pattern)加载到寄存器中。
- 可观测性: 通过串行输出端口(或并行输出端口),可以观察到寄存器内部所有位在移位操作过程中的状态变化。
- 移位遍历: 在时钟驱动下执行移位操作,寄存器内部的每一位数据都会依次出现在串行输出端。这使得仅需一个输出端口即可观测内部所有状态,大大简化了测试过程。
- 故障传播: 注入测试数据并执行一系列移位操作。如果寄存器中存在故障,该故障可能会改变某一位(或几位)在某个移位周期应有的正确值。这个错误值会在后续移位过程中传播到输出端,通过观察输出序列与预期序列的差异即可检测故障。
四、 常用检测方法
-
移位序列测试 (确定性测试):
- 原理: 这是最直接、最常用的方法,尤其适用于检测固定型故障和桥接故障。
- 操作步骤:
- 初始化 (可选): 通过复位或加载特定模式初始化寄存器状态。
- 注入测试数据: 通过串行输入端口连续移入一个精心设计的测试序列(通常包含
0
和1
交替的模式,如0101...
或0011...
等)。对于并行加载模式,也可直接加载特定并行测试向量。 - 执行移位操作: 施加足够数量的时钟脉冲(通常等于寄存器位数N + 2或更多),使注入的数据遍历所有位并移出。
- 捕获输出响应: 在串行输出端口捕获移位过程中输出的数据序列。
- 比较: 将捕获的输出序列与根据无故障电路模型计算出的预期输出序列 (Golden Response) 进行比较。任何不一致都表明存在故障。
- 特点: 方法简单,测试向量生成相对直接,对固定型故障检测率高。测试序列长度约为
O(N)
(N为位数)。
-
伪随机测试 (基于LFSR):
- 原理: 利用线性反馈移位寄存器生成长周期的伪随机序列作为测试输入,同时用另一个LFSR或多输入特征寄存器作为输出响应的压缩器。
- 操作步骤:
- 将待测移位寄存器配置为串行输入模式。
- 连接一个LFSR到其串行输入。
- 连接一个多输入特征寄存器到其串行输出。
- 施加大量时钟脉冲,使伪随机测试序列充分加载和移位。
- 测试结束后,读出多输入特征寄存器中的最终特征值。
- 将此特征值与无故障电路计算出的预期特征值比较。
- 特点: 测试向量生成简单(硬件自动生成),测试长度可调,能覆盖较多随机故障。但故障覆盖率可能略低于精心设计的确定性测试,且需要额外的LFSR硬件。
-
奇偶校验:
- 原理: 在移位操作过程中,计算输出数据的奇偶性(偶校验或奇校验)。如果寄存器内部发生奇数个位翻转错误(例如SA0/SA1故障导致),奇偶性会改变。
- 操作: 在移位过程中,用一个异或门实时计算串行输出数据的累积奇偶位。在测试结束时或特定周期检查奇偶位是否正确。
- 特点: 硬件开销小,实现简单。但只能检测奇数个位错误,对偶数个位错误或某些桥接故障不敏感。常作为辅助检测手段。
-
回环测试:
- 原理: 将移位寄存器的串行输出直接连接到其串行输入,构成一个环。
- 操作:
- 通过并行加载或复位设置初始状态。
- 使能回环连接。
- 施加时钟脉冲进行移位操作。
- 在特定周期后,通过并行输出端口读出寄存器状态,或检查状态是否与预期一致(例如,初始状态为全
1
,移位后应保持全1
;初始为1000...0
,移位后应变为0100...0
等)。
- 特点: 无需外部输入测试向量,测试简单。但故障覆盖可能不够全面,特别是对输入/输出端口本身的故障。
五、 测试序列设计考虑
- 长度: 至少要覆盖
N+2
个周期(N为位数):第一个周期加载数据到第一级,N个周期使数据遍历所有位并移出,最后一个周期确保最后一位被观测到。增加长度可提高覆盖率。 - 内容: 应包含能激活和传播常见故障的模式。例如:
00...0
(全0):检测SA1故障。11...1
(全1):检测SA0故障。0101...01
/1010...10
:检测相邻位间的桥接故障、触发器翻转故障。001100...
:检测多位故障和特定移位模式。
- 故障覆盖率: 目标是通过最少数量的测试序列达到最高的故障覆盖率(通常要求>95%)。可使用自动测试向量生成工具辅助设计。
六、 设计建议
- 提供测试点: 确保串行输入、串行输出、时钟、复位/置位等关键信号易于访问。
- 支持并行加载: 并行加载能力可显著加速测试初始化过程。
- 集成扫描链: 在复杂芯片中,将移位寄存器嵌入到扫描链中是实现全面可测性设计的重要方法。通过扫描输入/输出端口进行测试。
结论
移位寄存器因其固有的串行移位特性,具有天然的测试优势。通过向其输入特定的测试序列并观察移位过程中的输出响应,可以有效地检测内部固定型故障、桥接故障等常见缺陷。移位序列测试是最基础有效的方法,伪随机测试适用于大规模应用,奇偶校验和回环测试可作为补充。精心设计测试序列并结合良好的可测性设计,能够高效保障移位寄存器功能的正确性和可靠性。