本发明涉及可编程逻辑器件技术领域,更具体地,涉及一种SRAM型FPGA器件单粒子反转(SEU)探测及纠错的电路。
背景技术:
集成电路领域的可编程逻辑器件,仅仅在集成电路开发后半个世纪,它就变得无处不在,电脑,手机和其他数字电器成为现代社会结构不可缺少的一部分。这是因为,现代计算,交流,制造和交通系统,包括互联网,全都依赖于集成电路的存在。
集成电路的分类方法很多,按照功能可分为存储器(Memory),微处理器(CPU),定制电路(ASICs)和可编程逻辑器件。可编程逻辑器件中有可分为SPLD,CPLD,FPGA。期中FPGA如今已成为主流。本申请文件就以FPGA来称呼可编程逻辑器件。
FPAG 晶片是一种可以在上电之后再把需要的控制程式输入的晶片,它不是固定的电路,而是一种可以视需要而改变功能的晶片,它的功能可以随着输入的数据而改变。图1是一个典型的FPGA架构。
上图显示了FPGA中的主要两大部分:逻辑模块(Logic Block)和模块中的联线(Interconnection Resources)。
无论是逻辑模块还是模块中的联线的控制,都是由专门的存储单元来控制。以SRAM为例。图2显示了两种控制方式:
1、控制联线“通”还是“不通”;
2、控制选择器选择哪一个输入。
当然,SRAM单元的控制方式不止是这两种。由各种的控制方式结合起来就可以形成复杂的功能,如下3所示。
现场可编程逻辑门阵列FPGA(Field- Programmable Gate Array)被广泛地应用到各个领域中,如工业控制、嵌入式系统、密码学、航空飞船、网络等。这主要源于FPGA可提供高性能、低一次性工程费用成本,非常适合大电路的实现以及快速的上市时间。随着性能和容量的指数增长,集成电路的噪声容限减少,电源电压降低,低能量的粒子诱发SEU的可能性增大,使得 SRAM型FPGA(简称SFPGA)容易受SEU影响而发生软错误。另一方面,FPGA的设计规模不断增大、复杂度不断上升,在应用中故障发生的可能性 也随之提高,其设计可靠性直接影响产品的可靠性。
针对SEU问题,目前有三种主流的解决方法:
方法一,采用特殊工艺绝缘体上硅(SOI) 加固的方法。见论文“线性能量传输值对SOI NMOS 寄生双极放大效应的影响”,刘红侠、卓青青,西安电子科技大学微电子学院”。SOI是英文Silicon On Insulator的缩写,指的是绝缘层上的硅。SOI技术是指在绝缘层上形成一层具有一定厚度的单晶半导体硅薄膜的材料制备技术。埋氧的存在使得SOI技术具有了抗瞬时辐射效应的能力。目前SIMOX存储器电路具有SEU失效率为10-9/位天,并且在1011rad(si)/s的剂量率辐照下仍然能保持电路功能。这些数字表明,与体硅电路相比,SOI电路的抗辐照强度提高了100倍。
方法二,采用电路设计方法提高抗SEU。包括加固SRAM,以及增加FPGA绕线MUX设计冗余的等方式。传统的SRAM为六个MOS管。在专利CN102097123A,“一种抗单粒子效应的静态随机存储单元”,李振涛、乔宁,中科院半导体研究所中,增加到14管结构,由两个串联的PMOS管替代负载PMOS管,两个串联的NMOS管替代驱动NMOS管,使用传输门连接两组串联MOS管的中间节点以调节电平,这种结构可以有效地抑制单粒子产生的瞬态电流及瞬态电流带来的关键节点电压变化,从而有效的防止了SEU。
方法三,对SRAM进行检错纠错模式。在专利CN101826038A,“一种抗SRAM FPGA器件SEU的电路及方法”,谢婧、来金梅,复旦大学中,一种由回读电路,细粒度刷新电路,二维CRC较验电路组成了检错纠错的体系。FPGA内的发生单粒子反转错误的编程点可以被检错纠错,实现抗SEU功能。
上述提到的方法和实例都存在同一个问题。在实现抗SEU功能同时,大幅提高了生产成本。
在方法一中提到的SOI工艺是一种特殊工艺,需要特殊的晶圆来加工。目前主要的晶圆代工厂都不提供。主要的FPGA厂商目前也没有基于SOI的FPGA产品。因此,只有专门的应用领域才可能发展此类FPGA,如航天领域。
在方法二中提到的SRAM加固方法是可以基于晶圆代工厂的标准工艺的。但是,在FPGA中用来存储编程信息的SRAM通常占用20%到30%的芯片面积。当6管的SRAM单元增加到14管,FPGA整体面积会大大增加,成本也会大大增加。而内部绕线资源的性能也随之降低。在对成本不敏感的特殊领域,这种方法还是很有效的。
方法三中所加的检错纠电路也占用了相当多的面积。最终结果与方法二一样增加了芯片成本。其主要应用方向也是航天等领域。
技术实现要素:
为了克服上述现有技术的不足,本发明首先提出一种SRAM型FPGA器件单粒子反转探测及纠错的电路,该方式是一种低成本且有效的抗SEU方法,本发明是在已经存在的FPGA器上加入单粒子反转探测及纠错的电路,从而实现了在增加很小的芯片面积及成本的基础上有效的实现抗SEU功能。
为了实现上述目的,本发明的技术方案为:
一种SRAM型FPGA器件单粒子反转探测及纠错的电路,其中SRAM型FPGA器件包括SRAM、编程控制模块、地址指针移位寄存器组模块和数据移位寄存器组模块;其中地址指针移位寄存器组模块和数据移位寄存器组模块分别与SRAM连接,地址指针移位寄存器组模块和数据移位寄存器组模块还分别与编程控制模块连接,所述编程控制模块设有地址计数器并在编程控制模块增加单粒子反转探测工作模式,数据移位寄存器组模块与编程控制模块的连接回路上设有校验检测模块;
其中地址计数器用来产生从0到N的数值,编程控制模块在地址指针移位寄存器组中从0位开始,逐位移动地址指针,直到第N位;地址计数器中的数值与其同步;当指针在第n位时,第n位的字线为高,所连的一行SRAM单元被选中,此时能够对这些SRAM进行读和写,其它字线为低;在任何时刻,最多只能有一个字线为高,或者都为低;
校验检测模块读取从数据移位寄存器移位过来的数据,这些数据是从选中的一行SRAM单元回读的数据;在进行校验时,基于串行数据算法,对整行数据进行校验。
优选地,在数据移位寄存器组模块与编程控制模块的连接回路上还设有出错报告模块,出错报告模块用于在校验检测模块发现错误时报告。
优选地,出错报告模块报错的方式有两种:第一种是将出错报告信号接到IO口,由系统决定相应的纠错步骤;第二种是向编程控制模块报告,编程控制模块根据地址计数器中的数值,自动执行相应纠错流程。
优选地,所述校验检测模块的校验方法为奇偶(Parity)校验,循环冗余(CRC)校验或错误检查和纠正(ECC)校验中的一种。
优选地,采用SRAM中闲置的SRAM单元来简化或增强校验检测模块,SRAM中每一个位线和字线交叉的位置有一个SRAM单元;其是基于所采用的校验方法对闲置的SRAM单元进行利用,具体为:
在单粒子反转且为奇偶校验时,事先对一行中“1”的个数统计,当“1”的个数为奇数时,在一个闲置单元赋值“1”,此时总个数就是偶数了;如果“1”的个数为偶数时,在一个闲置单元赋值“0”,总个数总保持偶数,在校验时,只要看回读“1”的个数是否是偶数就行了;
在单粒子反转且为循环冗余校验时,循环冗余采用两种元素的伽罗瓦域,两个元素为0和1,能够匹配计算机体系结构,发送方和接收方必须确定一个生成多项式GF(2);
基于多项式、收到的数据和其追加到数据的计算检查值或CRC,接收方校验结果是否0,若是0意味着没有错误,否则就是错误;
在单粒子反转且为错误检查和纠正(ECC)校验时,除错误检查外,ECC还包括利用从数据中得出的冗余数据和收到的数据做计算;若是计算结果是0意味着没有错误,否则就是错误;根据错误结果能够推导出位错误,并做更正。ECC可以纠正单个比特错误和检测双比特错误。
与现有技术相比,本发明的有益效果为:
1、利用已经存在的FPGA编程电路。在此基础上加入SEU的检测及纠错电路,从而实现了在增加很小的芯片面积及成本的基础上有效的实现抗SEU功能。
2、纠错的时间在第三类的方式中速度很快,大幅降低了器件正常工作受到的单粒子反转影响。
附图说明
图1为典型的FPGA架构图。
图2为SRAM单元的两种控制方式示意图。
图3为FPGA局部控制方式示意图。
图4为典型的FPGA编程SRAM电路示意图。
图5为一个典型SRAM单元示意图,其中D表示位线。
图6为本发明加入了单粒子反转探测及纠错的电路的示意图。
图7 为FPGA单粒子反转探测工作流程图。
图8为 FPGA纠错工作流程图。
具体实施方式
下面结合附图对本发明做进一步的描述,但本发明的实施方式并不限于此。
图4展示了一个典型的FPGA编程SRAM阵列(写操作)及对其编程验证(读操作)的电路:主要由编程控制模块,地址指针移位寄存器组模块,数据移位寄存器组模块组成。
编程控制模块包括了IO接口,用于外界对芯片编程和验证的控制,控制状态机(包括JTAG TAP控制状态机和非标准的串行和并行编程控制状态机),对地址指针移位寄存器、数据移位寄存器、边界扫描(Boundary Scan)寄存器等其它移位寄存器组的控制电路。
地址指针移位寄存器组模块包括了移位寄存器,SRAM的字线(Word Line)驱动器,用来驱动字线(Word Line)WL。在图4中,共有N个地址指针移位寄存器,每个驱动一根字线。
数据移位寄存器组模块包括了移位寄存器,SRAM的位线BL(Bit Line)驱动器及回读电路,位线BL是双向的,通常是相位相反的两个:BL和~BL。可通过位线对SRAM单元进行读或写操作。在图4中,共有M个数据移位寄存器,每个联接一根位线(BL和~BL)。
在图4中,每一个位线和字线交叉的位置就有一个SRAM单元。标准的SRAM单元由六个MOS管组成,如图5。
在以上的FPGA编程及验证的电路基础上,图6展示了本发明一种SRAM型FPGA器件单粒子反转探测及纠错的电路的要点。在编程控制模块中增加了单粒子反转探测工作模式,同时增加了一个地址计数器。在从数据移位寄存器回都得路径上增加了校验检测模块,及出错报告信号。
地址计数器用来产生从0到N的数值。编程控制模块在地址指针移位寄存器组中从0位开始,逐位移动地址指针,直到第N位。地址计数器中的数值与其同步。当指针在第n位时,第n位的字线为高,所连的一行SRAM单元被选中,可对这些SRAM进行读和写。其它字线为低。在任何时刻,最多只能有一个字线为高。或者都为低。
校验检测模块可读取从数据移位寄存器移位过来的数据。这些数据是从选中的一行SRAM单元回读的数据。在进行校验时,要基于串行数据算法,对整行数据进行校验。校验算法可以是奇偶(Parity)校验,循环冗余(CRC)校验,错误检查和纠正(ECC)校验等常用算法。
出错报告信号可以用与在校验检测模块发现错误时报告。有两种方式处理。第一种是将出错报告信号接到IO,由系统决定相应的纠错步骤。第二种是向编程控制模块报告,编程控制模块根据地址计数器中的数值,自动执行相应纠错流程。
本发明的另一个要点是利用SRAM阵列中闲置的单元来简化及增强校验算法。
在前面图4中N x M的SRAM阵列中有些SRAM单元室没有被用到的。这在FPGA中是常见的。当这种情况发生时,可以根据所需要的算法对这些单元赋值。从而简化或增强算法电路。
例如做奇偶校验时,事先对一行中“1”的个数统计,当“1”的个数为奇数时,在一个闲置单元赋值“1”,这样总个数就是偶数了;如果“1”的个数为偶数时,在一个闲置单元赋值“0”,这样总个数总保持偶数。在校验时,只要看回读“1”的个数是否是偶数就行了。当然,这是假设单粒子反转的情况。如对多粒子反转校验,可在此基础上应用更复杂的算法。
图7展示了单粒子反转探测工作过程,具体是:
在对FPGA芯片编程结束后,进入工作状态时,首先编程控制模块控制通过地址指针移位寄存器组中从0位开始,逐位移动地址指针,直到第N位,校验检测模块读取当前数据移位寄存器移位过来的行数据,将数据移出并校验,当校验结果正常则地址计算器加1,否则报告错误,启动纠错。
图8展示了纠错流程图,具体为:校验出错,判断是否自动纠错,如果否,则等待系统指令在进行纠错,如果进行自动纠错,则计算出错位置,继而加在所需的行数据,回读校验数据直至正确,再次启动探测流程。
以上所述的本发明的实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神原则之内所作出的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。