在现代电子应用系统中 ,印刷电路板越来越复杂多层板的设计越来越普遍,大量使用各种表贴元件和b ga (ball grid array) 封装元件,元器件的管脚数和管脚密度不断提高,使用万用表、示波器测试芯片的传统“探针”方法已不能满足要求。在这种背景下,早在 20 世纪 80 年代,联合测试行动组(joint testaction group,简称 j ta g) 起草了边界扫描测试( boundary2scan testing ,简 写 bst) 规 范,后 来 在1990 年被批准为 ieee 标准 1149. 121990 规定,简称jtag标准。该标准规定了进行边界扫描测试所需要的硬件和软件。自从1990 年批准后,ieee 分别于1993 年和1995 年对该标准作了补充,形成了现在使用的ieee1149.1a-1993 和ieee1149.1b-1994。jtag 主要应用于:电路的边界扫描测试和可编程芯片的在线系统编程。
边界扫描测试有两大优点 :一个是方便芯片的故障定位,迅速准确地测试两个芯片管脚的连接是否可靠,提高测试检验效率;另一个是,具有 jtag接口的芯片,内置一些预先定义好的功能模式,通过边界扫描通道来使芯片处于某个特定的功能模式,以提高系统控制的灵活性和方便系统设计。
现在,所有复杂的 ic 芯片几乎都具有jtag控制接口,jtag控制逻辑简单方便,易于实现。
边界扫描技术的应用
对于需要进行ic元件测试的设计人员来说,只要根据ta p控制器的状态机,设计特定的控制逻辑,就可以进行ic元件的边界扫描测试或利用jta g接口使ic元件处于某个特定的功能模式。
inter的pc i to pc i桥片21154,bga封装,共304个管脚,具有符合ieee 114911标准的jta g控制引脚。在设计的一个compactpc i系统中,需要利用jta g控制使其进入一种高阻模式(h ighz模式,这是ieee 114911推荐的任选模式之一)。在这种模式下。芯片的所有输出管脚都处于无效态即高阻态。要使21154进入h ighz,必须将位码00101写入指令寄存器,这时,边界测试数据寄存器选择的是旁通寄存器。
21154 的 jta g 控制步骤
21154正常工作时,tm s持续为高电平或trst=0。
控制21154进入jta g h ighz状态需要经过以下6个步骤:
(1)trst=1。
(2)进入sh ift ir状态:在连续5个tck(上升沿),使tm 3=01100,则进入sh ift_ir状态。
(3)将指令码写入指令寄存器:在sh ift_ir状态,通过td i将00101写入指令寄存器,需要5个时钟周期。
(4)进入ex it l ir状态:在sh ift_ir状态的第5个tck的上升沿(最后一个指令码),使tm s=1,则进入ex it l ir状态。
(5)进入u pdate ir状态:进入ex it l ir状态后,再使tm s=1,则进入u pdate ir状态。
(6)进入run testöidle状态:进入u pdate ir状态后,再使tm s=0,则进入run testöidle状态,此时,21154进入h ighz状态。
21154的jta g控制v erilog hdl代码
说明:beginjta g_1是控制21154进入h ighz的触发信号。低电平有效。
a lw ays
@ (beginjta g_ 1, clk)
begin
t rst 《 = ′0′
jtag_ stste《 = s0;
case (jtag_ stste)
s0:
if (beginjta g_ 1= ′0′)
begin
t rst《 = ′1′;
tm s《 = ′0′;
jtag_ stste《 = s1;
end
else begin
jtag_ stste《 = s0;
end
s1:
tm s《 = ′0′;
t id《 = ′0′;
jtag_ stste《 = s2;
s2:
tm s《 = ′1′;
t id《 = ′0′;
jtag_ stste《 = s3;
s3:
tm s《 = ′1′;
t id《 = ′0′;
jtag_ stste《 = s4;
s4:
tm s《 = ′0′;
t id《 = ′0′;
jtag_ stste《 = s5;
s5:
tm s《 = ′0′;
t id《 = ′0′;
jtag_ stste《 = s6;
s6:
tm s《 = ′0′;
t id《 = ′0′;
jtag_ stste《 = s7;
s7:
tm s《 = ′0′;
t id《 = ′0′;
jtag_ stste《 = s8;
s8:
tm s《 = ′0′;
t id《 = ′1′;
jtag_ stste《 = s9;
s9:
tm s《 = ′0′;
t id《 = ′0′;
jtag_ stste《 = s10;
s10:
tm s《 = ′1′;
t id《 = ′1′;
jtag_ stste《 = s11;
s11:
tm s《 = ′0′;
t id《 = ′0′;
jtag_ stste《 = s12;
s12:
tm s《 = ′0′;
t id《 = ′0′;
o thers:
end case
end
上述代码,经过编译、仿真,得到图7所示jta g控制时序波形。在设计的系统中,将上述v erilog hdl代码经过编译后生成目标文件,写入a ltera公司的可编程逻辑芯片epm 7128slc84_7(在此芯片内还有其他逻辑),当beginjta g_1=0时,实现了控制21154进入jta g高阻状态。
边界扫描九大指令
extest指令--强制指令
用于芯片外部测试,如互连测试
测试模式下的输出管脚,由bsc update锁存驱动(bsc注释:寄存器的每一个单元分配给ic芯片的相应引脚,每一个独立的单元称为bsc(boundary-scan cell)边界扫描单元。)
bsc scan锁存捕获的输入数据
移位操作,可以从tdi输入测试激励,并从tdo观察测试响应。
在移位操作后,新的测试激励存储到bsc的update锁存
原先extest指令时强制为全“0”的,在ieee 1149.1--2001中,这条强制取消了。选择extest指令时,ic工作在边界扫描外部测试模式(external boundary-test mode),也就是说对ic的操作影响芯片的正常工作。选择边界扫描寄存器连通tdi和tdo。在这种指令下,可以通过边界扫描输出单元来驱动测试信号至其他边界扫描芯片,以及通过边界扫描输入单元来从其他边界扫描芯片接收测试信号。extest指令是ieee 1149.1标准的核心所在,在边界扫描测试中的互连测试(interconnect test)就是基于这个指令的。
(该指令初始化外部电路测试,主要用于板级互连以及片外电路测试。extest指令在shift-dr状态时将扫描寄存器bsr寄存器连接到tdi与tdo之间。在capture-dr状态时,extest指令将输入管脚的状态在tck的上升沿装入bsr中。extest指令从不使用移入bsr中的输入锁存器中的数据,而是直接从管脚上捕获数据。在update-dr状态时,extest指令将锁存在并行输出寄存器单元中的数据在tck的下降沿驱动到对应的输出管脚上去。)
sample/preload指令--强制指令
在进入测试模式前对bsc进行预装载
输入输出管脚可正常操作
输入管脚数据和内核输出数据装载到bsc的scan锁存中。
移位操作,可以从tdi输入测试激励,并从tdo观察测试响应。
在移位操作后,新的测试激励存储到bsc的update锁存。
原先这两个指令是合在一起的,在ieee 1149.1--2001中这两个指令分开了,分成一个sample指令,一个preload指令。选择sample/preload指令时,ic工作在正常工作模式,也就是说对ic的操作不影响ic的正常工作。选择边界扫描寄存器连通tdi和tdo。 sample指令---通过数据扫描操作(data scan)来访问边界扫描寄存器,以及对进入和离开ic的数据进行采样。preload指令---在进入extest指令之前对边界扫描寄存器进行数据加载。
(在capture-dr状态下,sample/preload指令提供一个从管脚到片上系统逻辑的数据流快照,快照在tck上升沿提取。在update-dr状态时,sample/preload指令将bsr寄存器单元中的数据锁存到并行输出寄存器单元中,然后由extest指令将锁存在并行输出寄存器单元中的数据在tck的下降沿驱动到对应的输出管脚上去。)
bypass指令--强制指令
提供穿透芯片的最短通路。
输入输出管脚可正常操作
选择一位的旁路(bypass)寄存器
强制全为1和未定义的指令为bypass指令 bypass指令为全“1”。选择bypass指令时,ic工作在正常工作模式,选择一位的bypass寄存器连通tdi和tdo,数据的通过不影响ic的正常工作。
(bypass指令通过在tdi和tdo之间放置一个1位的旁通寄存器,这样移位操作时只经过1位的旁通寄存器而不是很多位(与管脚数量相当)的边界扫描寄存器bsr,从而使得对连接在同一jtag链上主cpu之外的其他芯片进行测试时提高效率。)
intest指令 ---可选指令
选择intest指令时,ic工作在边界扫描内部测试模式(internal boundary-test mode),选择边界扫描寄存器连通tdi和tdo。在这种指令下,可以通过边界扫描输出单元来驱动测试信号至其内部逻辑,以及通过边界扫描输入单元来从 其内部逻辑接受测试信号。
runbist指令 ---可选指令
选择runbist指令时,ic工作在自测试模式(self-test mode),对ic的内部逻辑进行全面的自测试,通过选择用户自定义的数据寄存器连通tdi和tdo。在这种指令下,边界扫描单元的输出被内部逻辑控制了,所以外部信号不能干扰其相邻ic。
idcode指令 ---可选指令
选择idcode指令时,ic工作在正常工作模式,选择数据识别寄存器(data identification register)连通tdi和tdo。数据识别寄存器是一个32位的寄存器,内容包括ic的生产厂商,芯片类型,版本等。访问数据识别寄存器不会影响 ic的正常工作。由于idcode指令是可选的,不是每个芯片都有的,所以当对一个边界扫描链(scan chain)执行idcode指令来输出所有idcode时,有idcode指令的芯片就选择idcode寄存器,输出输出idcode,没有 idcode指令的芯片会自动选择bypass寄存器,输出一个“0”。
(读取cpu id号指令。在设计中存在device identification register时,tap强制定义。该指令将处理器的id号寄存器连接到tdi和tdo之间。)
usercode指令 ---可选指令
选择usercode指令时,ic工作在正常工作模式,选择用户自定义数据寄存器(user defined test data register)连通tdi和tdo。usercode指令一般是在进行芯片内部测试时用的。
clamp指令 ---可选指令
clamp指令使ic的输出置于由边界扫描寄存器的当前内容决定的逻辑电平上,选择bypass寄存器连通 tdi和tdo。在加载这个指令之前,边界扫描寄存器的内容可以由sample/preload指令来预置。在clamp指令下,数据通过bypass寄 存器从tdi传递至tdo,不会影响此ic的输出。
highz指令 ---可选指令
highz指令使ic的所有输出置于高阻状态,选择bypass寄存器连通tdi和tdo。在highz指令下,数据通过bypass寄存器从tdi传递至tdo,不会影响此ic的输出。
什么是数字式传感器
DFRobot柔性非接触式液位传感器的介绍
2017年性价比最高4款手机,红米note4第一当之无愧
智能钥匙自动授权管理柜——使钥匙管理智能化
威刚一款移动式便携SSD将亮相CES2019 读写速度最高都能达到1GB/s
边界扫描测试应用与九大指令
可穿戴设备中的传感器分类与国内供应商一览
计算机原码、反码、补码的概念
两级交流放大电路如何增加频率范围
中兴天机Axon 10 Pro 5G版已在国内率先完成了三大运营商5G外场通信
智能语音助手在旅游行业的应用与挑战
如何搭建“实战化”的统一系统脆弱性管理平台
“5G+AI+类脑超算”体系解决方案实现可视化远程操作的功能应用
微软删除 MS Celeb 名人数据集,拨开数据隐私的迷雾
Flyback主电路中哪些元器件需要我们设计?电源用什么拓扑结构?
续流二极管在整流电路中的作用
【鸿蒙生态千帆起】HarmonyOS系统级地图与位置服务,赋能广大开发者
!租售/维修HP8920B综合测试仪HP 8920B小兵/孟
基于余辉和光释光的人体深部温度测量
农业气象环境综合监测站的功能及特点的介绍