基于动态重构的FPGA配置信息翻转测试平台及测试方法
技术领域
本发明属于测试技术领域,特别涉及一种用于FPGA配置信息翻转测试的平台,可应用于航天星载FPGA系统的可靠性测试。
背景技术
FPGA(FieldProgrammableGateArray)因其使用灵活、可反复烧写的优异特性,在空间领域得到了广泛的应用。然而由于空间环境存在高能粒子辐射,它会引起FPGA产生单粒子效应,尤其是单粒子的翻转,这会导致FPGA的配置信息发生改变,致使电路功能出错,无法保证系统整体功能的正常运作。为保证航天星载FPGA系统的可靠性,有必要对其进行单粒子翻转测试。
目前在国内,进行FPGA系统的单粒子翻转测试,只有专门的机构能够进行,其实验费用高、等待周期长。因此,搭建可模拟单粒子翻转的测试平台对待测试系统进行可靠性检测,是节省研究资源、提高研究效率的有效方法。而现阶段我国模拟单粒子翻转测试平台及测试方法的相关技术仍处于起步阶段,如中国人民解放军国防科学技术大学申请的发明专利(CN200910043423.0)《现场可编程逻辑门阵列中单粒子翻转的检测方法及装置》,该专利申请由于采用NVRAM接口进行配置帧读取及回读控制,存在FPGA资源消耗较大、待测试系统不可灵活调整、接口处理速度慢的问题。
发明内容
本发明的目的在于针对上述已有技术的不足,提出一种基于动态重构的FPGA配置信息翻转测试平台及测试方法,以减小FPGA的资源消耗,提高待测试系统的灵活性和接口的处理速度。
本发明的技术方案是这样实现的:
一.技术思路
本发明通过搭建一种局部配置信息可被动态任意修改的配置信息翻转测试平台,实现对FPGA配置信息的读取及实时修改、使其具有运行状态健康判断和与上位机数据交换的功能。
二.测试平台
本发明的FPGA配置信息翻转测试平台,包括:
上位机控制模块(1),用于产生测试所需的随机向量、随机向量位置及模拟单粒子翻转的次数,输出给配置读写模块;
TCP/IP协议通信模块(2),用于完成上位机控制模块与配置读写模块之间的信息传输,以及配置读写模块与上位机数据分析模块之间的信息传输;
配置读写模块(3),用于实现FPGA配置信息的读写及实时修改,即通过访问FPGA内部配置访问端口ICAP,回读出待测模块配置信息,并对该配置信息与随机向量进行运算,再将加入随机向量后的配置信息重新写入待测模块;
待测模块(4),用于配置自身的电路信息,将配置信息输出至配置读写模块,或根据配置读写模块传回的加入随机向量后的配置信息,重新配置自身的电路信息,并将新配置后该模块的输出结果送入数据收集模块;
数据收集模块(5),用于产生待测模块所需的激励信号,并将待测模块输出的新配置后的结果,输出给上位机数据分析模块(6);
上位机数据分析模块(6),用于对从数据收集模块中传入的模块功能结果进行统计和分析。
上述FPGA配置信息翻转测试平台,其特征在于所述的上位机控制模块(1),
包括:
模拟单粒子产生密度子模块(11),用于根据用户输入的环境参数,模拟产生单粒子的翻转次数;
随机向量产生子模块(12),用于随机产生需要注入到配置信息文件中的错误配置信息,即随机向量;
随机向量位置产生子模块(13),用于随机产生注入错误配置信息的位置,即随机向量位置。
上述FPGA配置信息翻转测试平台,其特征在于所述的TCP/IP协议通信模块(2),用于通过MicroBlaze软核,建立上位机与FPGA之间的TCP/IP协议通信。
上述FPGA配置信息翻转测试平台,其特征在于所述的配置读写模块(3),包括:
ICAP控制子模块(31),用于根据上位机控制模块传入的指令,控制ICAP状态机在各个状态之间的跳转,包括空闲状态、回读状态、写状态及数据收集状态四个状态;
ICAP回读控制子模块(32),用于通过访问内部配置访问端口ICAP,实现读取待测模块的动态区域配置信息,并将其存入配置信息寄存器RAM中;
配置信息寄存RAM子模块(33),用于存储通过内部配置访问端口ICAP回读出的待测模块动态区域配置信息;
翻转向量寄存RAM子模块(34),用于存储由上位机控制模块产生并通过MicroBlaze传入的随机向量及随机向量位置;
ICAP写控制子模块(35),用于对配置信息寄存器RAM中的配置信息与翻转向量寄存器RAM中的随机向量进行异或运算,并将翻转后的配置信息重新写入待测模块。
三.测试方法
本发明对待测模块的配置信息进行翻转测试包括两种方案,一是对配置信息文件可存入FPGA内部的待测模块进行测试的方法,二是对配置信息文件不可存入FPGA内部的待测模块进行测试的方法。
1.对配置信息文件可存入FPGA内部的待测模块进行测试的方法,包括如下步骤:
(1)将上位机与FPGA测试板相连,FPGA复位上电,由待测模块配置自身的电路信息;
(2)建立上位机与FPGA之间的传输控制协议和因特网互联协议TCP/IP通信连接;
(3)ICAP回读控制子模块对步骤(1)中产生的配置信息进行读取,并将其存入配置信息寄存器RAM中;
(4)启动上位机控制模块,由用户输入测试参数,产生模拟单粒子预设的翻转次数、随机向量及随机向量位置,并将其送入翻转向量寄存器RAM中;
(5)ICAP写控制子模块读取翻转向量寄存RAM子模块中的随机向量位置,对该处的配置信息与随机向量进行异或运算,并将翻转后的配置信息通过内部配置访问端口ICAP重新写入待测模块;
(6)待测模块根据翻转后的配置信息,对其自身的电路信息进行重新配置,并将新配置后待测模块的输出结果传入数据收集模块;
(7)重复步骤(4)-(6),直到达到预设的单粒子翻转次数,数据收集模块向待测模块发出收集结束信号,并将结果发回至上位机数据分析模块;
(8)上位机数据分析模块对返回的新配置后待测模块的输出结果进行统计,判断待测模块的配置信息经单粒子翻转影响后其自身的测试内容能否正确实现,即将该输出结果与步骤(1)中待测模块的输出结果进行比较,若二者相吻合,则判断待测模块自身的测试内容能正确实现;否则,待测模块自身的测试内容不能正确实现。
2.对配置信息文件不可存入FPGA内部的待测模块进行测试的方法,包括如下步骤:
(1)将上位机与FPGA测试板相连,FPGA复位上电,由待测模块配置自身的电路信息,并将配置信息送入上位机控制模块中;
(2)建立上位机与FPGA之间的传输控制协议和因特网互联协议TCP/IP通信连接;
(3)启动上位机控制模块,由用户输入测试参数,产生模拟单粒子预设的翻转次数、随机向量及随机向量位置,并将其存入上位机控制模块内部寄存器中,在上位机控制模块内部对配置信息与随机向量进行异或运算,并将翻转后的配置信息发送至ICAP写控制子模块;
(4)ICAP写控制子模块通过内部配置访问端口ICAP将翻转后配置信息重新写入待测模块;
(5)待测模块根据翻转后的配置信息,对其自身的电路信息进行重新配置,并将新配置后待测模块的输出结果传入数据收集模块;
(6)重复步骤(3)-(5),直到达到预设的单粒子翻转次数,数据收集模块向待测模块发出收集结束信号,并将结果发回至上位机数据分析模块;
(7)上位机数据分析模块对返回的新配置后待测模块的输出结果进行统计,判断待测模块的配置信息经单粒子翻转影响后其自身的测试内容能否正确实现,即将该输出结果与步骤(1)中待测模块的输出结果进行比较,若二者相吻合,则判断待测模块自身的测试内容能正确实现;否则,待测模块自身的测试内容不能正确实现。
本发明与现有技术相比具有以下优点:
第一,本发明采用FPGA的内部配置访问接口ICAP(InternalConfigurationAccessPort),通过ICAP访问待测模块的动态配置区域,完成对配置信息的读、写操作,这样无论待测模块的配置信息存储所需RAM大或小,都只需一片FPGA便可完成整个测试,使得本发明的资源更节省。
第二,本发明的测试平台结构可适应不同规模的待测模块,结构灵活可调,使得本发明的应用范围更广泛。
第三,本发明通过MicroBlaze软核实现FPGA内部与外部的信息传输,MicroBlaze软核支持C语言且方便移植,可更为简单地实现传输控制协议和因特网互联协议TCP/IP,使得本发明的接口处理速度更快。
第四,本发明采用人性化的上位机来模拟单粒子翻转的产生,并支持用户根据需要来自定义测试参数,使得本发明的测试平台结构更为完善、全面,操作更简单。
附图说明
图1为本发明的FPGA配置信息翻转测试平台的整体结构框图;
图2为本发明测试平台中配置信息可存入FPGA内部时的配置读写模块结构图;
图3为本发明测试平台中配置信息不可存入FPGA内部时的配置读写模块结构图;
图4为本发明测试平台中配置信息可存入FPGA内部时的测试流程图;
图5为本发明测试平台中配置信息不可存入FPGA内部时的测试流程图。
具体实施方式
本发明的测试平台采用XilinxISE14.3集成开发软件和VS2010软件,基于XilinxVirtex5FPGA搭建。
参照图1,本发明的FPGA配置信息翻转测试平台包括:上位机控制模块1、TCP/IP协议通信模块2、配置读写模块3、待测模块4、数据收集模块5以及上位机数据分析模块6。
上位机控制模块1、上位机数据分析模块6同属上位机,配置读写模块3、待测模块4与数据收集模块5同属FPGA;上位机与FPGA之间通过TCP/IP协议通信模块2相连,其中,TCP/IP协议通信模块2利用MicroBlaze软核实现。上位机控制模块1由微软基础类MFC实现,产生模拟单粒子翻转的次数、随机向量及随机向量位置,通过TCP/IP协议通信模块2输出给配置读写模块3;配置读写模块3回读待测模块4配置信息,并对配置信息与随机向量进行异或运算,将翻转后的配置信息重新写入待测模块4;待测模块4配置自身的电路信息,并将配置信息输出至配置读写模块3,或根据配置读写模块3传回的加入随机向量后的配置信息,重新配置自身的电路信息,再将新配置后该模块的输出结果送入数据收集模块5;数据收集模块5为待测模块4提供激励信号,并将收集的待测模块4的新配置后该模块的输出结果送回上位机数据分析模块6;上位机数据分析模块6对从数据收集模块5中传入的模块功能结果进行统计,并将该结果与待测模块4的输出结果进行比较,若二者相吻合,则判断待测模块自身的测试内容能正确实现;否则,待测模块自身的测试内容不能正确实现。
上述平台中的配置读写模块3,其结构根据待测模块的配置信息文件大小能否存入FPGA内部RAM而不同。对于待测模块的配置信息文件能存入FPGA内部RAM时的配置读写模块,其结构如图2;对于待测模块的配置信息文件不能存入FPGA内部RAM时的配置读写模块,其结构如图3。
参照图2,本发明测试平台中的配置读写模块3,包括:ICAP控制子模块31、ICAP回读控制子模块32、配置信息寄存RAM子模块33、翻转向量寄存RAM子模块34、ICAP写控制子模块35、选择器以及内部配置访问端口ICAP,其中:
ICAP控制子模块31,通过状态机实现,该状态机包括回读状态、写状态、数据收集状态及空闲状态四个状态。根据上位机控制模块1传入不同的指令,ICAP控制子模块31通过选择器来跳转至不同的状态:当收到回读指令时则跳转至回读状态,即ICAP回读控制子模块32开始工作;当收到写指令时则跳转至写状态,即ICAP写控制子模块35开始工作;当收到数据收集指令时则跳转至数据收集状态,即数据收集模块5开始工作;当收到空指令时则跳转至空闲状态,即不进行任何操作。
ICAP回读控制子模块32,通过内部配置访问端口ICAP读取待测模块的动态区域配置信息,并将其存入配置信息寄存RAM子模块33中;
配置信息寄存RAM子模块33,存储ICAP回读控制子模块32通过内部配置访问端口ICAP读取的待测模块配置信息;
翻转向量寄存RAM子模块34,存储由上位机控制模块1产生并通过MicroBlaze传来的随机向量及随机向量位置;
ICAP写控制子模块35,读取配置信息寄存RAM子模块33中的配置信息以及翻转向量寄存RAM子模块34中的随机向量,并访问翻转向量寄存RAM子模块34中的随机向量位置,对该位置处的配置信息和随机向量进行异或运算,然后将翻转后的配置信息重新写入待测模块4。
参照图3,本发明测试平台中的配置读写模块3,包括:ICAP写控制子模块35以及内部配置访问端口ICAP。
ICAP写控制子模块35接收由上位机控制模块1传入的翻转后配置信息,并通过内部配置访问端口ICAP将其重新写入待测模块,该翻转后配置信息是由配置信息和随机向量进行异或运算得到,其中,配置信息由待测模块4传入,随机向量由上位机控制模块1产生并通过MicroBlaze传入。
上述待测模块4,采用RS编码器实现。当RS编码器所属动态区域产生的配置信息文件可存入FPGA内部RAM中时,待测模块的测试流程如图4;当RS编码器所属动态区域产生的配置信息文件不可存入FPGA内部RAM中时,待测模块的测试流程如图5。
参照图4,利用上述FPGA配置信息翻转测试平台,对配置信息文件可存入FPGA内部的待测模块进行测试,包括如下步骤:
步骤1,配置FPGA。
将上位机与FPGA测试板相连,FPGA复位上电,待测模块产生配置信息,并根据数据收集模块传来的时钟激励信号,产生RS编码码流。
步骤2,建立TCP/IP连接。
启动上位机,打开上位机控制模块中的微软基础类MFC控制窗口,在MFC控制窗口内点击连接按钮,即可自动建立上位机与FPGA之间的TCP/IP通信连接,即传输控制协议和因特网互联协议。
步骤3,配置信息的读取与存储
上位机控制模块发出读指令,ICAP控制子模块收到读指令后,状态机跳转至回读状态,ICAP回读控制子模块按如下步骤读取步骤1中产生的配置信息并将其存入配置信息寄存器RAM中:
3a)第一次写命令字:上位机控制模块传入读指令后,ICAP回读控制子模块向ICAP中写入读操作命令字;
3b)读取并存储配置信息:读操作命令字写入后,待测模块开始输出配置信息,ICAP回读控制子模块通过ICAP读取该配置信息;
3c)第二次写命令字:配置信息读取完成后,ICAP回读控制子模块向ICAP中写入读操作结束命令字,读操作结束;
3d)ICAP回读控制子模块将回读完成操作信号传给ICAP控制子模块,并将读取的配置信息存入到配置信息寄存器RAM中。
步骤4,输入测试参数。
4a)在MFC控制窗口内输入自定义测试参数,包括配置容量、粒子强度及放大倍数;
4b)上位机控制模块根据上述测试参数,自动计算出模拟单粒子预设的翻转次数,并生成相应个数的随机向量及随机向量位置;
4c)将模拟单粒子预设的翻转次数、随机向量及随机向量位置整合为数据包,利用TCP/IP协议,将该数据包通过MicroBlaze发送至FPGA内部的翻转向量寄存器RAM中。
步骤5,进行配置信息翻转,并将翻转后的配置信息重新写入待测模块。
上位机控制模块发出写指令,ICAP控制子模块收到写指令后,状态机跳转至写状态,ICAP写控制子模块按如下步骤进行配置信息翻转运算,并将其重新写入待测模块:
5a)第一段执行写头部命令字操作;
5b)第二段执行写翻转后配置信息操作:
5b1)从配置信息寄存器RAM中读出配置信息,从翻转信息寄存器RAM中读出随机向量;
5b2)读取翻转信息寄存器RAM中的随机向量位置,并对该处的配置信息与随机向量进行异或运算,然后将翻转后的配置信息重新写入待测模块。
5c)第三段执行写尾部命令字操作。
步骤6,获取测试结果。
6a)根据重新写入的翻转后配置信息,待测模块产生配置信息翻转后的RS编码码流;
6b)上位机控制模块发出数据收集指令,ICAP控制子模块收到数据收集指令后,跳转至数据收集状态,数据收集模块对待测模块传出的配置信息翻转后的RS编码码流进行收集。
步骤7,判断是否已达到预设的单粒子翻转次数。
根据步骤4中上位机控制模块产生的模拟单粒子预设的翻转次数,判断是否已达到该次数:
若未达到,则返回步骤5,继续进行测试;
若已达到,则数据收集模块数据收集结束,数据收集模块向待测模块发出收集结束信号,并将配置信息翻转后的RS编码码流发回至上位机数据分析模块,本次测试结束。
步骤8,结果分析。
上位机数据分析模块对返回的配置信息翻转后的RS编码码流进行统计,并将配置信息翻转后的RS编码码流与步骤1中输出的RS编码码流进行比较:
若二者相吻合,则判断配置信息翻转后的RS编码器功能能正确实现;
否则,配置信息翻转后的RS编码器功能不能正确实现。
参照图5,利用上述FPGA配置信息翻转测试平台,对配置信息文件不可存入FPGA内部的待测模块进行测试,包括如下步骤:
步骤1,配置FPGA。
1a)将上位机与FPGA测试板相连,FPGA复位上电,待测模块产生配置信息,并将其发送至上位机控制模块;
1b)根据数据收集模块传来的时钟激励信号,待测模块产生RS编码码流,并将其发送至上位机控制模块。
步骤2,建立TCP/IP连接。
启动上位机,打开上位机控制模块中的微软基础类MFC控制窗口,在MFC控制窗口内点击连接按钮,即可自动建立上位机与FPGA之间的TCP/IP通信连接,即传输控制协议和因特网互联协议。
步骤3,进行配置信息翻转。
3a)在微软基础类MFC控制窗口内输入自定义测试参数,包括配置容量、粒子强度及放大倍数;
3b)上位机控制模块根据上述测试参数,自动计算出模拟单粒子预设的翻转次数,并生成相应个数的随机向量及随机向量位置;
3c)将模拟单粒子预设的翻转次数、随机向量及随机向量位置存于上位机控制模块的内部寄存器中;
3d)在上位机控制模块内部,对配置信息与随机向量进行异或运算,然后将翻转后的配置信息通过MicroBlaze输出给ICAP写控制子模块。
步骤4,将翻转后配置信息通过ICAP写入待测模块。
ICAP写控制子模块收到上位机控制模块传来的翻转后配置信息,通过以下步骤将该翻转后配置信息通过内部配置访问端口ICAP写入待测模块:
4a)第一段执行写头部命令字操作;
4b)第二段将翻转后的配置信息写入待测模块;
4c)第三段执行写尾部命令字操作。
步骤5,获取测试结果。
根据重新写入的翻转后配置信息,待测模块产生配置信息翻转后的RS编码码流,数据收集模块对该RS编码码流进行收集。
步骤6,判断是否已达到预设的单粒子翻转次数。
根据步骤3中上位机控制模块产生的模拟单粒子预设的翻转次数,判断是否已达到该次数:
若未达到,则返回步骤4,继续进行测试;
若已达到,则数据收集模块数据收集结束,数据收集模块向待测模块发出收集结束信号,并将配置信息翻转后的RS编码码流发回至上位机数据分析模块,本次测试结束。
步骤7,结果分析。
上位机数据分析模块对返回的配置信息翻转后的RS编码码流进行统计,并将配置信息翻转后的RS编码码流与步骤1中输出的RS编码码流进行比较:
若二者相吻合,则判断配置信息翻转后的RS编码器功能能正确实现;
否则,配置信息翻转后的RS编码器功能不能正确实现。
以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解了本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。