梁晓芬
(国营芜湖机械厂,安徽 芜湖 241007)
随着技术的发展,新装备中大规模集成电路的应用越来越广泛,大批以CPU、CPLD、DSP、FPGA 等作为核心器件的电路单元的使用,使电路网络拓扑复杂、元器件引脚密集。采用传统的设备测试方法已经难以满足测试需求。另一方面,边界扫描测试(JTAG 测试)的功能逐渐强大和完善,从而在更多的领域得到越来越广泛地应用,并已成为国际上通用的电路板测试方法。
本文对边界扫描控制器及软件、被测板进行了简单介绍,以被测板(UUT)为例简要介绍了其测试方案和测试方法。
本项目中选择美国ASSET 公司的ScanWorks 边界扫描控制器。该控制器完全支持相关IEEE 标准,功能强大,在电子测试领域内应用非常广泛。
ScanWorks 测试系统包括软件和硬件两部分。软件图片如图1 所示。
图1 ScanWorks 边界扫描测试环境
1.1.1 边界扫描控制器硬件功能
边界扫描控制器硬件将程序中的测试数据串(脉冲序列代码)转换成实际的脉冲序列,输出给待测电路板,并且接收测试数据回到测试系统中,从而实施测试。
ScanWorks 测试系统硬件基本包括:
(1)1 台PC,Windows XP、2000 or NT 的操作系统;
(2)卡式JTAG 控制器(PCI-400 PCI card);
(3)接口适配盒;
(4)电缆。
1.1.2 边界扫描控制器软件功能
ScanWorks 测试系统软件主要实现2 个功能:
(1)根据网络表和JTAG 芯片的BSDL 文件,产生包含所需要的测试数据串(脉冲序列代码)的测试程序;
(2)生成存储器和可编程器件在线烧录数据。
ScanWorks 测试系统软件基本功能包括:
(1)生成测试系统覆盖率报告;
(2)测试错误的分析诊断(管脚级)及图形显示;
(3)程序调试;
(4)执行存储器测试;
(5)可编程器件程序烧录。
1.1.3 边界扫描控制器及软件开发流程
ScanWorks 测试系统软件开发电路板测试诊断TPS 的流程如下:
(1)输入电路板网表;
(2)输入相关边界扫描器件的BSDL 文件;
(3)设置扫描链;
(4)生成链路测试序列;
(5)生成互联测试序列;
(6)生成存储器、Flash 等器件的测试序列;
(7)测试执行并生成测试报表。
被测电路板(以下简称UUT 模块)主要进行链路通信协议管理、ID 地址匹配、信息分类、流量控制,同时实现多路参数等回传信息的控制。嵌入式计算机CPU 模块是该UUT 模块的核心。
该UUT 模块主要包含2 个边扫器件,1 个为微控制器PowerPC603R,具体型号为MPC603RRX200LC,主频160 MHz;另一个为APA300(D10)FPGA 芯片,主要硬件资源如下。
(1)处理器:PowerPC603R,主频160 MHz。
(2)FPGA:APA300,与处理器配合完成通信控制。
(3)存储器:32 MB SDRAM 读写零等待,64 MB Flash 存储器。
(4)双口RAM:16 KB,用于模块数据交换。
(5)看门狗:看门狗定时为1.6 s。
(6)定时器:3 个独立的可编程定时器,最小精度为10 μs。
(7)中断处理机:总线中断和局部中断。
(8)串行接口:4 路RS422,2 路RS232。
(9)设备内总线接口电路:实现自定义总线接口。
(10)调试状态接口:提供COP 接口,提供运行、调试和程序固化状态选择接口。
(1)对电路板中的所有边扫链路完成链路测试,UUT 模块共包括2 条边扫链路,微控制器MPC603(D1)组成边扫链路1(图2),FPGA APA300(D10)组成边扫链路2(图3)。
图2 边扫链路1 测试图
图3 边扫链路2 测试图
(2)对电路板中边扫器件和边扫器件之间或者边扫器件和非边扫器件有连接关系的,完成互联测试如图4 所示。
图4 MPC603 和APA300 互联测试示意图
(3)完成电路板中所有Memory 测试,能准确地测试出数据线、地址线和控制线的短路或断路故障,UUT模块Memory 测试具体包括SRAM 芯片、PROM 芯片测试。SRAM 测试示意图如图5 所示。
图5 SRAM 测试示意图
(4)完成电路板中所有Flash 测试,能准确地测试出数据线、地址线和控制线的短路或断路故障,要求能读取Flash 中的数据,并存放到指定的文件中。
(5)完成电路板中所有数据驱动器电路的测试,如图6 所示。
图6 单向驱动器测试图
(6)编写边扫测试程序,完成UUT 模块电路中RS232 通信电路和RS422/RS485 通信电路的测试,能检测出电路故障,定位出故障芯片。
(7)编写边扫测试程序,完成UUT 模块电路中定时器电路的测试,能检测出电路故障芯片。
测试所需硬件资源包括供电电源DC+5V,1 路;ScanWorks 边扫控制器,1 个;ScanWorks 边扫软件,1个;DLP 模块适配板,1 块;边扫控制器配套线缆,4 条;DLP 板连接边扫的线缆,2 条。
将Protel 格式的网表转换成ScanWorks 测试需要的Allegro 格式的网表。使用网表转换软件OMNINET For Windows(如图7 所示),需要注意的是Protel 或者Altium 原理图中如果有用Port 连接的网络,需要改成Net Label,否则使用边扫测试时会认为该点没有网络连接。
图7 网表转换
从官网查找所需测试边扫器件的BSDL 模型文件,本项目中需要用到的模型文件分别为D1(MPC603R.bsd),D10(APA300_BGA 456.bsd)及适配板中的D1(07128SQ100.bsd)文件。
创建一个工程文件和设计文件,单击菜单栏“project”→“new”,进行工程创建。
将BSDL 模型文件添加到“scan path files”,并设置扫描链路创建扫描链路上的器件和顺序。
在“define a netlist”界面,导入网表格式为Allegro,模网表与模型导入完成。
扫描链路测试可以检测边扫框架的物理故障,比如测试总线、tap 控制器等;同时还可以验证工程建立之初所描述的扫描链路顺序是否正确。ScanWorks 自动产生链路测试集,来报告故障位置。
互联测试允许测试边扫器件互联或者边扫器件与非边扫器件的互联。互联测试可以检测开路、短路、固高固低或者桥接故障。
双击“creat an action”下的“Flash”,在弹出的“select target”中可以定义板子上的Flash 设备;匹配板子上的Flash 器件。
利用被测板DLP 的D10 和适配板的UX2 可以完成对被测板串口通信相关的芯片D13~D21、D23、D27~D30、D33、D35A 进行测试,该部分测试主要通过D10、UX2 的数据收发来控制串口接口芯片XR88C681(即D13、D15~D18)来实现。测试时,通过D10 的P24、A19 引脚置高,使D11、D37A 数据输出端高阻,避免影响 DLP_XR88C681 的并行数据 D0~D7。针对XR88C681 的测试主要分为3 个部分。
并行数据与控制端测试:通过写入并读出串口接口芯片XR88C681 模式寄存器MR1A、MR2A,实现对寄存器地址引脚A3~A0、并行数据引脚D7~D0、读引脚RD、写引脚WR、片选CS 引脚以及复位引脚RESET 的测试。
A、B 两通道收发测试:通过往串口接口芯片XR88C681 的模式寄存器MR2A、MR2B 的高两位写入11,使其工作在远程循环模式,进而通过UX2 的数据发送和接收实现对TXDA、RXDA、TXDB、RXDB 的测试。
输出端口OP 测试:通过往串口接口芯片XR88C681的OP 端口的设置寄存器SOPBC、COPBC 写入数据来控制OP 引脚输出高低电平,进而通过UX2 的数据采集来实现对OP 引脚的测试。
本文介绍的基于ScanWorks 边界扫描软件的电路板测试方法通过在软件平台中调用ScanWorks 相关驱动程序,实现对ScanWorks 软件生成的测试序列或测试项目的配置和调用执行,并可将测试执行的结果以对话框的形式返回到执行界面,测试系统接收测试数据显示到报表中,从而实现边扫软件与软件平台的融合。本文主要应用ASSET 公司的测试开发平台ScanWorks,搭建边界扫描测试系统,并开发边界扫描测试程序,对被测电路板进行测试验证。图8 为板件测试报告。
图8 DLP 板测试TP 报表