边界扫描测试原理 15 -- BSDL 9 应用示例
边界扫描测试原理 15 – BSDL 9 应用示例
文章目录
- 边界扫描测试原理 15 -- BSDL 9 应用示例
- BSDL 的应用示例
- 每个引脚的多个单元
- 内部单元
- 合并单元
- BSDL 描述示例
BSDL 的应用示例
边界扫描寄存器描述
以下示例说明了一些特殊情况的边界扫描寄存器结构的描述。
- 每个引脚的多个单元
- 内部单元
- 合并单元
每个引脚的多个单元
组件引脚可以由多个单元服务。每个单元可以执行不同的功能。请注意,这个功能是相对于边界单元的,而不是组件引脚。例如,在一个双向引脚上,一个单元可以作为输入接收器,而另一个则作为输出驱动器。额外的仅观察(OBSERVE_ONLY)单元可以连接到任何I/O引脚。
图2-6所示的组件用于说明具有几个仅观察(OBSERVE_ONLY)单元的边界扫描寄存器。
-
单元2是一个额外的仅观察(OBSERVE_ONLY)单元,与组件的双向引脚9相关联。
-
单元7是一个额外的仅观察(OBSERVE_ONLY)单元,与组件的输出引脚8相关联。单元9、8和7可能是一个可编程的双单元双向实现,被重新编程为双态输出。
-
单元15是一个额外的仅观察(OBSERVE_ONLY)单元,与组件的输入引脚6相关联。单元13和14也与引脚6相关联,但被描述为输入单元,并连接到系统逻辑。
-
单元17是一个额外的仅观察(OBSERVE_ONLY)单元,与组件的输入引脚5相关联。单元16是引脚5的常规输入单元。
-
如果图2-6中的组件支持INTEST,那么单元18必须是时钟(CLOCK)类型。如果组件不支持INTEST,单元18可以是输入单元或仅观察(OBSERVE_ONLY)单元。
内部单元
内部单元可用于在设计中捕获“常量”或系统逻辑依赖的值(0 和 1)。这种能力的一种建议用途是将硬编码值(可能在边界扫描寄存器的前几个比特中)捕获为一个非正式的识别码。另一个应用是监测电源连接,以确保它们接收到正确的输入电源,并根据测量结果捕获数据位。例如,如果电源连接良好,加载的数据将为1,而有故障的电源输入则会导致捕获0。内部单元,可以具有控制和观察能力或仅观察能力,可能位于核心电路数字和模拟部分之间的边界。最后,在可编程组件中可能有额外的未使用单元。
IEEE 不允许系统逻辑环绕在内部单元周围。
图2-6所示的组件用于说明具有多个INTERNAL单元的边界扫描寄存器。
-
单元0和1是数字系统逻辑和模拟系统功能之间的INTERNAL单元。注意,单元0和1与引脚10无关。
-
单元6、9和12是观察来自系统逻辑的信号的单元,与I/O引脚无关,被描述为INTERNAL单元。
-
单元19是边界扫描寄存器中的额外单元。它不观察系统逻辑或I/O引脚,被描述为INTERNAL单元。
图2-6的边界扫描寄存器定义在示例2-51中给出。
示例 2-51
说明内部单元的边界扫描寄存器定义
attribute BOUNDARY_LENGTH of Figure_6: entity is 20;
attribute BOUNDARY_REGISTER of Figure_6: entity is--
-- num cell port function safe [ccell disval rslt]
--
" 0 ( BC_1, * internal, 0), "&
" 1 ( BC_1, *, internal, 1), "&
" 2 ( BC_0, BIDIR_1 observe_only, X) "&
" 3 ( BC_1, BIDIR_1 input, X), "&
" 4 ( BC_1, BIDIR_1, output3, 0), 5, 0, Z), "&
" 5 ( BC_1, *, control, 0), "&
" 6 ( BC_0, *, internal, X), "&
" 7 ( BC_0, OUTPUT_2, observe_only, X), "&
" 8 ( BC_1, OUTPUT_2, output2, 1), "&
" 9 ( BC_0, *, internal, X), "&
" 10 ( BC_1, OUTPUT_1, output3, 0, 11, 0, Z), "&
" 11 ( BC_1, *, control, 0), "&
" 12 ( BC_0, *, internal, X), "&
" 13 ( BC_1, INPUT_1, input, X), "&
" 14 ( BC_1, INPUT_1, input, X), "&
" 15 ( BC_0, INPUT-1, observe_only, X), "&
" 16 ( BC_1, INPUT_2, input, X), "&
" 17 ( BC_0, INPUT_2, observe_only, X), "&
" 18 ( BC_0, INPUT_3, observe_only, X), "&
" 19 ( bc_0, *, internal, X) ";

一个说明仅观察(Observe_Only)和内部单元(Internal Cells)的组件
合并单元
图2-7中显示的组件用于说明边界扫描寄存器描述以及处理的特殊情况。这些特殊情况出现的原因是因为IEEE允许在它们之间的系统逻辑为空时合并边界扫描单元。如果它们之间的“逻辑”只是一个数据路径,例如导线或缓冲器,则单元可以合并。合并完成时,结果单元必须遵循合并单元规则的组合。

说明多个合并单元的组件
图2-7的边界扫描寄存器定义在示例2-52中给出。
示例2-52
说明合并单元的边界扫描寄存器定义
attribute BOUNDARY_LENGTH of Figure_7: entity is 10;
attribute BOUNDARY_REGISTER of Figure_7: entity is--num cell port function safe [ccell disval rslt]
--
" 0 ( BC_1, *, control, 0), "&
" 1 ( BC_1, out2, output2, 1, 1, 1, Weak1), "&
" 2 ( BC_7, BIDIR1, bidir, X, 3, 0, Z), "&
" 3 ( BC_2, *, control, 0), "&
" 4 ( BC_1. *, control, 0), "&
" 5 ( BC_1, BIDIR3, input, X), "&
" 5 ( BC_1, BIDIR2, ouptut3, X, 7, 1, Z), "&
" 6 ( BC_1, BIDIR2, input, X), "&
" 6 ( BC_1, BIDIR3, output3, X, 4, 0, Z), "&
" 7 ( BC_1, *, control, 1), *&
" 8 ( BC_1, IN2, input, X), "&
" 9 ( BC_1, IN1, input, X), "&
" 9 ( BC_1, OUT1, output3, X, 0, 0, Z) ";
-
单元0、4和7是位于系统逻辑和OUT1、BIDIR2和BIDIR3信号的启用之间的控制单元。请注意,这些单元的“安全”子字段被分配了值以导致关联驱动器禁用。
-
单元3是用于双向信号BIDIR1的可逆单元的控制。注意它的“安全”子字段被赋予导致BIDIR1为输入的值。
-
单元1是一个两态输出数据单元。注意它有三个额外字段,表明它控制了自身的开集电极非对称驱动器。通过在单元1中放置1,可以将OUT2的驱动器设置为非活动驱动状态,其中它将输出WEAK1状态。
-
单元2是一个可逆单元,既可以作为输入(如果控制单元关闭了输出驱动器,这意味着单元3产生0)或作为驱动器的数据源(如果输出启用)。
-
请注意BIDIR2和BIDIR3的结构允许对驱动器进行观察,从而允许简单的一致性检查。
-
单元5(以及类似的单元6和9)具有合并行为:它既作为BIDIR3的输入接收器,也作为BIDIR2的数据源。因此,该单元在边界扫描寄存器定义中有两行描述。第一行描述其作为输入单元的行为,而第二行描述其作为输出单元的特征。请注意,以这种身份使用的单元BC_1必须支持输入和OUTPUT3功能。这反映在BC_1的定义中,其中所有指令都存在这两种功能。
图2-7中的示例极端并包括几个不寻常的情况。大多数组件实现相当简单和常规。
BSDL 描述示例
图 2-9
示例设备:TI 八位 D 型触发器
示例 2-53
BSDL 描述示例
entity ttl74bct8374 isgeneric (PHYSICAL_PIN_MAP : string := "DW");port (CLK:in bit; Q:out bit_vector(1 to 8); D:in bit_vector(1 to 8);GND, VCC:linkage bit; OC_NEG:in bit; TDO:out bit; TMS, TDI, TCK:in bit);use STD_1149_1_2001.all; -- 获取 Std 1149.1-2001 属性和定义attribute COMPONENT_CONFORMANCE of ttl74bct8374 : entity is "STD_1149_1_1990";attribute PIN_MAP of ttl74bct8374 : entity is PHYSICAL_PIN_MAP;constant DW: PIN_MAP_STRING:="CLK:1, Q:(2,3,4,5,7,8,9,10), " &"D:(23,22,21,20,19,17,16,15)," &"GND:6, VCC:18, OC_NEG:24, TDO:11, TCK:13, TDI:14";constant FK: PIN_MAP_STRING:"CKL:9, Q:(10,11,12,13,16,17,18,19)," &"D:(6,5,4,3,2,27,26,25)," &"GND:14, VCC:28, OC_NEG:7, TDO:20, TMS:21, TCK:23, TDI:24";attribute TAP_SCAN_IN of TDI : signal is true;attribute TAP_SCAN_MODE of TMS : signal is true;attribute TAP_SCAN_OUT of TDO : signal is true;attribute TAP_SCAN_CLOCK of TCK : signal is (20.0e6, BOTH);attribute INSTRUCTION_LENGTH of ttl74bct8374 : entity is 8;attribute INSTRUCTION_OPCODE of ttl74bct8374 : entity is"BYPASS (11111111,10001000, 00000101, 00000001)," &"EXTEST (00000000, 10000000)," &"SAMPLE (00000010, 10000010)." &"PRELOAD (00000010, 10000010)." &"INTEST (00000011, 10000011)," &"HIGHZ (00000110, 10000110)," & -- 新的 1149.1a HIGHZ 指令"CLAMP (00000111, 10000111)," & -- 新的 1149.1a CLAMP 指令"RUNT (00001001, 10001001)," & -- 边界运行测试"READBN (00001010, 10001010)," & -- 边界读取正常"READBT (00001011, 10001011)," & -- 边界读取测试,"CELLTST(00001100, 10001100)," & -- 边界自测正常"TOPHIP (00001101, 10001101)," & -- 边界切换输出测试"SCANCN (00001110, 10001110)," & -- BCR 扫描正常"SCANCT (00001111, 10001111)"; -- BCR 扫描测试attribute INSTRUCTION_CAPTURE of ttl74bct8374 : entity is "10000001";attribute REGISTER_ACCESS of ttl74bct8374 : entity is"BOUNDARY (READBN, READBT, CELLTST)," &"BYPASS (TOPHIP, SETBYP, RUNT, TRIPBYP), " &"BCR [2] (SCAMCM. SCAMCT)"; -- 2 位边界控制寄存器attribute BOUNDARY_LENGTH of ttl74bct8374 : entity is 18;attribute BOUNDARY_REGISTER of ttl74bct8374 : entity is -- num cell port function safe [ccell disval rslt]"17 (BC_1, CLK, input, X), " &"16 (BC_1, OC_NEG, input, X), " & -- 已合并输入/控制"16 (BC_1, *, control, 1), " &"15 (BC_1, D(1), input, X), " &"14 (BC_1, D(2), input, X), " &"13 (BC_1, D(3), input, X), " &"12 (BC_1, D(4), input, X), " &"11 (BC_1, D(5), input, X), " &"10 (BC_1, D(6), input, X), " &"9 (BC_1, D(7), input, X), " &"8 (BC_1, D(8), input, X), " &"7 (BC_1, Q(1), output3, X, 16, 1, Z), " &"6 (BC_1, Q(2), output3, X, 16, 1, Z), " &"5 (BC_1, Q(3), output3, X, 16, 1, Z), " &"4 (BC_1, Q(4), output3, X, 16, 1, Z), " &"3 (BC_1, Q(5), output3, X, 16, 1, Z), " &"2 (BC_1, Q(6), output3, X, 16, 1, Z), " &"1 (BC_1, Q(7), output3, X, 16, 1, Z), " &"0 (BC_1, Q(8), output3, X, 16, 1, Z) ";end ttl74bct8374;
