颜学龙+尹亮亮+陈寿宏
摘 要: 为解决复杂芯片的测试与调试问题,提出支持IEEE 1149.7标准的边界扫描控制器。在对IEEE 1149.7标准和边界扫描测试技术进行深入研究的基础上,利用上位机进行软件编程,通过Quartus Ⅱ平台进行IP核的开发,成功设计出了支持IEEE 1149.7标准的边界扫描测试控制器。实验结果表明,控制器能够产生符合IEEE 1149.7标准的两线星型信号和四线输出信号。
关键词: IEEE 1149.7标准; USB总线; MScan扫描格式; 边界扫描控制器
中图分类号: TN820.2?34; TN407 文献标识码: A 文章编号: 1004?373X(2017)04?0147?04
Design and research on boundary scan controller according with IEEE Std 1149.7
YAN Xuelong1,2, YIN Liangliang1,2, CHEN Shouhong1,2
(1. School of Electronic Engineering and Automation, Guilin University of Electronic Technology, Guilin 541004, China;
2. Guangxi Key Laboratory of Automatic Detecting Technology and Instruments, Guilin 541004, China)
Abstract: Aiming at the test and debugging problems of complex chips, a boundary scan controller according with IEEE Std 1149.7 is proposed. On the basis of deeply studying the IEEE Std 1149.7 and boundary scan test technology, the upper computer is used to perform the software programming and the IP core is developed by means of the Quartus Ⅱ platform to design the boundary scan test controller according with IEEE Std 1149.7. The experimental results show this controller can generate the two?line star signal and four?line output signal according with IEEE Std 1149.7.
Keywords: IEEE Std 1149.7; USB bus; MScan scanning format; boundary scan controller
0 引 言
IEEE 1149.1标准自20世纪80年代提出以来,在集成电路的测试和故障诊断中发挥了重要的作用,但是,随着芯片一体化的加剧,传统的测试方法已经不能很好地满足现阶段对测试与调试的多方面要求。在此种情况下,可测试性总线标准委员会于2009年一致表决通过了IEEE 1149.7标准,该标准兼容IEEE 1149.1所规定的所有功能,同时增加了新的功能,提供了一种全新的双引脚测试与调试方法[1?2]。
在对IEEE 1149.7标准研究的基础上,文献[2]对所设计的控制器的IP核只进行了功能仿真,没进行时序仿真及下载到实际FPGA芯片中,文献[3]和文献[4]主要实現了IEEE 1149.7标准两线星型扫描的功能层级仿真,而且没进行实际电路的验证及上位机软件研究。
目前,符合IEEE 1149.7标准的测试控制器大部分还只停留在仿真层级,没考虑实际电路中的信号延时问题。所以本文所设计的基于实际电路板的边界扫描控制器,在技术上有了很大的进步,对其进一步发展具有非常重要的实际意义。
1 ZBS和MScan扫描格式
1.1 ZBS
所谓ZBS(Zero?Bit Scan),是指TAP(Test Access Port)控制器的一个DR(Data Register)扫描的状态序列从Select?DR状态开始,到Updata?DR状态结束,中间不经过Shift?DR状态。一次完整的ZBS的产生有两条路径,第一种是从Select?DR状态开始,然后经过Capture?DR,Exit1?DR状态,最后到达Update?DR状态;另一种是从Select?DR状态开始,然后经过Capture?DR,Exit1?DR,一个或多个Pause?DR,Exit2?DR,最后到达Update?DR状态。在状态转换的时候一旦经过Shift?DR状态,控制等级即被锁定,当控制等级锁定在2时,表示TAP.7控制器命令。
图1表示的是TAP控制器的16状态机,所有的状态转换都发生在TCK(Test Clock)的上升沿,箭头上的0和1代表的是在TCK的上升沿采样到的TMS(Test Mode Select)的低电平和高电平。在所有的16个状态中,有6个稳定的状态,它们分别是Test?Logic?Reset,Run?Test/Idle,Shift?DR,Capture?DR,Shift?IR和Capture?IR。
1.2 MScan扫描格式
MScan扫描格式是惟一一个同时支持直接分配TAP控制器地址和间接分配TAP控制器地址的扫描格式[3]。MScan扫描格式由延迟单元和扫描数据包组成,所产生的载荷单元有至少6个TCKC(Test Clock)信号周期,对于每个TAPC(Test Access Port Controller)状态,输入/输出信息流包含同样的信息。
图2中,MScan扫描格式的SP(Scan Packet)包包含6位信息,nTDI和TMS表示的是控制器向被测目标发送的信息,PC0,RDY,PC1,TDO(Test Data Output)四位表示的是控制器从被测目标读回的数据信息。
2 控制器的设计
2.1 硬件设计
2.1.1 控制器的总体设计
边界扫描控制器通过USB 2.0接口和上位机进行通信,通过上位机程序调用数据库里预先设定好的测试指令和数据发送给控制器,控制器产生符合IEEE 1149.7标准协议的波形信号发送给被测系统,同时从读取被测系统的测试响应插入至数据库,方便系统进行故障诊断。总体设计框图如图3所示。
2.1.2 1149.1边界扫描控制器单元
1149.1边界扫描控制器单元由Cypress公司的USB转换芯片CY7C68013A?128AC和JTAG主控芯片ACT8990构建而成。USB转换芯片进行USB协议数据的转换,实现上位机和边界扫描控制器的通信,将上位机发送的数据转换成JTAG主控芯片能够识别的信号,通过ACT8990进行操作之后发送给FPGA模块,从而产生符合IEEE 1149.7标准的测试信号。
USB转换芯片在向下发送测试数据和测试指令的同时,将从被测系统返回的测试响应传输给上位机,方便系统进行后续的故障诊断[5]。因此,它对整个测试系统的构建起着举足轻重的作用。
2.1.3 FPGA模块
由图3可知,FPGA模块通过TDO信号线接收IEEE 1149.1边界扫描控制器发送过来的数据,对自身的各个寄存器进行配置,产生符合IEEE 1149.7标准的测试信号。当为两线星型扫描时,通过TCKC(Test Clock),TMSC(Test Mode Select)两个信号线将数据发送给被测系统,返回的测试响应也打包在TMSC上传输给上位机;当为四线输出测试时,通过TDOC(Test Data Output)向被测系统发送数据,TDIC(Test Data Input)接收被测系统返回的测试响应,TCKC和TMSC相互配合完成状态的转换。发送和接收过程中所有的状态转换均要符合图1所示的TAP控制器状态机的转换机制。
FPGA模块的开发是在Quartus Ⅱ应用平台上,基于Verilog语言进行IP核的设计,采用自顶向下的设计方法[4,6]。通过顶层模块调用ZBS,MScan,Command等各个功能模块,依次进行ZBS循环锁定控制级别命令的发送、测试数据的发送。
2.2 软件设计
2.2.1 设备驱动程序
设备驱动程序是上位机和边界扫描控制器部分进行通信的桥梁,上位机只有通过这个硬件接口才能控制设备进行相应的工作,其在整个系统中占据十分重要的地位。本系统驱动程序以WDM(Windows Driver Model)为基础,采用软件开发包DDK(Device Driver Kits)进行开发,DDK为驱动程序的开发提供了所需的资源文件、开发技术文档、编译连接程序等[7]。设备的驱动程序主要包含INF文件(Device information File),固件下载驱动。
其中,INF文件是一种纯文本文件,有自己的编写规则,每一个INF文件都是按照这些规则进行编写的。它是对设备信息的描述文件,其中包含了设备的描述信息或脚本信息,用于控制设备驱动的安装,当USB设备连接到上位机,系统会搜索所有INF文件中的信息,并与上位机获取到的USB设备的接口信息或设备信息做对比,从而找到与该USB设备匹配的INF文件,继而根据INF文件中的安装信息,正确安装设备的驱动程序。
固件下载驱动的作用是下载固件程序到USB控制芯片CY7C68013的內部RAM(Random?Access Memory)中。本系统所用到的固件下载驱动是bulkloader.sys,其生成过程是转换用户的固件程序为C文件,然后用DDK软件开发包编译产生。当边界扫描控制器和上位机连接之后,上位机获得INF文件中的安装信息,加载固件下载驱动。
2.2.2 固件程序
固件程序是写入EROM(Erasable Read Only Memory)或E2PROM(Electrically Erasable Programmable Read?Only Memory)中的程序,它是系统工作的底层软件,决定着硬件设备的质量和性能。CY7C68013固件程序的编写基于Cypress提供的固件框架,其主要包含fw.c和bulkloop.c两个文件。bulkloop.c文件是固件程序的核心部分,其主要包括外围设备操作函数,在此文件中添加相应代码来实现外围设备功能。本系统中,固件程序主要实现的功能是将上位机发送过来的数据进行解析然后发送给JTAG控制器ACT8990相应的寄存器,同时从ACT8990的缓冲区中读取测试响应。
2.2.3 上位机应用程序
上位机应用程序基于VC++ 6.0进行设计开发,负责从数据库提取测试数据发送给边界扫描控制器,同时接收返回来的响应插入数据库。软件流程图见图4。
应用程序主要包括对ACT8990的配置,测试数据的处理,数据的发送和接收,以及对响应的处理等模块,其中,主要通过设备控制函数DeviceIoControl()完成数据的发送和接收。
3 边界扫描控制器验证
边界扫描控制器经USB 2.0接口和上位机进行通信,通过上位机程序调用数据库里预先设定好的数据发送给控制器,控制器根据接收到的指令和数据进行相应的操作,产生符合IEEE 1149.7标准的测试信号,发送给被测系统。同时经USB?Blaster传输线通过Quartus Ⅱ软件里的SignalTap Ⅱ Logic Analyzer采样控制器所产生的信号输出至上位机显示,进行分析验证。
3.1 两线星型信号分析验证
两线星型扫描部分,以MScan扫描格式为例,上位机按照从低位到高位先后发送预先设定好的测试数据,数据的十六进制格式内容如下:00 00 00 00 00 00 24 02 00 00 06 00 00 00 00 00 00 00 23 10 00 00 00 00 00 00 1A 02。控制器根据上位机所发送的配置指令数据,首先进行ZBS状态循环,进行两次ZBS状态循环锁定控制级别为2,然后发送STFMT(Store Format)命令,选择MScan扫描格式,在前者发送的指令的基础上,发送CP(Check Packet)包,最后进行SP包数据的发送和接收。
如图5所示,在T0时刻控制器处于Run?Test/Idle状态,之后在TCKC的上升沿依次采集到TMSC的值为“1010111”,根据状态转换图,状态经过Select?DR,Capture?DR,Exit1?DR,Pause?DR,Exit2?DR,Update?DR,完成一次ZBS循环,最后回到Select?DR状态,状态继续循环,在T1时刻完成两次ZBS循环,T2时刻经过Shift?DR状态,从而将控制等级锁定在等级2,T3时刻开始发送STFMT命令,其中CP1包的内容是00011,就是在Shift?DR状态循环3次,CP2包的内容是10000,在Shift?DR状态循环16次,最后,CP检查包的内容是0000,代表标准协议到高级协议的转换结束,即在T4时刻选定MScan扫描格式,T5时刻开始进行两线传输(即通过TCKC和TMSC进行传输),其中MScan扫描格式的SP包包含nTDI,TMS,PC0,RDY,PC1,TDO六个位的信息,如图5所示。
3.2 四线输出信号分析验证
上位机从低位到高位先后发送十六进制格式的数据:00 00 00 00 00 00 00 00 1E FF 1E DF 1E B0 1E 92 1E 77 1E 5B 1E 33 1E 1A 00 00 00 00 00 00 00 00 2A 02 00 00 00 00 00 00 00 00 1A 02;通过SignalTap Ⅱ Logic Analyzer所采样的时序信号中,ZBS指令部分和MScan两线扫描部分相同,首先进行ZBS状态循环,两次ZBS循环后,状态经过Shift?DR,随即锁定控制级别为2;基于ZBS指令产生的控制级别2的基础上,紧接着控制器开始向被測系统发送CIDA(Controller ID Allocate)指令;执行完CIDA中的CP1和CP2后,控制器开始执行CP3的操作,共发送35位的CP3。
如图6所示,根据TCKC和TMSC的时序关系可知,首先进行ZBS循环,在完成两次ZBS循环之后,在T1时刻锁定控制等级为2,T2时刻开始发送CIDA命令。其中CIDA指令是一个三部分命令,它的作用是给每一个T3层及T3层以上的TAP.7控制器分配一个惟一的识别号,这个识别号只能被单独访问,CIDA指令选择列举的扫描路径。T3时刻开始发送CIDA命令的CP3。
4 结 语
所设计的边界扫描控制器能够成功的根据上位机发送的配置数据产生符合IEEE 1149.7标准的测试信号,既能完成两线星型扫描格式信号的产生,也能产生四线输出的测试信号,对于进一步研究IEEE 1149.7 标准的测试系统具有非常重要的意义。
参考文献
[1] IEEE. IEEE Standard for reduced?pin and enhanced?functionality test access port and boundary?scan architecture: IEEE Std 1149.7?2009 [S]. America: IEEE, 2009.
[2] 陈寿宏,颜学龙,黄新.基于IEEE 1149.7标准的CJTAG测试设计方法研究[J].测控技术与仪器仪表,2013,39(1):79?82.
[3] 杨轲,颜学龙.IEEE 1149.7标准两线星型扫描格式研究[J].微电子学与计算机,2015(10):147?150.
[4] 建珍珍,颜学龙.两线星型扫描测试控制器设计[J].大众科技,2012(3):63?66.
[5] 耿建平,陈林艳,尚玉玲.USB?1149.1边界扫描控制器的设计与实现[J].计算机测量与控制,2014(3):919?922.
[6] 高艳辉.基于FPGA的边界扫描控制器的设计[D].镇江:江苏大学,2010.
[7] 蒙智敏,陈晓敏.基于USB 2.0的边界扫描控制器的设计[J].电子技术,2011,38(5):29?31.
[8] 陈光?,潘中良.可测性设计技术[M].北京:电子工业出版社,1997.
[9] 史江义.基于IP核的SoC设计关键技术研究[D].西安:西安电子科技大学,2007.
[10] 徐志磊,郭筝.基于IEEE 1149.7的新一代测试界接口实现与应用[J].信息技术,2010(8):164?166.