
蒋晓
(中国电子科技集团38研究所,合肥230031)
摘要:针对在FPGA芯片中的应用特点,设计了一种边界扫描电路,应用于自行设计的FPGA新结构之中。该电路侧重于电路板级测试功能的实现,兼顾芯片功能的测试;同时,加入了器件编程功能。
关键词:边界扫描;现场可编程门阵列;可测试性设计;器件编程
A Boundary-Scan Test Design for FPGA’s
Jiang Xiao
( CETC ECRIEE, Hefei 230031 )
Abstract:A scan_boundary circuit is designed based on the characteristics of FPGA’s.The circuit is used in a self_designed new architecture of FPGA.The design emphasizes the function of PCB-level test while paying attention to the chip-level test.And device-programming function is also added into the circuit1 In the design Keywords:Boundaryscan;FPGA;Designfortestability;Deviceprogramming
1. 引言
随着芯片功能、封装技术、PCB制造技术的不断发展,传统电路测试方法遇到巨大的挑战。1990年,IEEE组织开始推行IEEE11491.1边界扫描标准后,边界扫描电路已成为业界一种流行的可测性设计,被众多ASIC和FPGA生产商采用。
在IEEE11491.1标准中,采用5个称为测试访问端口(TAP,Test Access Port)的专用测试管脚,实现一系列芯片信息采集、测试的功能,提供了芯片级、PCB板级和系统级的测试手段,并且,该标准的功能在扩展、加强后,可以实现内建自测试(BIST)、数字系统单步调试等更为强大的功能。
本文进行了边界扫描与编程电路的设计,选择了针对FPGA应用特定的边界扫描测试功能,并加入编程功能。结果表明,电路实现了边界扫描测试和下载的设计功能要求。
2. 功能选择和总体设计
2.1 指令集设计
根据对FPGA 中边界扫描电路的功能设计,共选择了指令构成指令集,用于实现测试、编程,如表1所示。
表1指令集定义
类型 指令名称
意义
BYPASS 旁路指令
在测试PCB 上其它芯片时,旁路本芯片的边界扫描链。SAMPLE/PRELOAD 采样/预赋值 在芯片正常工作时取出管脚上的信号,移位输出。 测试 指令
EXTEST 外部测试指令 控制输出管脚上的信号,获取输入管脚收到的信号 ERASE 擦除指令
擦除编程存储器中原有信息 ADDRESS 行地址指令 输入编程目标地址 DATA 数据指令
输入编程数据
PROGRAM 编程指令 将编程数据写入对应地址
编程指令
CONFIRM 校验指令
从编程存储器选中的地址中读出数据,用于校验
其中,测试指令选用了在边界扫描标准中规定必须包括的3条测试指令。这样的设计主要是考虑到:FPGA 的可编程特性决定了芯片的逻辑功能比较灵活,在不同的应用中很少互相重复,因此,FPGA 芯片较少应用到芯片自测试等复杂的测试过程。所以,在FPGA 中设计边界扫描电路时,功能着重于电路板级测试;同时,这3条必备指令的结合,在FPGA 的测试中,仍然能够兼顾部分基本的芯片级测试功能。因此,选择实现3种测试功能:1)旁路功能,在测试电路板上其它芯片时,将本芯片的边界扫描链旁路,用1位移位寄存器帮助构成板级的扫描链;2)采样功能,获得芯片工作中各个I/O 管脚上的信号;3)管脚控制功能,控制I/O 管脚上的信号,施加测试向量。
选择了5条编程指令,在边界扫描电路中加入了编程功能,实现对器件的在线编程。
FPGA 的编程通过地址寄存器链选中行地址,数据寄存器链访问被选中的行,通过它们逐行编程或读出数据,可以完成整个编程存储器的编程或验证。因此,采用数据指令和行地址指令分别对这两条寄存器链进行输入。为了将数据写入和读出编程存储器,分别需要编程指令和校验指令进行控制。此外,在每一次编程开始时,需要对整个编程存储器阵列进行复位,为此,采用了复位指令。通过这5条指令的配合,可以实现器件编程的全部过程。由于在线编程的要求,在使用这5条编程指令进行编程时,边界扫描电路自动将FPGA 的所有可编程I/O 管脚控制为高阻态,防止在编程过程中管脚状态改变时的电平冲突。
2.2 模块设计
边界扫描电路的系统结构如图1所示,由测试访问端口、测试访问端口控制块(TAP 控制器,一个16状态状态机)、寄存器组、指令译码器和编程RAM 控制模块五个部分组成。
图1 电路模块的划分
测试访问端口的5个专用管脚按照一个简单的串行通讯协议,完成测试和编程的指令、数据的输入输出。测试访问端口控制块就是这个“通讯协议”的通讯控制器。同时,TAPController为电路中其他模块提供工作时钟。指令译码器根据输入的指令,产生相应控制信号,控制边界扫描电路完成对应的测试、编程动作。寄存器组包括指令寄存器(IR)和一组用于测试和编程的数据寄存器(DR)。IR接受指令输入,再将指令提供给指令译码器;DR在TAPController和指令译码器控制下执行测试、编程操作。编程RAM 控制模块在TAPController和指令译码器控制下产生RAM擦除、写入、读出等控制信号。
3 电路设计
3.1 测试访问端口
TAP由5个专用于边界扫描的引脚组成:1)TCK(Test Clock):测试电路时钟信号;2)TMS(Test Mode Select):测试模式控制端,与TCK配合控制TAP Controller,是状态机跳变的条件信号,在无输入时拉高为“1”;3)TDI(Test Data Input):测试数据串行输入端,无输入时拉高为“1”;4)TDO(Test Data Output):测试数据串行输出端,无输出时为高阻态;5)TRST(Test Reset):复位信号,低电平时使状态机异步复位。
3.2 TAP控制器
TAP控制器是一个16状态的状态机,由TCK同步,TRST异步复位,根据TMS的输入转换状态,并产生信号控制测试电路的工作。状态机的设计使电路在任意状态下,经过5个时钟周期的TMS=“0”,能够回到复位状态。TAP控制器用4位编码实现边界扫描标准中的16状态状态机。
3.3 寄存器组寄存器组模块中,除了插入在芯片核心逻辑与IO管脚之间的边界扫描链寄存器外,还有一些完成其他功能的寄存器,它们结构相近,合称为寄存器组。模块中包含指令寄存器、旁路寄存器、编程数据寄存器、编程地址寄存器、边界扫描寄存器。由TAP控制器和指令译码器通过多路选择器选择其中的一个寄存器,接入TDI和TDO之间,发生作用。
3.4 寄存器
寄存器组中的各个寄存器结构相近,一个寄存器包括触发器链、并行数据源和锁存器三个部分。并行数据源中有扫描测试要读取的数据(在边界扫描寄存器中就是核心系统的I/O信号)。D触发器链读入并行数据,转为串行,从TDO口输出。同时,从TDI口输入的数据,由触发器链转为并行,由锁存器存储在边界扫描测试电路中,通过测试动作控制信号的选择,可以将信号加到I/O口上。可以根据不同寄存器的作用,选择是否包含并行数据源和锁存器。本电路中的寄存器设计见表2。
表2边界扫描电路中的寄存器
寄存器并行数据源锁存器功能
旁路寄存器 1bit:“0”无旁路本芯片的扫描链
编程数据寄存器 RAM中数据无输入编程数据
编程地址寄存器无无输入编程RAM行地址
边界扫描寄存器 I/O管脚数据有边界扫描测试
指令寄存器 3bit:“101”有输入指令
3.5 可编程双向三态I/O管脚的边界扫描单元
由于FPGA中的I/O管脚都是可编程双向三态的,与普通ASIC中有很大不同,为这类管脚设计的边界扫描单元必须考虑到可编程管脚所有可能的应用方式,通过分别监控管脚的输入、输出和输出使能信号,能对可编程双向三态I/O管脚的输入输出进行监测和控制。
4 结果与结论
编程电路功能:
1)将边界扫描电路复位,此时,FPGA芯片的工作与未加入边界扫描电路的芯片一致。说明边界扫描测试功能关闭时,对芯片工作无影响。
2)向边界扫描电路输入BYPASS指令,FPGA芯片工作正常,在边界扫描电路TDI与TDO端口间形成时延为1个TCK时钟周期的通路。
3)向边界扫描电路输入SAMPLEPRELOAD指令,FPGA芯片正常工作。在边界扫描电路TDI与TDO 端口间形成时延为192个TCK时钟周期的通路,前192个时钟周期从TDO串行输出的192位数据,每3位为1组反映一个I/O管脚的状态。在这一指令下,能够通过边界扫描链得到芯片所有个I/O管脚的工作状态。
4)输入SAMPLEPRELOAD指令后向TDI输入192位数据,再输入EXTEST指令。边界扫描电路切断了芯片I/O管脚与可编程核心输入输出端之间的联系,根据输入的192位数据控制所有I/O管脚的状态(控制其为输入态或输出某一电平)和可编程核心输入端上的信号。同时,和SAMPLEPRELOAD指令下一样,从TDO串行输出得到了所有I/O管脚上的信号(此时测试所关心的是被控制为输入态的管脚接收到的信号)。
5)使用编程指令,将电路例子通过本电路下载到FPGA中。在下载过程中,FPGA所有I/O管脚都处于高阻态。
经过测试,表明:
·本电路实现了边界扫描测试功能,其指令设计针对FPGA中的特定应用。设计的功能、接口、控制状态机符合IEEE11491.1边界扫描标准。
·设计了编程指令完成FPGA编程阵列的访问和编程时I/O端口的电信号控制,实现了FPGA芯片在系统编程功能。
参考文献:
[1] 张鹏. 适于Daapath应用的FPGA新结构及其容错设计. 上海:复旦大学,2000.
[2] 马大壮. 基于数据通道的FPGA中边界扫描单元的结构设计. 上海:复旦大学,2000.
作者简介
蒋晓工程师,主要从事军用地面雷达终端\\监控系统开发,研究兴趣为:雷达系统的实时控制、雷达系统数据处理。
