一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

具有对可编程逻辑模块自动检纠错功能的FPGA的制作方法

2021-11-06 05:56:00 来源:中国专利 TAG:

具有对可编程逻辑模块自动检纠错功能的fpga
技术领域
1.本发明涉及fpga技术领域,尤其是一种具有对可编程逻辑模块自动检纠错功能的fpga。


背景技术:

2.随着超大规模集成电路技术的发展,fpga芯片(field programmable gate array,现场可编程门阵列)依靠其优越的接口性能、丰富的逻辑和ip资源以及灵活方便的现场可编程能力,在航空航天工程中得到越来越广泛的应用,已成为关键的核心器件。
3.在航空航天工程中应用的fpga芯片的可靠性要求通常较高,但空间辐射环境的空间高能粒子又容易导致单粒子翻转(seu,single event upset)问题而使电路功能出现故障,因此目前通常会采用三模冗余(triple module redundant,tmr)结合片外刷新的方法来对fpga芯片中的配置存储器(cram,configuration random access memory)实现纠错,以提高可靠性:采用tmr方法设计配置存储器中的所有数据移位寄存器(dsr)和地址移位寄存器(asr),也即将一个寄存器复制成三份,采取三选二的表决方式,任意一路寄存器发生翻转出现错误而另外两路寄存器输出正常时仍能保证寄存器内容正确。当发生错误时,重新写入配置比特码流实现纠错。
4.但是现有的上述做法通常仅针对配置存储器中的寄存器进行可靠性设计,防护效果较为有限,而且tmr做法需要占用较大的电路面积,不利于fpga芯片的集成度。


技术实现要素:

5.本发明人针对上述问题及技术需求,提出了一种具有对可编程逻辑模块自动检纠错功能的fpga,本发明的技术方案如下:
6.一种具有对可编程逻辑模块自动检纠错功能的fpga,该fpga包括可编程逻辑模块以及校验纠错器,可编程逻辑模块内部包括若干个可编程逻辑寄存器,每个可编程逻辑寄存器根据时钟信号刷新写入获取到的输入数据;校验纠错器包括校验码生成电路、m个校验码寄存器、校验电路、解码电路以及触发电路:
7.校验码生成电路的n个输入端分别连接对应的n个可编程逻辑寄存器的输入端获取n个输入数据,校验码生成电路的m个输出端分别连接m个校验码寄存器,校验码生成电路对n个输入数据进行ecc编码生成m个校验码,每个校验码寄存器根据校验纠错器对应的可编程逻辑寄存器的时钟信号刷新写入对应的校验码;
8.n个可编程逻辑寄存器以及m个校验码寄存器的输出端均连接到校验电路的输入端,校验电路的输出端连接解码电路的输入端提供校验信号,校验信号用于指示n m个寄存器中存在数据错误的故障寄存器;
9.触发电路连接解码电路的使能端,解码电路根据触发电路的触发使能脉冲生成校验信号对应的具有预定脉冲宽度的n m个翻转信号,并分别输出给n个可编程逻辑寄存器以及m个校验码寄存器控制其中的故障寄存器直接异步翻转内容以纠正错误。
10.其进一步的技术方案为,当校验纠错器对应的可编程逻辑寄存器根据时钟信号刷新写入获取到的输入数据时,触发电路控制解码电路处于无效状态达到预定时长。
11.其进一步的技术方案为,解码电路处于无效状态的预定时长大于校验电路的输入端获取数据至解码电路的输出端产生信号之间的延时。
12.其进一步的技术方案为,无效时长大于翻转信号的脉冲宽度。
13.其进一步的技术方案为,触发电路输出的触发使能脉冲之间至少间隔预定等待时长,预定等待时长大于校验纠错器根据纠错后的数据更新翻转信号的时长。
14.其进一步的技术方案为,校验纠错器还包括定时器,通过定时器控制触发电路输出的触发使能脉冲之间的间隔。
15.其进一步的技术方案为,一个校验纠错器对应的n个可编程逻辑寄存器包含在同一个可编程逻辑模块内,或者,包含在至少两个不同的可编程逻辑模块内。
16.其进一步的技术方案为,一个校验纠错器对应的n个可编程逻辑寄存器受控于同一个时钟信号;
17.或者,一个校验纠错器对应的n个可编程逻辑寄存器受控于至少两个不同的时钟信号,则校验纠错器根据所有的时钟信号进行工作。
18.其进一步的技术方案为,一个校验纠错器对应的n个可编程逻辑寄存器都用于实现用户设计,或者,部分可编程逻辑寄存器用于实现用户设计,则未用于实现用户设计的可编程逻辑寄存器的输入数据恒为无效电平。
19.其进一步的技术方案为,用于实现用户设计的可编程逻辑寄存器的输入数据来自于所属的可编程逻辑模块的内部和/或外部,来自于可编程逻辑模块的内部的输入数据产生于查找表、进位链、数据选择器和触发器中的至少一种。
20.其进一步的技术方案为,校验码生成电路采用的ecc编码为汉明码,且m和n的取值符合相应位数汉明码的编码规则。
21.其进一步的技术方案为,在fpga上电过程未完成、或者码流配置未完成、或者初始化未完成而使得fpga未进入正常工作模式时,校验纠错器处于无效状态;当fpga进入正常工作模式后,校验纠错器进行校验纠错。
22.本发明的有益技术效果是:
23.本技术公开了一种具有对可编程逻辑模块自动检纠错功能的fpga,利用校验纠错器针对可编程逻辑模块内的可编程逻辑寄存器对可编程逻辑进行检纠错,在fpga正常运行过程中,可编程逻辑寄存器根据时钟信号实时更新,校验纠错器可以实时检验纠错,保证可编程逻辑寄存器的内容正确,这种fpga的检验纠错的功能更完善,可靠性更高,而且这种做法相比于三模冗余方法来说大大减少了电路面积,有利于提高电路集成度。
附图说明
24.图1是本技术中校验纠错器与及对应的n个可编程逻辑寄存器的连接示意图。
25.图2是校验纠错器对应的n个可编程逻辑寄存器的输入数据在一个实施例中的来源示意图。
具体实施方式
26.下面结合附图对本发明的具体实施方式做进一步说明。
27.本技术公开了一种具有对可编程逻辑模块自动检纠错功能的fpga,该fpga包含常规的可编程逻辑资源,fpga内部的可编程逻辑资源主要包括可编程资源以及互联资源,可编程资源包括可编程逻辑模块(clb)、bram、iob、dsp和pc等,互联资源包括绕线盒和互联线等。每个可编程逻辑模块clb内包括若干个可编程逻辑寄存器,除此之外,通常还包括查找表(lut)、进位链、数据选择器和触发器等等。
28.本技术的fpga除了包含常规的这些可编程逻辑资源之外,还设计了专门的与可编程逻辑模块(clb)对应的校验纠错器,也即还包括额外增加的硬件资源,校验纠错器是基于常规电路组件制作实现的硬件资源,因此采用常规的fpga制作工艺即可实现。
29.如图1所示,校验纠错器包括校验码生成电路、m个校验码寄存器reg2、校验电路、解码电路以及触发电路,图1以m=4为例。校验码生成电路的n个输入端分别连接对应的n个可编程逻辑寄存器reg1的输入端,如图1以n=8为例,校验码生成电路的m个输出端分别连接m个校验码寄存器,n个可编程逻辑寄存器以及m个校验码寄存器的输出端均连接到校验电路的输入端,校验电路的输出端连接解码电路的输入端。触发电路连接解码电路的使能端,解码电路的输出端连接至n个可编程逻辑寄存器以及m个校验码寄存器。
30.校验纠错器对应n个可编程逻辑寄存器,也对应这n个可编程逻辑寄存器所属的可编程逻辑模块。在一个实施例中,一个校验纠错器对应的n个可编程逻辑寄存器包含在同一个可编程逻辑模块内,则一个校验纠错器对应一个可编程逻辑模块。在另一个实施例中,一个校验纠错器对应的n个可编程逻辑寄存器包含在至少两个不同的可编程逻辑模块内,则一个校验纠错器对应多个不同的可编程逻辑模块,也即可以让多个可编程逻辑模块共用一个校验纠错器,减少电路面积,也减少纠错功能付出的额外代价。另一方面,一个可编程逻辑模块内部的可编程逻辑寄存器对应一个校验纠错器,或者对应多个校验纠错器。
31.在fpga运行过程中,校验纠错器对应的n个可编程逻辑寄存器按照可编程逻辑模块内部可编程逻辑寄存器的常规工作过程刷新写入数据,也即校验纠错器对应的n个可编程逻辑寄存器分别从输入端获取对应的输入信号,然后根据时钟信号clk刷新写入获取到的输入数据,所谓根据时钟信号clk刷新写入根据实际配置一般是指在时钟信号的上升沿或下降沿时将输入数据写入到可编程逻辑寄存器内,并保持直到下个时钟周期时被新的输入数据覆盖。
32.校验纠错器对应的n个可编程逻辑寄存器的输入数据会送入到校验纠错器,具体的送到校验码生成电路的输入端,校验码生成电路的n个输入端获取到n个输入数据后,对n个输入数据进行ecc编码生成m个校验码。其中m和n的取值符合ecc编码的编码规则。在一个实施例中,校验码生成电路采用的ecc编码为汉明码,则m和n的取值符合相应位数汉明码的编码规则,比如常见的n=8、m=4从而符合(8,4)汉明码的编码规则,再比如n=4、m=3符合(4,3)汉明码的编码规则,再比如n=16、m=5符合(16,5)汉明码的编码规则。由于可以多个clb共用一个校验纠错器,因此实际的效果比如可以是一个clb使用一个采用(8,4)编码的校验纠错器,两个clb共用一个采用(8 8,5)编码的校验纠错器,四个clb共用(8 8 8 8,6)编码的校验纠错器等等。
33.每个校验码寄存器根据校验纠错器对应的可编程逻辑寄存器的时钟信号刷新写
入对应的校验码,校验码寄存器刷新写入校验码的含义与可编程逻辑寄存器类似,也即在时钟信号的上升沿或下降沿时刷新写入,因此输入数据和校验码会分别同步分存到可编程逻辑寄存器和校验码寄存器。
34.n个可编程逻辑寄存器输出端的信号和m个校验码寄存器输出端的信号总共形成n m位码被传输到校验电路,校验电路采用与ecc编码匹配的校验电路,比如在采用汉明码的基础上,校验电路一般采用奇偶校验电路。校验电路根据获取到的n m位码生成校验信号(syndrome),校验信号用于指示n m个寄存器中存在数据错误的故障寄存器,故障寄存器可能是可编程逻辑寄存器也可能是校验码寄存器,从而可以实现校验检错的功能。需要说明的是,图1只是输出了电路之间的连接关系,而并不表示n m位码的排布顺序,实际n m位码中各位码的顺序根据编码准则来确定。
35.解码电路可以对校验信号进行解码得到n m位解码结果,每一位解码结果对应n m个寄存器中的一个寄存器,且故障寄存器对应的一位解码结果为有效电平,其余各位的解码结果均为无效电平,比较典型的,无效电平为0、有效电平为1,则可以利用有效电平翻转故障寄存器。由于要用于翻转故障寄存器,因电路考虑,故而利用使能端的触发电路控制解码后信号的波形,将n m位解码结果处理为脉冲形式。触发电路可以采用常见的one

shot电路,其在不使能的时候默认为0,此时解码电路输出无效电平,也即所有寄存器都不翻转,当要使能时,触发电路输出一个预定脉冲宽度的触发使能脉冲使能解码电路,使得解码电路输出校验信号对应的具有预定脉冲宽度的n m个翻转信号,其中与故障寄存器对应的一个翻转信号输出预定脉冲宽度的有效电平,其余翻转信号持续输出无效电平,从而控制n m个寄存器中的故障寄存器直接异步翻转内容以纠正错误、不需要等待时钟信号到来,实现对故障寄存器的纠错。因此在本技术中,在对故障寄存器进行纠错时,纠错更新的内容与时钟信号写入的数据不同,并不是直接重新写入刷新。其中,触发电路输出的触发使能脉冲之间至少间隔预定等待时长,该预定等待时长大于校验纠错器根据纠错后的数据更新翻转信号的时长,从而可以使得对故障寄存器纠错后的数据有时间传到校验纠错器重新进行校验纠错,避免出现连续脉冲导致连续就错的情况。比较典型的做法可以利用定时器来控制,则校验纠错器还包括定时器,通过定时器控制所述触发电路输出的触发使能脉冲之间的间隔。
36.在上述过程中,校验纠错器还需要避免与时钟周期正常写入的输入数据发生冲突,则当校验纠错器对应的可编程逻辑寄存器根据时钟信号刷新写入获取到的输入数据时,触发电路控制解码电路处于无效状态达到预定时长,从而避免翻转信号与时钟写入的数据发生冲突。在一个实施例中,解码电路处于无效状态的预定时长大于校验电路的输入端获取数据至解码电路的输出端产生信号之间的延时,也即需要等到校验纠错器的输出稳定,由于解码电路的输出不稳定时,解码结果是乱的不能用于控制寄存器,所以需要等到校验纠错器的输出也即解码电路的输出稳定。在另一个实施例中,解码电路处于无效时长大于翻转信号的脉冲宽度,以彻底避免冲突发生。
37.如上所述,校验纠错器在工作过程中,校验码寄存器需要根据可编程逻辑寄存器的时钟信号刷新写入数据,触发电路还需要根据时钟信号控制解码电路无效以避免冲突,因此校验纠错器根据其对应的n个可编程逻辑寄存器的时钟信号进行工作。在一个实施例中,一个校验纠错器对应的n个可编程逻辑寄存器受控于同一个时钟信号,则校验纠错器根据一个时钟信号进行工作。在另一个实施例中,一个校验纠错器对应的n个可编程逻辑寄存
器受控于至少两个不同的时钟信号,则校验纠错器根据所有的时钟信号进行工作,比如n个可编程逻辑寄存器中n1个受控于clk1、n2个受控于clk2,则校验码寄存器与n1个可编程逻辑寄存器一起根据clk1进行刷新写入,校验码寄存器还与n2个可编程逻辑寄存器一起根据clk2进行刷新写入,类似的,触发电路在clk1对n1个可编程逻辑寄存器写入数据时控制解码电路处于无效状态,在clk2对n2个可编程逻辑寄存器写入数据时也控制解码电路处于无效状态。
38.在上述方法的应用过程中,一个校验纠错器对应的n个可编程逻辑寄存器都用于实现用户设计,或者,部分可编程逻辑寄存器用于实现用户设计,则未用于实现用户设计的可编程逻辑寄存器的输入数据恒为无效电平也即接0,并不影响上述检纠错过程的实现。
39.用于实现用户设计的可编程逻辑寄存器的输入数据来自于所属的可编程逻辑模块的内部和/或外部,来自于可编程逻辑模块的内部的输入数据产生于查找表、进位链、数据选择器和触发器中的至少一种,n个可编程逻辑寄存器的输入数据的来源可以相同也可以不同,也即可以有些可编程逻辑寄存器的输入数据来自于所在可编程逻辑模块的外部、有些可编程逻辑寄存器的输入数据来自于内部的一个查找表、有些来自于内部的另一个查找表、有些来自于内部的进位链等等。在一个实施例中,一个可编程逻辑寄存器的输入数据来自于的可编程逻辑模块的外部或查找表,则可编程逻辑寄存器的输入端连接到可编程逻辑模块的模块输入口和查找表输出,并经由配置位进行选择实际选用的一路输入数据。如图2所示,以8个可编程逻辑寄存器都位于同一个可编程逻辑模块内,该可编程逻辑模块内有8个六输入查找表lut6

0~lut6

7,各个查找表的输入分别为a、b、c、d、e、f、g、h共8组信号,每组信号的宽度为6位,各个查找表的输出分别为l0~l7。8个可编程逻辑寄存器的输入数据r0~r7有两个来源,一个是模块输入口的输入x0~x7,一个是各个查找表的输出l0~l7,各个可编程逻辑寄存器的输入可经由配置位分别独立选择。
40.在实际应用时,在fpga上电过程未完成、或者码流配置未完成、或者初始化未完成而使得fpga未进入正常工作模式时,校验纠错器处于无效状态。当fpga进入正常工作模式后,校验纠错器开始工作、并按照如上记载的方法进行校验纠错。
41.在一个实例中,校验纠错器对应8个可编程逻辑寄存器,在采用(8.4)汉明码的基础上,校验码生成电路对8个可编程逻辑寄存器的输入数据r0,r1,r2,r3,r4,r5,r6,r7产生4个校验码p1,p2,p4,p8,8个输入数据和4个校验码形成12位编码记为{c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12},其组成方式为{p1,p2,r0,p4,r1,r2,r3,p8,r4,r5,r6,r7},亦即c1=p1、c2=p2、c3=r0、c4=p4、c5=r1、c6=r2、c7=r3、c8=p8、c9=r4、c10=r5、c11=r6、c12=r7。编码时,产生4个校验码的方法为:选取p1使得xor(c1,c3,c5,c7,c9,c11)的结果为0(偶数)亦即,p1=c1=xor(c3,c5,c7,c9,c11),选取p2使得xor(c2,c3,c6,c7,c10,c11)的结果为0(偶数)亦即,p2=c2=xor(c3,c6,c7,c10,c11),选取p4使得xor(c4,c5,c6,c7,c12)的结果为0(偶数)亦即,p4=c4=xor(c5,c6,c7,c12),选取p8使得xor(c8,c9,c10,c11,c12)的结果为0(偶数)亦即,p8=c8=xor(c9,c10,c11,c12)。这12位编码在时钟信号的控制下写入寄存器。
42.在校验纠错时,检查被写入的12位编码{c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12},可编程逻辑寄存器的输出q0,q1,q2,q3,q4,q5,q6,q7与校验寄存器的输出p1,p2,p4,p8,其组成方式为{p1,p2,q0,p4,q1,q2,q3,p8,q4,q5,q6,q7},亦即c1=p1、c2=p2、c3=
q0、c4=p4、c5=q1、c6=q2、c7=q3、c8=p8、c9=q4、c10=q5、c11=q6、c12=q7。此时p8,p4,p2,p1可看作校验信号(syndrome),若此4位都为0,则表示所有内容正确无错,否则这4位信号指示存在数据错误的故障寄存器,比如p8,p4,p2,p1=0110则表示c6对应的寄存器出错为故障寄存器。
43.将校验信号p8,p4,p2,p1输入到4到12位的解码器,该解码器在触发使能脉冲作用下生成{f0,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11}的翻转信号,只有对应故障寄存器的一位翻转信号为高电平、其余均为0。比如在上述举例中,c6对应故障寄存器,则输出的翻转信号只有对应的f6这一位为1,其余都为0,输出的翻转信号为{0,0,0,0,0,0,1,0,0,0,0,0}。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献