JTAG调试系统的设计
2021-11-01
来源:飒榕旅游知识分享网
维普资讯 http://www.cqvip.com 科技信息 。机械与电子o SCIENCE&TECHNOLOGY INFORMATION 2007年第25期 JTAG调试系统的设计 叶 涛 (湖北省水文水资源局勘测通讯处) 摘要:本文简介了JTAG协议标准.讨论采用软硬件设计JTAG调试系统的一种方法,最后实现了该设计。该设计已经应用于一个语音识 剐SoC。 关键词:JTAG:SoC;TAP;CRC;边界扫描 JTAG标准规定的控制指令用于控制JTAG接口进行各种操作. 1.引言 EXTEST、 随着集成电路的发展.芯片的复杂度越来越高,引脚数目越来越 控制指令包括基本指令和扩展指令,这些基本指令有:PRELOAD、BYPASS、IDCODE和HIGHZ等.芯片厂 多,传统的通过探针施加测试信号测试芯片的方法越来越不适用了。 INTEST、SAMPLE/JTAG(Joint Test Action Group)最初就是针对复杂芯片测试提出的一 商可以根据实际需要选择或添加扩展指令。盯AG标准还规定了指令 种方式。根据JTAG协议,在内部逻辑和外部引脚之间添加边界扫描 寄存器和数据寄存器等寄存器。指令寄存器是基于电路的移位寄存 通过它可以串行输入执行各种操作的指令。数据寄存器是个移位 寄存器。来替代外部引脚作为内部逻辑的输入/输出,就可以检查芯片 器.逻辑的实现正确与否,就是所谓的内测试;如果让边界扫描寄存器替 寄存器。操作指令被串行装入由当前指令所选择的数据寄存器。随着 测试结果数据从TDO移位输出。 代内部逻辑作为外部引脚的输入/输出,来检查外部引脚连接的可靠 操作的执行。性.这就是所谓的外测试。无论是管脚和电路板的连接还是内部逻辑 的测试都可以通过JTAG实现。 JTAG的优点在于将复杂的电路板测试转变为具有良好结构的可 通过软件灵活处理的测试。早期JTAG仅仅用于芯片的测试,后来芯 片设计者扩展了JTAG的功能。除了基本的测试功能外,还可以对芯片 进行程序的调试仿真、烧写FLASH芯片和其它一些自定义功能等等。 如Altera和Xilinx等可编程器件生产厂商对标准进行了扩充,使用扩 展的专用指令对其可编程器件进行下载和配置【11。现在很多嵌入式微 处理器配置了JTAG接口,可以说。具有JTAG接口是现代嵌入式微处 理器的一大特点。 系统级芯片一般是由MCU内核和各IP模块集成在一起,在进行 芯片的软硬件调试时,需要提供对MCU内核寄存器及各IP模块的访 问和控制的机制,用来实现设置断点和观察点、读写MCU内核寄存 器、下载程序和烧写FLASH等调试功能。本文设计的JTAG调试系统 采用了模块化的设计方法。易于移植到一个新的MCU或SoC上,实现 了上述的调试功能。 2-JTAG接口概况 IEEE1149、1是JTAG协议的标准。它规定了一套芯片测试接口的 规范,使得不同厂家的芯片用到同一个系统中时,都能使用统一的测 试信号接口。JTAG利用串行数据进行命令和数据的处理,数据首先进 入的是测试访问口fTest Access Port),它主要包括四个引脚:TMs、 TCK、TDI和TDO及一个可选择的引脚TRST。用于驱动电路和执行规 定的操作。各引脚的功能如下: 图1 JTAG TAP控制器状态图 3.JTAG的实现 3.1整体设计 本设计目的是实现一个JTAG调试系统。用来对 (1)TCK:JTAG测试时钟。为TAP控制器和寄存器提供时钟。在 RISC MCU软核进行程序的调试和仿真。在硬件上设置了调试扫描链 TCK的同步作用下通过TDI和TDO引脚串行移入或移出数据及指 和总线扫描链两条扫描链,利用TAP状态机控制扫描。调试扫描链连 令。 接到RISC MCU提供的调试接口 可以实现单步调试、设置断点和读 (2)TMS:TAP控制器的模式选择输入信号。TCK的j二升沿时刻 写MCU内部寄存器等调试功能。总线扫描链连接到RISC MCU内部 TMS的状态确定TAP控制器既将进入的工作状态。 的片上总线,实现_-一个总线控制器,可以直接访问RISC MCU内部的 (3)TDI:JTAG指令和数据寄存器的串行数据输入端。在TCK的上 片上总线,从而控制已经连接到片上总线的从设备,如GPIO,UART。 升沿时刻.TDI引脚状态被采样送到某个寄存器中。 SRAM,FI ASH等等。所以,利用总线扫描链可以完成读写SRAM和烧 (4)TDO:JTAG指令和数据寄存器的串行数据输出端。对于任何已 写FLASH,方便程序下载和调试等功能。 知的操作,在TDI和TDO之间只能有一个寄存器(指令或数据)处于有 JTAG的边界扫描实现内测试和外测试的功能。JTAG的内测试是 效连接状态。TDO在TCK的下降沿改变状态,并且只在数据通过器件 用边界扫描寄存器替代外部引脚作为内部逻辑的输入/输出,来检查 移动过程中有效。该引脚在其它时间处于三态状态 芯片逻辑的实现正确与否。同样,JTAG的外测试是用边界扫描寄存器 (5)TRST: ̄4试复位输入信号,低电平有效,为TAP控制器提供复 替代内部逻辑作为外部引脚的输入/输出,来检查外部引脚连接的可靠 位和初始化信号 性。RISC MCU的大部分引脚是挂在总线上的IP功能模块的引脚,所 TAP控制器是一个16状态的有限状态机,控制进入JTAG结构 以JrI’AG可以通过总线扫描链来控制这些总线上的IP模块.来访问这 中各种寄存器的数据的扫描与操作。 rAP状态转移图如图1所示【2】, 些引脚,从而可以检查芯片管脚与电路板是否正确连接,和对内部逻 由TCK同步时钟上升沿时刻TMS引脚的逻辑电平决定状态转移的过 辑进行测试,实现上述边界扫描链的作用。所以,本JTAG调试系统用 程。对于由TDI端输入到器件的扫描信号共有两个状态变化路径:一 总线扫描链可实现类似边界扫描的功能,而没有实现边界扫描链,这 个用于移人指令到指令寄存器;另一个用于移人数据到有效的数据寄 样可简化设计,减少芯片面积。在该JTAG调试系统的基础上.加上边 存器。TAP控制器根据状态的变化来进行数据处理。这些处理包括给 界扫描寄存器等一些逻辑就可以实现边界扫描的功能。 引脚施加激励信号、捕获输入的数据、装载指令和边界扫描寄存器中 本文的JTAG调试系统的设计框图由主机软件和目标硬件两部 数据的移人或移出。图1表示了TAP状态机的基本流程.描述了从一 分组成,如图2所示,下面分别描述之。 个状态到另一个状态TMS信号的变化。 75 维普资讯 http://www.cqvip.com 科技信息 0机械与电子0 SCIENCE&TECHNOLOGY INFORMATION 2007年第25期 丑DST∞ l抛 3-3软件设计PC主机程序使用标准c语言实现,来处理发送和 接收的JTAG数据,程序底层利用了并口驱动程序提供的outb0和inb 0两个并口操作函数f4】,来模拟JTAG时序,按照实际JTAG硬件设置 情况,形成如下几个重要的高层函数调用,产生JTAG控制的时序。 itag_set_chain(int chain):J ̄择调试或总线控制扫描链 jtag_read reg(int regno):用jtag读RISC MCU的寄存器或ROM/ RAM的内容 jtag_write—reg(int regno,int data):用j【ag写RISC MCU寄存器或 ROM/RAM的内容 利用这些函数,可以方便地进行RISC MCU程序的调试和按照 lfash编程时序烧写nash等功能。 程序启动时先用JTAG的IDCODE命令检查电缆是否连接正确. 图2 JTAG调试系统框图 当程序能把JTAG硬件的识别码正确读出来时,表明电缆连接正确,否 则没有连接好。软件上也要实现CRC校验来配合硬件上的CRC校 3.2硬件设计本设计用Ahera的APEX2OK200E做实际硬件的 验。程序发送数据的时候要加上CRC的校验位,硬件接收到数据后计 仿真,用ByteBlasterMV下载线作为该JTAG调试系统的下载线.连接 算其CRC校验值,如果计算所得值与接收到的CRC校验值相同,则 t为1,否则置0,程序检查 Pc主机和目标板上的芯片。由于ByteBlasterMV下载线没有使用 表明硬件接收数据正确,然后置某一特点bit为0,则自动重发数据。同样,接收数据也要计算 JTAG协议的TRST可选信号,而本设计使用了这个TRST信号。所以 该b 如果发现该bi 需要在ByteBlasterMV下载线的电路上进行跳线来添加这个信号,这 接收数据CRC校验位来判断数据是否接收正确。样充分利用Altera的ByteBlasterMV下载线,不用重新设计下载线。 TAP控制器和各条扫描链是采用Verilog硬件描述语言描述的, 实现了JTAG协议规定的一些指令和寄存器。如图1,TAP控制器有 16个状态,状态的转换由TCK和TMS信号触发,可以方便地用 Verilog描述的状态机实现f31。设计过程中使用Synplify进行综合,用 QuartuslI进行编译和下载。 考虑到PC主机并口到芯片的数据通信的可靠性,采用了CRC校 验。图3为总线扫描链上的数据格式,数据输入输出都为74位宽。数 据输入时,Data为总线数据,R/W为总线读写信号,Address为总线地 址.最后8位CRC1为输入数据的CRC校验位。数据输出时,前32位 置零,Data为输出数据,CRC2为输出数据的CRC校验位。 4.结语 整个JTAG硬件部分使用了APEX20K200E约500个LEs。仿真 的流程是先对FPGA进行下载编程,再用PC主机的JTAG程序对硬 件进行控制。仿真结果表明,该JTAG调试系统产生的信号满足JTAG 协议的时序要求。本JTAG调试系统已应用于一个语音识别SoC的设 计平台,为芯片提供一个简单、廉价的调试接口,实现对芯片内部寄存 器和外部存储器进行读写操作。并且可对该调试系统添加新的扫描 链,从而进行功能的扩展,如添加一个存储器来记忆和跟踪程序的执 行,该存储器可以用硬件的内部RAM来实现,但需要一定的硬件代 价。该JTAG调试系统可以方便地移植到别的MCU或SoC上,有利于 IP复用,具有较大的使用价值。‘ 参考文献 f 1 1Altera data sheet.Altera company.2003. [2]IEEE Standard Test Access Port and Boundary—Scan Architecture Is1. IEEE std 1 149.1—199 IEEE Computer Society,IEEE New York。1990. TDI [3]王金明、杨吉斌,数字系统设计与VerilogHDL,电子工业出版社, 数据输入格式 20o2. [4]Art Baker Jerry Lozano,施诺等译,Windows 2000设备驱动程序设计 指南,机械工业出版社,2001—9一1. TDI TD10 敷据输出格式 图3总线扫描链数据格式 《上接第32页)进教师发展,以教师为核心,以发展教师个体为理念的 展。所以正确处理教师个人发展和学校发展的关系是发展性教师评价 至关重要的因素。一方面学校要引导教师理解个人发展与学校组织发 教师评价.这种认识是偏颇的。 首先,这种说法模糊了教师作为个体的“人”和作为教师职业的社 会角色之间的区别。教师不仅是一个“个体”,而且是人类文明的传递 者和创造者、学校教育工作的承担者和学生发展促进者。发展性教师 评价当然要关注教师个体发展,但是这不能作为教师评价的目的。过 分强调教师的个体发展,会使评价标准模糊,从而使对教师非专业化 的评价在教师评价中所占的比重越来越大,教师非专业评价的大量存 在削弱了教师专业化与其他专业工作相比的优势,在一定程度上降低 教师专业工作的技术含量。 其次,这种认识容易使学校管理尤其是教师评价陷入想作为却不 能作为的两难境地。片面强调教师评价以教师个体发展为目的,而忽 视教师的社会角色和责任.只能导致评价者不敢作为,从而助长教师 的自由主义倾向,不利于学校健康发展。发展性教师评价的目的应该 是促进教师专业素质发展,并通过教师的发展来最终实现学校的发 展的内在联系.促进教师主动把个人发展与学校发展紧密结合起来; 另一方面要求学校首先制定学校的发展规划,并在发展规划中明确提 出对教师专业发展的要求,以此促进和带动教师发展,并为教师个人 发展提供依据 在学校开展发展性教师评价过程中,特别要重视教师 的参与。让教师参与和讨论和研制学校发展规划,有利于教师更好地 理解和接受学校对专业发展的要求,从而在学校中建立起领导和教师 的共同利益意识,实现学校发展和教师个人发展的互动统一。 发展性教师评价注重教师内在的素质提升和发展,是教师专业发 展的指向标,实施以促进教师专业发展和提高教育教学质量为目的的 发展性教师评价己成为世界各国教师评价改革的重要趋势。因此,在 学校管理中要进一步探索发展性教师评价的方法,达到教师自身发展 与学校发展目标的一致,从而达到双赢的目标。l 76