论文导读::随着FPGA集成度和复杂性的增加,测试显得尤为重要。FPGA具有灵活的可编程性,在此基础上可以构建出极其庞大的数字系统。为了保证数字系统工作的稳定性,首先就要保证FPGA芯片的可靠性。本文从SRAM型FPGA的内部构造入手,对测试生成和测试故障模型关键技术进行了探讨和研究,从而解决了测试的故障覆盖率和测试速度之间的矛盾。并搭建了软硬件协同测试平台对测试理论进行了验证。
论文关键词:FPGA测试,故障覆盖率,USB2.0,协同测试平台
引言:
整个电子信息领域在迈向数字化,数字系统有着模拟系统不可比拟的优势。FPGA具有灵活的可编程性,利用硬件描述语言的“自顶向下”设计思想就可以构建出极其庞大的数字系统,广泛应用于商业、军事、航空航天等领域[1]。其可靠性和可测试性也显得尤为重要,只有保证了FPGA芯片的可靠性,才可以保证数字系统的工作稳定性。
FPGA主要有两大类,一类是反熔丝型的,另一类是SRAM型的。SRAM型具有反复编程的能力,而反熔丝型只能一次编程。本文将主要讨论SRAM 型FPGA的测试技术。
1SRAM型FPGA的内部构造
SRAM 型FPGA具有反复编程的能力,通常由四部分组成:可编程逻辑资源(CLB),可编程互连资源(IR),可编程输入输出资源(IOB)和存放编程数据的SRAM[2]。图1给出了SRAM型FPGA的结构示意图,下面介绍FPGA芯片的四大组成部分。

图1
1.1可编程逻辑资源(CLB)
CLB通常由查找表模块(LUT)、D触发器(DFF)、多路选择开关(MUX)和快速进位逻辑组成。
其中LUT(Look-Up-Table)可通过编程来实现任意输入的组合逻辑电路功能故障覆盖率,所以查找表模块又称之为逻辑函数发生器;多路选择开关能通过编程实现输入数据的选择;触发器可通过编程选择赋能功能和上升沿触发或下降沿触发等;快速进位逻辑是为了在算术运算中快速产生进位和错位信号而设置的专用算术逻辑,进位链与通常的布线资源是无关的,这就极大地增强了加法器、减法器、累加器、比较器和计数器的效率和性能,更好地运用于算术运算领域。
1.2可编程互连资源(IR)
为了能将FPGA中数目很大的CLB和IOB连结成各种复杂的系统,在布线区内布置了丰富的可编程互连资源(IR),它通常由金属线段和电子开关组成[2]。金属线段沿着线轨排列,而线轨分布在可编程CLB之间的通道内。在垂直(水平)通道内只有垂直(水平)方向的线轨。金属线段之间通过可编程电子开关相互连接, CLB的引脚也是通过可编程电子开关与线段相互连接,通过编程就可以实现CLB之间的相互连接了。金属线段之间连接的开关位于垂直通道和水平通道相交处的开关矩阵的开关节点中,每个开关节点即为开关矩阵的一个元素,图2给出了FPGA中一种典型的可编程互连资源的示意图。

图2
1.3可编程输入输出资源(IOB)
可编程输入输出资源(IOB)是FPGA芯片与外界进行通信的窗口,分布在FPGA器件的周围,提供外部封装引脚和内部逻辑之间的接口。每个IOB控制一个封装引脚,并可以配置为输入、输出或双向IO,从而实现了输入缓冲、输出驱动、接口电平转换、阻抗匹配、延迟控制等功能。
1.4存放编程数据的存储器(SRAM)
存放编程数据的SRAM主要由存储单元阵列,数据移位寄存器,地址移位寄存器和控制电路4部分组成核心期刊目录。编程数据通过Din串行进入数据移位寄存器,每输入w位就写入一行存储单元,写入哪一行则由地址移位寄存器来决定。从存储单元读出数据也是整行w位读出,其过程与写入过程相反。图3给出了一种存放编程数据SRAM的结构示意图。

图3
2SRAM型FPGA的测试理论
根据SRAM型FPGA各组成模块的功能和特点,将其分为以上四大组成部分。对于这四个功能模块,采用“各个击破”的方法来考虑测试问题。要对一个FPGA进行完整的测试,需要对被测FPGA进行反复编程,并对编程实现的电路进行测试。测试编程实现的电路所用的时间较短,而对FPGA进行编程则比较费时,通常需要几毫秒到几百毫秒的时间。因而,在同样的故障覆盖率下故障覆盖率,对FPGA进行测试的时间主要取决于编程的次数。
本文随后对各模块的测试理论进行了讨论和研究。其中构建测试生成和测试故障模型是测试理论的关键技术。
2.1可编程输入输出资源(IOB)的测试理论
可编程输入输出资源(IOB)是FPGA芯片通向外界的窗口。只有首先保证了IOB的稳定性,才可以通过这个窗口对FPGA芯片进行全面的测试。IOB的故障模型可以分为:恒为0状态故障,恒为1状态故障,断路故障,三态故障等。这就需要通过多次编程来对IOB进行配置。然后分别在输入端口施加测试激励,在输出端口回收测试响应来检验IOB的功能是否完全正常。比如在检测是否存在恒为0/1状态故障的时候可以把FPGA的一半IOB设置为输入状态,另一半IOB设置为输出状态,并在FPGA内部构建一个简单的取反或者直连模块来测试输出状态的IOB是否工作正常。然后将IOB的输入输出状态进行角色调换,再次测试输出状态的IOB是否工作正常,就可以对FPGA的IOB进行测试了。
2.2可编程逻辑资源(CLB)的测试理论
可编程逻辑资源(CLB)是FPGA内部的逻辑功能子模块。它既可以实现组合逻辑功能又可以实现时序逻辑功能。测试CLB最简单的方法就是将CLB的输入/输出和FPGA的IOB连接起来,直接对每个CLB内的逻辑电路进行测试。当然对于每个CLB来说,包含了查找表模块,D触发器,数据选择器和快速进位逻辑等。都要通过若干次编程才能完成全面的测试。
这种方法存在的主要问题是FPGA的IOB是有限的,每次编程只能测试某一部分的CLB,这就增加了编程的次数。在同样的故障覆盖率下FPGA的测试时间很长。
为了解决故障覆盖率和测试时间之间的矛盾可以采用把整行(列)或若干行(列)连在一起进行测试的方法:基于异或门级联电路的方法[3],基于与门和或门级联电路的方法[4],以阵列为基础的方法[5,6]。也可以采用只需很少IOB的内建自测试(BIST)方法[7]。
2.3可编程互连资源(IR)的测试理论
可编程互连资源主要是由线段和开关组成,互连资源的测试通常考虑下述几种故障:线段的固定型(stuck-at)故障,线段的开路(stuck-open)故障,线段间的桥接故障,可编程开关的常闭(stuck-on)故障,可编程开关的常开(stuck-off)故障。
同可编程逻辑资源一样, 测试FPGA中的连线资源也存在IOB不足的问题,在同样的故障覆盖率下FPGA的测试时间很长,为了解决故障覆盖率和测试速度之间的矛盾故障覆盖率,可以采用把线网分成若干子线网,把几个子线网中测试时所加测试图形相同的线网组成阵列共用IOB来解决这一问题。
2.4存放编程数据SRAM的测试理论
对于SRAM的测试,则属于存储器测试的范畴,研究已经相对成熟,通常采用功能故障模型。其测试方法是通过Din输入数据对存储单元逐行写入特定功能的测试图形,再逐行读出,并通过Dout来观察读出的内容[8]。
虽然对SRAM测试的方法已有较深入的研究。但由于FPGA中存放编程数据SRAM的读写方式具有特殊性,所以对其测试的方法也应做相应的改变,这种改变主要体现在读写控制器的工作时序上面。
3 软硬件协同测试平台的搭建
探讨和研究了SRAM型FPGA的测试理论之后,搭建了软硬件协同测试平台对FPGA测试理论进行验证。在此基础之上可以更深入地对FPGA测试理论进行研究,并可以为FPGA芯片的使用提供稳定的性能保障。
图4是软硬件协同测试平台的总体设计框图,此测试平台可以分为软件模块、硬件模块和USB2.0通信模块。

图4
3.1 USB2.0通信模块的搭建
为了实现软件部分和硬件部分之间的信息传输需要搭建一个USB2.0通信模块,它是由三部分组成的:USB芯片及其外围电路,USB芯片在Windows操作系统下的驱动程序,USB通信在VC++程序中数据收发的软件接口。
USB芯片(CY7C68013)是美国CYPRESS公司的一款微处理器,它自带USB2.0接口,外围电路主要是由时钟电路、复位电路、存放USB设备VID/PID的EEPROM和滤波电容组成[9]核心期刊目录。
为了实现USB芯片与个人计算机之间的连接需要开发USB芯片在Windows操作系统下的驱动程序,并编写与驱动程序相配套的Inf文件来引导个人计算机对驱动程序进行调用。
1/2 1 2 下一页 尾页 |