[发明专利]一种基于回读自重构的SoPC芯片容错方法在审
申请号: | 201410789605.3 | 申请日: | 2014-12-18 |
公开(公告)号: | CN104572326A | 公开(公告)日: | 2015-04-29 |
发明(设计)人: | 兰利东;陆振林;赵元富;王建永;焦烨;李璟;刘薇;王猛;李楠 | 申请(专利权)人: | 北京时代民芯科技有限公司;北京微电子技术研究所 |
主分类号: | G06F11/07 | 分类号: | G06F11/07 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 陈鹏 |
地址: | 100076 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于回读自重构的SoPC芯片容错方法,针对传统的辐射加固的FPGA在太空中每天会发生多次粒子翻转的问题,提供了一种在不增加SoPC芯片面积的前提下,基于回读自重构的方式实现芯片的自主故障检测及故障修复的方法。本发明方法首先读取FPGA配置存储器中的配置数据和Flash中存储的原始配置数据,然后将两者逐位进行比较,通过比较文件格式上的差异能够验证回读的配置数据是否发生了故障并定位故障,最后根据原始配置文件将故障纠正。本发明方法在不增加外围检测设备和检测电路的情况下完成了故障检测、故障判读、故障修复,提高了SoPC芯片在外太空环境应用中的可靠性,推动了SoPC芯片的发展。 | ||
搜索关键词: | 一种 基于 自重 sopc 芯片 容错 方法 | ||
【主权项】:
一种基于回读自重构的SoPC芯片容错方法,其特征在于包括如下步骤:(1)将FPGA的模式选择引脚M0、M1、M2均连接到FPGA的GND端;(2)将SPARC V8处理器的GPIO‑PIO48引脚连接到FPGA的IO_D7引脚,GPIO‑PIO49引脚连接到FPGA的IO_D6引脚,GPIO‑PIO50引脚连接到FPGA的IO_D5引脚,GPIO‑PIO51引脚连接到FPGA的IO_D4引脚,GPIO‑PIO52引脚连接到FPGA的IO_D3引脚,GPIO‑PIO53引脚连接到FPGA的IO_D2引脚,GPIO‑PIO54引脚连接到FPGA的IO_D1引脚,GPIO‑PIO55引脚连接到FPGA的IO_D0引脚,GPIO‑PIO62连接到FPGA的IO_WRITE引脚,GPIO‑PIO63引脚连接到FPGA的IO_CS引脚,GPIO‑PIO61引脚连接到FPGA的GCLK引脚,GPIO‑PIO56引脚连接到FPGA的INIT引脚,GPIO‑PIO58引脚连接到FPGA的DONE引脚,GPIO‑PIO60引脚连接到FPGA的IO_DOUT_BUSY引脚,GPIO‑PIO57引脚连接到FPGA的PROGRAM引脚;(3)将SPARC V8处理器地址线Ai接到FLASH的地址线PAi‑1,i=1,2,3,,,22,数据线Dj,j=16,17,18,,,31,连接到FLASH的数据线DQg,g=0,1,2,,,15,写控制信号端连接到FLASH的WE端,复位控制信号端连接到FLASH的PRESET端,片选控制信号端连接到FLASH的CE端,读控制信号端连接到FLASH的OE端;(4)将SPARC V8处理器地址线Ai接到SDRAM的地址线PAi‑1,数据线Dj,连接到SDRAM的数据线DQk,k=0,1,2,,,31,写控制信号端连接到SDRAM的SDWEN端,复位控制信号端连接到FLASH的SDRASN端,片选控制信号端连接到SDRAM的SDCS0端,字节控制信号端BE0连接到SDDQM0,字节控制信号端BE1连接到SDDQM1,字节控制信号端BE2连接到SDDQM2,字节控制信号端BE3连接到SDDQM3;(5)设置SPARC V8处理器GPIO‑PIO63引脚为输出,向SPARC V8处理器GPIO‑PIO63的数据寄存器写入“0”,经过1个时钟周期后,设置SPARC V8处理器GPIO‑PIO62脚为输出,并向SPARC V8处理器GPIO‑PIO62的数据寄存器写入“0”;(6)设置SPARC V8处理器的GPIO‑PIO61引脚为输出,向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“1”,下一个时钟周期向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“0”,向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“1”和“0”交替进行,并同时执行步骤(7)‑步骤(8);(7)设置SPARC V8处理器的GPIO‑PIO63引脚为输出,向SPARC V8处理器GPIO‑PIO63的数据寄存器写入“0”,设置SPARC V8处理器的GPIO‑PIO62脚为输出,并向SPARC V8处理器GPIO‑PIO62的数据寄存器写入“0”,设置SPARC V8处理器的GPIO‑PIO57引脚为输出,并向SPARC V8处理器的GPIO‑PIO57的数据寄存器写入“1”;(8)根据Xilinx手册,生成回读命令数组,从回读命令数组中依次取出数据,当CCLK信号为高电平时,以2进制的格式,从高到低写入SPARC V8处理器的GPIO‑PIO48、GPIO‑PIO49、GPIO‑PIO50、GPIO‑PIO51、GPIO‑PIO52、GPIO‑PIO53、GPIO‑PIO54、GPIO‑PIO55,直至回读命令数组被全部遍历,当回读命令数组被全部遍历时,转入步骤(9);所述回读命令数组包括同步字、写入到FAR寄存器、起始帧地址、写入到CMD寄存器、包数据RCFG、从FDRO寄存器中读出、数据字;(9)设置SPARC V8处理器GPIO‑PIO62引脚与GPIO‑PIO63引脚均为输出,并分别向SPARC V8处理器GPIO‑PIO62的数据寄存器与GPIO‑PIO63的数据寄存器写入“1”,设置SPARC V8处理器GPIO‑PIO48、GPIO‑PIO49、GPIO‑PIO50、GPIO‑PIO51、GPIO‑PIO52、GPIO‑PIO53、GPIO‑PIO54、GPIO‑PIO55引脚为输入,再次设置SPARC V8处理器GPIO‑PIO62引脚与GPIO‑PIO63引脚均为输出,并分别向SPARC V8处理器GPIO‑PIO62的数据寄存器与GPIO‑PIO63的数据寄存器写入“1”,设置SPARC V8处理器的GPIO‑PIO61引脚为输出,向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“0”,下一个时钟周期向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“1”;(10)设置SPARC V8处理器GPIO‑PIO62引脚为输出,向SPARC V8处理器GPIO‑PIO62的数据寄存器写入“1”,设置SPARC V8处理器GPIO‑PIO63引脚为输出,向SPARC V8处理器GPIO‑PIO63的数据寄存器写入“0”;(11)设置SPARC V8处理器的GPIO‑PIO61引脚为输出,向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“1”,下一个时钟周期向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“0”,向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“1”和“0”交替进行,并同时执行步骤(12)‑步骤(13);(12)设置SPARC V8处理器的GPIO‑PIO63引脚为输出,向SPARC V8处理器GPIO‑PIO63的数据寄存器写入“0”,设置SPARC V8处理器的GPIO‑PIO62脚为输出,并向SPARC V8处理器GPIO‑PIO62的数据寄存器写入“1”,设置SPARC V8处理器的GPIO‑PIO57引脚为输出,并向SPARC V8处理器的GPIO‑PIO57的数据寄存器写入“1”;(13)当CCLK信号为高电平时,以2进制的格式从SPARC V8处理器的GPIO‑PIO48、GPIO‑PIO49、GPIO‑PIO50、GPIO‑PIO51、GPIO‑PIO52、GPIO‑PIO53、GPIO‑PIO54、GPIO‑PIO55读取数据,直至FPGA中的数据全部读出,得到回读数据;所述回读数据为多个CLB数据帧组成的数据帧数组;(14)设置SPARC V8处理器GPIO‑PIO62引脚与GPIO‑PIO63引脚均为输出,并分别向SPARC V8处理器GPIO‑PIO62的数据寄存器与GPIO‑PIO63的数据寄存器写入“1”;(15)将回读得到的数据帧数组与存储在FLASH中的原始有效配置数据进行比较,如果数据出现不一致,则根据不一致的数据所在数据帧的帧标识得到故障帧的行、列坐标信息,如果数据没有出现不一致,则FPGA数据没有发生粒子翻转;(16)在ISE10.1开发环境任意生成的.bit文件并送至FLASH中,对SPARC V8处理器、FLASH、FPGA进行上电,SPARC V8处理器从FLASH中读取.bit文件,按照.bit文件格式和Virtex芯片的配置格式生成配置信息数组;(17)设置SPARC V8处理器的GPIO‑PIO57引脚为输出,向GPIO‑PIO57引脚的数据寄存器中写入“1”,然后向SPARC V8处理器的GPIO‑PIO57引脚的数据寄存器中写入“0”,设置SPARC V8处理器的GPIO‑PIO56引脚为输入,监测FPGA的INIT引脚的电压变化;(18)如果INIT引脚由低电平变为高电平,则转入步骤(19);如果FPGA的INIT引脚为高电平,则重复步骤(16)‑步骤(17),直至FPGA的INIT引脚出现由低电平向高电平的跳变后转步骤(19);(19)设置SPARC V8处理器GPIO‑PIO63引脚为输出,然后向SPARC V8处理器GPIO‑PIO62的数据寄存器写入“0”,一个时钟周期后设置SPARC V8处理器GPIO‑PIO62脚为输出,并向SPARC V8处理器GPIO的数据寄存器写入“0”;(20)设置SPARC V8处理器的GPIO‑PIO61引脚为输出,向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“1”,下一个时钟周期向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“0”,向SPARC V8处理器的GPIO‑PIO61的数据寄存器写入“1”和“0”交替进行,并同时执行步骤(21)‑步骤(22);(21)设置SPARC V8处理器的GPIO‑PIO63引脚为输出,向SPARC V8处理器GPIO‑PIO62的数据寄存器写入“0”,设置SPARC V8处理器的GPIO‑PIO62脚为输出,并向SPARC V8处理器GPIO的数据寄存器写入“0”,设置SPARC V8处理器的GPIO‑PIO57引脚为输出,并向SPARC V8处理器的GPIO‑PIO57的数据寄存器写入“1”;(22)从配置信息数组中依次取出数据,在FPGA的GCLK信号为高电平时,以2进制的格式从高到低写入SPARC V8处理器的GPIO‑PIO48、GPIO‑PIO49、GPIO‑PIO50、GPIO‑PIO51、GPIO‑PIO52、GPIO‑PIO53、GPIO‑PIO54、GPIO‑PIO55,同时持续监控FPGA的IO_DOUT_BUSY引脚,如果IO_DOUT_BUSY引脚为高电平,则持续向GPIO‑PIO48、GPIO‑PIO49、GPIO‑PIO50、GPIO‑PIO51、GPIO‑PIO52、GPIO‑PIO53、GPIO‑PIO54、GPIO‑PIO55的数据寄存器中写入当前配置数据,直至IO_DOUT_BUSY信号输出为低电平,如果IO_DOUT_BUSY为低电平,则转入步骤(23);(23)设置SPARC V8处理器GPIO‑PIO62引脚为输出,向SPARC V8处理器GPIO‑PIO62的数据寄存器写入“1”,然后设置SPARC V8处理器GPIO‑PIO63引脚为输出,向SPARC V8处理器GPIO‑PIO63的数据寄存器写入“1”;(24)配置SPARC V8处理器GPIO‑PIO58引脚为输入,持续检测FPGA的DONE控制信号的输出,如果DONE控制信号电平为高,则软配置电路完成,如果DONE控制信号电平不为高,则继续等待,直至DONE信号为高,当等待时间超出设定的阈值时,则重复执行(16)至(23)直至DONE信号为高。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京时代民芯科技有限公司;北京微电子技术研究所;,未经北京时代民芯科技有限公司;北京微电子技术研究所;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410789605.3/,转载请声明来源钻瓜专利网。