具体描述
内容简介
《单板级JTAG测试技术》是一本系统论述单板级JTAG测试技术的专著。内容包括:基于IEEEl149.1标准的边界扫描测试、可测性设计和测试功能及串行测试矢量;内建自测试和仿真测试;基于IEEEl687标准的集成电路测试技术发展趋势。
《单板级JTAG测试技术》适合于从事集成电路开发的工程技术人员阅读,对于电子测量、通信工程和电路系统学科的学生,也有一定的参考作用。 作者简介
王承,1976生,江苏扬州人,博士。现任职于中兴通讯股份有限公司,主要从事单板级JTAG测试技术的研发、推广和生产应用工作。研究方向:集成电路测试、模式识别、人工智能和故障诊断等。
刘治国,1977生,湖南益阳人,硕士。现任职于工业和信息化部电子第五研究所,主要从事元器件检测和试验工作。研究方向:集成电路可靠性评价和电子元器件检测技术。 目录
第1章 测试的基本概念
1.1 数字电路测试
1.1.1 测试
1.1.2 测试分类
1.1.3 数字电路分类
1.2 故障及故障模型
1.3 算法
1.4 测试覆盖率和故障检出率
1.5 测试矢量
1.5.1 组合电路的测试矢量生成
1.5.2 时序电路的测试矢量生成
1.6 可测性
1.6.1 可控性
1.6.2 可观性
1.6.3 可测性设计方法
第2章 单板级.ITAG测试
2.1 背景介绍
2.2 传统单板测试方法的困难
2.2.1 在线测试
2.2.2 光学测试
2.2.3 功能测试
2.3 生产制造应用
2.4 JTAG测试技术
2.5 单板级JTAG测试
……
第3章 IEEE1149.X标准
第4章 单板级边界扫描可测性设计
第5章 边界扫描测试技术应用
第6章 串行矢量格式
第7章 内建自测试技术
第8章 片上仿真测试
第9章 嵌入测试
参考文献 精彩书摘
《单板级JTAG测试技术》:
9)Exit2-DR(第二次数据退出)
这是一个暂态过程。在该状态下,如果TMS为“1”,当TCK上升沿时,扫描过程结束,TAPC进人数据更新(Update-DR)状态;如果TMS为“0”,当TCK上升沿时,TAPC进入数据移位(Shift-DR)状态。
所有选定的测试数据寄存器,保持原先的状态不变。在该状态下,测试指令也不会变化。
10)Update-DR(数据更新)
一些测试数据寄存器带有锁存并行输出,针对特定测试指令响应(如EXTEST、INTEST、RUNBIST),当数据移入到相连的移位寄存器路径时,可防止在并行输出端的变化。当进入到数据更新(Update-DR)状态,在TCK下降沿,来自于移位寄存器路径的数据,被锁存到这些测试数据寄存器的并行输出端。除了数据更新(Update-DR)状态,即在状态机的其他状态时,锁存在并行输出端的数据应该一直保持不变,除非是执行了自测试操作(如:在测试/空闲态对于特定设计测试指令的响应)。
所有选定的测试数据寄存器,保持原先的状态不变。在该状态下,测试指令也不会变化。如果TMS为“1”,当TCK上升沿时,TAPC进入选择数据扫描寄存器(Select-DR-Scan)状态;如果TMS为“0”,当TCK上升沿时,TAPC进入测试/空闲(Run-Test/Idle)状态。
…… 前言/序言
《硬件调试的利器:JTAG接口深度解析与实践应用》 内容概要: 本书旨在为读者提供一套系统、深入的JTAG(Joint Test Action Group)接口技术理论与实践指南。本书内容聚焦于JTAG接口在嵌入式系统硬件调试、功能测试、固件烧录及故障诊断等方面的核心作用,并结合实际应用场景,详细阐述了JTAG接口的工作原理、电气特性、协议规范、常用命令集以及在不同硬件平台上的具体实现与应用技巧。读者通过本书的学习,将能够熟练掌握JTAG接口的基本操作,理解其在复杂硬件开发流程中的关键地位,并能够利用JTAG工具解决实际开发过程中遇到的各种硬件问题。 核心内容板块: 第一章:JTAG接口基础 1.1 什么是JTAG? JTAG接口的起源与发展历程:追溯JTAG标准的制定背景,理解其解决工业界硬件测试痛点的初衷。 JTAG接口的基本概念:详细介绍JTAG作为一个IEEE 1149.1标准,如何实现对电路板上多个器件的边界扫描。 JTAG接口在现代电子设计中的重要性:阐述JTAG不仅仅是测试工具,更是调试、固件更新和现场可编程(In-System Programming,ISP)的强大支持。 JTAG与其他调试接口的对比(如UART, SWD):分析JTAG在功能全面性、调试深度和设备支持方面的优势与局限。 1.2 JTAG接口的物理构成 JTAG接口的引脚定义与功能:深入剖析TCK, TMS, TDI, TDO, TRST(可选)这五个核心引脚的电气特性、信号时序和工作职责。 TCK (Test Clock): 详细解释时钟信号的作用,其频率对测试和调试速度的影响。 TMS (Test Mode Select): 讲解TMS信号如何控制JTAG状态机的转换,是JTAG操作的核心控制线。 TDI (Test Data In): 描述TDI作为数据输入的通道,如何将指令和测试数据输入到目标器件。 TDO (Test Data Out): 阐述TDO作为数据输出的通道,如何将器件的状态、测试结果或内存内容输出。 TRST (Test Reset, 可选): 讲解TRST信号的作用,以及在没有TRST信号时如何通过TMS/TCK实现JTAG接口的复位。 JTAG接口的常见连接器类型:介绍板载JTAG Header(如20-pin, 10-pin ARM JTAG, 14-pin JTAG等)的物理规格、间距和布局,以及不同连接器在实际应用中的选择。 JTAG接口的电气特性与注意事项:探讨JTAG信号的电压等级、驱动能力、容抗干扰能力,以及在设计PCB时需要注意的走线规则和信号完整性问题。 1.3 JTAG接口的工作原理:边界扫描链(Boundary Scan Chain) 边界扫描寄存器(BSR)的概念:解释BSR如何位于标准逻辑单元(如IO口、片内总线)与芯片引脚之间。 BSR的工作模式:详细介绍BSR如何捕获输入信号,如何控制输出信号,以及如何与内部逻辑进行数据交换。 串行测试访问端口(TAP):阐述TAP控制器如何响应TMS和TCK信号,管理BSR和其他测试数据寄存器(TDRs)的状态转换。 JTAG状态机(TAP Controller State Machine):详细解析TAP状态机的16个状态,理解TMS信号如何驱动状态机的转换,从而实现对不同测试操作的控制。 JTAG指令寄存器(IR)和数据寄存器(DR):介绍IR如何存储JTAG指令,DR如何存储与指令相关的数据。列举常见的JTAG指令(如EXTEST, SAMPLE/PRELOAD, BYPASS, IDCODE, INTEST等)及其功能。 IDCODE:深入讲解IDCODE的作用,如何通过读取IDCODE来识别器件制造商、器件类型和版本信息,以及其在器件自动识别和防伪检测中的应用。 第二章:JTAG调试器的选择与连接 2.1 JTAG调试器的类型与分类 硬件JTAG调试器:介绍市面上常见的商业及开源硬件JTAG调试器,如SEGGER J-Link, Lauterbach Trace32, ST-Link, J-Link OB, USB Blaster (Altera/Intel), Xilinx Platform Cable等。 USB转JTAG适配器:讲解基于FT232H, FT2232H等芯片的通用USB转JTAG适配器的原理与应用。 软件仿真器:在某些特定场景下,如何利用软件模拟JTAG接口进行调试。 ARM CoreSight Debug Access Port (DAP): 介绍ARM芯片上集成的DAP,以及JTAG和SWD协议如何映射到DAP。 2.2 选择合适的JTAG调试器 根据目标芯片/平台选择:分析不同调试器对特定CPU架构(ARM Cortex-M, Cortex-A, RISC-V, MIPS, x86等)和FPGA厂商(Xilinx, Altera/Intel, Lattice等)的支持程度。 根据调试需求选择:考虑目标应用是简单的固件烧录、实时代码调试、性能分析还是硬件故障诊断。 根据预算和可用性选择:分析商业调试器和开源方案的优缺点,以及在项目开发周期内的成本效益。 调试器接口与驱动:讲解如何安装和配置调试器的驱动程序,确保调试器能够被操作系统和调试软件正确识别。 2.3 JTAG接口的物理连接 标准JTAG接口连接:指导读者如何根据PCB上的JTAG Header,正确连接调试器到目标板。 非标准/自定义JTAG接口连接:在目标板没有标准JTAG Header的情况下,如何通过跳线或直接焊接连接JTAG信号线。 TRST信号的处理:详细说明TRST信号的重要性,以及在没有TRST信号时如何进行复位。 信号线长度与质量:强调JTAG信号线的长度、走线方式以及是否需要添加匹配电阻/电容对信号完整性的影响。 多器件JTAG链的连接:讲解如何在同一JTAG链上连接多个支持JTAG的器件,以及如何通过软件配置来选择目标器件。 第三章:JTAG命令与调试操作 3.1 JTAG命令集详解 IDCODE指令:如何读取目标器件的IDCODE,验证硬件连接的正确性。 BYPASS指令:解释BYPASS指令的作用,如何通过BYPASS模式快速遍历JTAG链。 EXTEST指令:详细讲解EXTEST指令如何使能边界扫描,对芯片外部IO进行测试,以及如何检测电路板上的连接错误(短路、断路)。 SAMPLE/PRELOAD指令:说明SAMPLE/PRELOAD指令如何捕获当前IO状态,以及如何预加载IO输出值。 INTEST指令(可选):介绍INTEST指令如何将测试信号输入到芯片内部逻辑,进行更深入的内部测试。 其他常用指令:介绍如SCAN_NSTRUCTION, SCAN_DATA, RUNBIST等指令的功能。 3.2 常用JTAG调试软件与工具 商业调试软件(如J-Flash, Lauterbach TRACE32 scripts, Keil MDK, IAR Embedded Workbench):介绍这些软件的安装、配置和基本操作界面。 开源调试软件(如OpenOCD, UrJTAG):讲解OpenOCD的配置文件(target configuration file)的编写,如何加载CPU和外设的描述文件。 命令行工具:介绍如何使用命令行工具(如jtagulator, scanchain)进行JTAG链的探测和基本操作。 示波器与逻辑分析仪在JTAG调试中的应用:说明如何利用这些工具来观察JTAG信号的时序,分析信号质量,排查通信问题。 3.3 固件烧录与更新 使用JTAG进行Bootloader烧录:讲解如何将Bootloader固件烧录到目标Flash存储器中。 直接通过JTAG烧录应用程序:演示如何直接将用户应用程序固件烧录到目标MCU/SoC的内存中。 支持的Flash存储器类型:介绍JTAG烧录器对NAND Flash, NOR Flash, eMMC, SD卡等不同存储介质的支持。 烧录过程中的注意事项:包括擦除、编程、校验等步骤,以及如何处理烧录失败的情况。 3.4 实时代码调试 断点设置与执行:如何在源代码层面设置断点,观察程序执行流程。 变量查看与修改:如何实时查看和修改变量的值,理解程序运行时的数据状态。 寄存器查看与修改:如何查看和修改CPU核心寄存器、外设寄存器以及内存内容。 内存查看与修改:如何直接查看和修改目标系统的内存区域。 单步执行与步入/步出:理解程序逐条指令执行的过程,以及函数调用栈的跟踪。 Watch窗口与表达式求值:如何配置Watch窗口来持续观察关键变量,并对表达式进行求值。 调用堆栈(Call Stack)分析:理解程序执行的函数调用路径。 第四章:JTAG在硬件测试与故障诊断中的应用 4.1 电路板级测试(Boundary Scan Test) 使用EXTEST指令进行IO端口测试:讲解如何通过JTAG控制芯片的IO口输出特定电平,验证外部连接。 检测短路与断路:展示如何利用JTAG边界扫描技术,快速定位电路板上元器件之间的短路或开路故障。 测试连接性:验证PCB走线是否正确连接了预期的器件引脚。 自动化测试流程:介绍如何编写JTAG测试脚本,实现电路板的自动化功能测试。 与其他测试方法(如ICT)的结合:分析JTAG测试在ICT(In-Circuit Test)中的补充作用。 4.2 故障定位与根源分析 利用JTAG读取错误状态寄存器:讲解如何通过JTAG访问芯片内部的错误标志,辅助诊断问题。 内存访问与分析:通过JTAG读取关键内存区域的内容,分析程序崩溃或异常行为的原因。 调试总线访问(如ARM CoreSight ETM/ETB):在支持的情况下,利用JTAG配合追踪单元,实现指令流或数据流的追踪,深入分析系统运行行为。 利用JTAG进行硬件复位与电源监控:在某些调试器上,可以利用JTAG接口实现目标板的硬件复位,或间接监控电源状态。 4.3 FPGA开发中的JTAG应用 FPGA配置文件的烧录:介绍如何通过JTAG接口将Verilog/VHDL编译生成的比特流文件烧录到FPGA内部。 FPGA内部逻辑调试:讲解如何使用ChipScope (Xilinx) 或 SignalTap (Altera/Intel) 等工具,通过JTAG接口将FPGA内部的信号导出到ILA/Logic Analyzer中进行实时观测。 FPGA的在线配置与调试:演示如何在FPGA系统运行过程中,通过JTAG进行在线调试和配置修改。 第五章:JTAG技术的进阶应用与发展趋势 5.1 JTAG与SWD(Serial Wire Debug)的比较与互用 SWD协议的优势(线少、速度快):分析SWD相较于JTAG在引脚占用和传输效率上的优势。 SWD接口的物理连接:介绍SWD的SWDIO和SWCLK两个信号线。 调试器对SWD的支持:讲解市面上主流调试器如何同时支持JTAG和SWD。 在ARM Cortex-M系列中的广泛应用。 5.2 JTAG在SoC(System-on-Chip)设计中的复杂应用 多核CPU系统的JTAG调试:讲解如何管理和调试由多个CPU核心组成的SoC系统。 片上总线(如AXI, AHB)的调试:如何通过JTAG接口访问片上总线的调试模块,实现对总线事务的监控和分析。 IP核的集成与调试:如何在复杂的SoC设计中,对各个IP核进行独立的JTAG调试。 5.3 JTAG的自动化与脚本化 编写JTAG自动化脚本:深入讲解如何使用Python, Tcl等脚本语言,结合OpenOCD等工具,实现JTAG操作的自动化,提高测试效率。 CI/CD流程中的JTAG集成:探讨如何将JTAG测试集成到持续集成/持续部署流程中,实现硬件设计的自动化验证。 5.4 JTAG技术的新发展与未来展望 JTAG在物联网(IoT)设备中的应用:探讨JTAG在小型化、低功耗IoT设备中的调试挑战与解决方案。 JTAG在安全领域的应用:例如固件防篡改、安全芯片的调试等。 JTAG与高性能调试技术(如TRACING):分析JTAG在支持高性能追踪技术方面的重要性。 适用人群: 嵌入式系统工程师 硬件工程师 FPGA设计工程师 测试工程师 电子技术爱好者 高等院校电子工程、计算机科学相关专业的学生 学习本书的收获: 通过系统学习本书,读者将能够: 深刻理解JTAG接口的工作原理和核心技术。 熟练掌握不同JTAG调试器的连接与配置。 掌握使用JTAG进行固件烧录、实时代码调试、硬件测试和故障诊断的各种实用技巧。 具备独立分析和解决嵌入式硬件开发过程中遇到的JTAG相关问题的能力。 为深入理解更高级的硬件调试和测试技术打下坚实基础。 本书内容力求深入浅出,理论结合实践,辅以大量的案例分析和操作指导,旨在帮助读者真正掌握JTAG这一强大而不可或缺的硬件调试利器。