当前位置: 首页 > 专利查询>复旦大学专利>正文

一种流水线型FPGA回读帧ECC电路制造技术

技术编号:7579235 阅读:257 留言:0更新日期:2012-07-19 03:46
本发明专利技术属于FPGA器件技术领域,具体为一种FPGA回读帧ECC检错纠错电路。该电路利用FPGA回读数据总线的特征采用流水线结构将整体的汉明码解码计算分级实现,并根据FPGA单帧回读有效数据的个数来决定流水线的级数,由流水线的级数以及回读总线位宽来决定校验位的个数,在FPGA回读帧数据的同时即进行单帧数据的ECC校验。将汉明码校验的整体计算转换为分级计算实现,避免了额外的用于存储FPGA回读帧数据的资源,整体的路径延时也会减少,因而可以提高电路的计算速度。

【技术实现步骤摘要】

本专利技术属于FPGA配置安全
,具体为一种流水线的FPGA回读帧ECC( Error Correcting Code)汉明码校验检错纠错电路。
技术介绍
传统的FPGA (可编程逻辑门阵列)下载一般采用CRC (循环冗余校验)进行配置数据的校验,以检验FPGA的配置数据是否正确下载到编程点。但随着FPGA的不断开发和应用,例如SRAM型FPGA在太空中内部编程点容易因射线粒子的冲击而发生翻转,因此很有必要对编程点内的数据进行回读,以纠正发生错误的编程点。汉明码是1950年由美国贝尔实验室提出来的,是第一个设计用来纠正错误的线性分组码,汉明码及其变型已广泛应用于数字通信和数据存储系统中作为差错控制码。汉明码通过在通信的数据信息中插入一定的监督码元来检测和纠正发生错误的信息位。FPGA的ECC (错误检测与纠正)校验电路是对回读的单帧数据进行汉明译码,传统的方法是先存储回读的单帧数据然后再进行校验,这种方法会造成额外的存储资源开销, 而且把一帧回读数据全部同时进行异或运算会降低整个配置电路的速度。本专利技术所采用的流水线型帧ECC电路充分利用FPGA回读数据的特征,在FPGA回读帧数据的同时即完成单帧数据的ECC校验,而且也不用额外的存储资源,每一级流水线的延时相对于整个电路的延时而言是非常小的,不会影响到整个配置电路的速度。
技术实现思路
本专利技术目的在于提供一种高速、低功耗、低面积的FPGA回读帧ECC电路。本专利技术提供的FPGA回读帧ECC电路,可以根据不同的回读总线位宽,回读数据帧的长度来灵活地调整流水线的级数以及每级流水线的具体计算内容。设回读总线位宽为M 位,每一帧包含N个有效数据,则FPGA回读帧ECC电路设计为N级流水线,每级流水线的输入数据为M位(如图I所示);生成k个校验位,k的值由公式(I)决定。每一级共用相同的时钟、复位、数据端口。每一级的输出作为下一级的输入,第N级的输出作为整个ECC电路的输出。以回读总线位宽为32位,每一帧包含40个有效数据为例(即M=32,N=40),则电路共需要40级流水线,每一级流水线输入数据为32位。通过公式(I)计算可得共产生12位校验位,每一级流水线在使能有效的情况下对输入数据进行一定的异或运算,产生12位临时的校验位。这12位临时校验位传输给下一级,参与下一级的计算,以此顺序往后传递,直到最后一级(第40级)计算完成,第40级计算输出的12位校验位作为整体汉明码校验计算结果(如图I所示)。本专利技术的FPGA回读帧ECC电路中,单级流水线的计算示意图如图2所示,每一级包含k个触发器以及相应的组合逻辑,组合逻辑由异或计算单元组成,主要用于对上一级的校验位输出以及输入的M位数据进行异或运算,每一个校验位所对应的组合逻辑都不相同,但是相同位置的校验位是随着流水线传递的。因为第一级流水线不接收上一级流水线的输入,所以第一级流水线的输入端没有来自上一级的P,除第一级流水线以外,每一级流水线都包含M位的数据输入位,以及K位的上一级校验位输入,因为有了上一级校验位的输入,这样才能保证计算的连续性和传递性。每一级流水线都是完成特定的异或计算功能,我们把汉明码校验计算的某些与当前流水线级相关的位放在当前流水线里面计算,这样就把整体的计算分摊到了每一级去,而且计算结果往后传递,总能够保证最后计算的完整性。除此以外每一级流水线还包括必要的使能控制端,时钟,复位等信号,每一级流水线的使能端都不相同,通过一个全局移位寄存器来使能特定的流水线级。图3是针对图I的输入端口给出的一个工作时序图,复位信号Rst低有效,时钟 Clk信号上升沿采样使能En信号和数据Data 。如图3所示,时钟上升沿采样到第一个En有效之后启动第一级流水线开始计算,第一级流水线对当前的输入数据进行异或运算,计算之后的结果(临时校验位)传递给第二级流水线。在时钟上升沿采样到第二个 En有效之后启动第二级流水线,第二级流水线把第一级计算的结果连同当前所输入的有效数据一同进行异或计算,产生新的临时校验位传递给第三级。以此往后传递直到最后一级计算完成,使能Ecc_Valid信号有效,则整个汉明码的计算过程就结束。采用流水线的方式最终生成校验位的数量k是不会发生变化的,实际上就是对于每一个校验位把高达几百位的异或计算分成N次来计算,计算总的结果是不会变化的,每一级的输出的宽度都是k,k的计算满足以下公式2k-1≥M*N+K其中,M为回读总线位宽,N为有效数据个数,k为校验位个数。采用这样的校验位数能纠正一位错误,检测两位及两位以上的错误。本专利技术的实现原理如图4所示,图中是以M=32,N=40,k=12为例进行的说明, PO-Pll表示校验位,D0-D31表示数据位。图中总共包含40个有效数据,正常的汉明码校验计算是把所有的数据位预先准备好然后再直接生成校验位,本专利技术采用流水线的方式将每一个有效数据(图4中的D0-D31)按照先后顺序依次放入40级流水线里面进行计算,如第一个有效数据(对应图4中的编号3,5,6,7,9-15,17-31,33-38)进入第一级参与运算,同时把结果传输给第二级,第二个有效数据(对应图4中的编号39-63,65-71)进入第二级流水线参与运算,同时把结果传输给第三级,并以此类推,直到最后一级计算完成,整个汉明码计算就结束了。本专利技术采用了流水线结构的ECC校验电路,能够避免帧数据存储所造成的存储资源开销,把几百位的异或计算分级实现,整个ECC电路的延时就会小很多,采用这种设计可以在FPGA回读的过程中就完成计算。因此,这样的ECC电路具有高速,低功耗,低面积特性。附图说明图I为ECC电路的整体结构视图,共有N级,输入位宽为M,生成k个校验位,k的值由公式(I)决定。每一级共用相同的时钟、复位、数据端口。每一级的输出作为下一级的输入,第N级的输出作为整个ECC电路的输出。图2为单级电路结构,每一级包含k个触发器以及相应的组合逻辑,组合逻辑由异或计算单元组成,主要对上一级的校验位输出以及输入的M位数据进行异或运算,每一个校验位所对应的组合逻辑都不相同,但是相同位置的校验位是随着流水线传递的。图3为一个全局操作时序图,Rst信号为低有效,En信号为高有效,Ecc_Valid 信号高有效指示整个帧ECC过程是否结束,在完整的输入一帧数据之后Parity 输出校验后的数据,并且ECC_Valid拉高一个周期指示输出有效,中间的操作可以通过禁止使能位暂停。图4是在M=32,N=40,k=12情况下的ECC流水线实现原理图,图中小方格上方的PO-Pll表示校验位,小方格下方的D0-D31表示数据位,D0-D31刚好表示一个有效数据, N=40表示总共有40个有效数据,图4表示一个整体的汉明码校验的数据位与校验位的排列分布情况。具体实施例方式整个ECC电路是在FPGA回读过程中开启工作的,FPGA编程下载电路执行回读命令之后,FPGA内部编程点数据便以帧为单位从回读总线上往用户接口输出,帧ECC电路也伴随着数据的回读开始进行校验。但是其不影响整个配置电路,只是通过检测回读数据来指示回读数据是否发生了错误。下面以N=40,M=32,即FPGA回读总线位宽为32位,每帧包含40个有效数据为例进行说明。本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:毛劲松来金梅周灏王元
申请(专利权)人:复旦大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术