一种用于SRAM型FPGA配置刷新的CRC校验方法技术

技术编号:11255155 阅读:241 留言:0更新日期:2015-04-02 03:44
一种用于SRAM型FPGA配置刷新的CRC校验方法,通过对SRAM型FPGA配置文件格式、存储形式和故障模式的研究,采用对SRAM型FPGA回读配置帧实时计算与PROM内预先存储的CRC校验码比对的方式,提出并实现了一种用于SRAM型FPGA配置刷新的CRC校验方法。本发明专利技术方法采用CRC校验码的形式,实现了FPGA配置信息校验的器件无关性,同时设置了使能标志和获取标志,实现了不同速率、大数据量校验的应用需求,在回读过程中实时完成回读数据的CRC校验,达到了节省存储资源与处理时间的目的。另外本发明专利技术方法使用的基于查表的字节型CRC算法,进行资源独立划分和管理,快速高效,提升了运算速度和工作频率。

【技术实现步骤摘要】

本专利技术涉及一种用于SRAM型FPGA配置刷新的CRC校验方法,特别是一种在有限逻辑资源条件下,对SRAM型FPGA配置文件快速回读并实时校验计算生成的CRC码的方法。
技术介绍
航天飞行试验器搭载子系统SoC中心控制单元中SOC为国内首次尝试在空间飞行器控制计算机中使用SRAM型FPGA,由于SRAM型FPGA易受单粒子效应影响产生错误,对可靠性有较高要求的宇航应用须进行配置文件动态刷新及回读检错,使得SRAM型FPGA回读校验技术为其中关键和新技术之一,全文回读比对需要耗费大量存储空间,不适于软硬件资源受限的宇航任务应用。同时,由于FPGA内部固有检错资源的实现方式未公开,故而使用固有检错资源的可靠性、安全性很难验证。FPGA配置的成败决定SOC系统能否正常工作,因此确保配置数据校验决策的校验编码设计技术至关重要。CRC的检错能力极强,开销小,容易实现,综合考虑远远优于奇偶校验及算术和校验等方式,已经广泛的应用在网络通信、无线通信、图像传输、数据转换等很多领域。
技术实现思路
本专利技术解决的技术问题是:克服现有技术的不足,通过对SRAM型FPGA配置文件格式、存储形式和故障模式的研究,对SRAM型FPGA回读配置帧实时计算并与PROM内预先存储的CRC校验码进行比对,提供了一种用于SRAM型FPGA配置刷新的CRC校验方法。本专利技术的技术解决方案是:一种用于SRAM型FPGA配置刷新的CRC校验方法,包括如下步骤:(1)将PROM中CLB配置数据、BRAM数据一次性加载至SRAM型FPGA;所述CLB配置数据为控制SRAM型FPGA中电路通断的数据;所述BRAM数据为SRAM型FPGA中初始化寄存器的数据;(2)再次读取PROM中的CLB配置数据加载到SRAM型FPGA中;(3)回读SRAM型FPGA中当前的CLB配置数据后根据配置帧划分的数据长度进行配置帧划分并进行帧号计数;(4)根据帧号依次计算配置帧的CRC校验码;(5)在每一配置帧的CRC校验码计算完成后,依据该配置帧的帧号从PROM中的FPGA配置文件数据中搜索对应配置帧的CRC校验码,并进行比对;所述FPGA配置文件数据包括CLB配置数据、BRAM数据、配置帧划分的数据长度、配置帧划分的帧号和对应CRC校验码;(6)如果比对错误,则转入步骤(1),如果正确,转入步骤(7);(7)判断当前配置帧是否为当前CLB数据的最后一帧,如果是最后一帧,则配置刷新CRC校验过程完成,否则转到步骤(4)计算下一配置帧的CRC校验码。所述步骤(4)中计算配置帧的CRC校验码的方法包括如下步骤:(41)依次回读当前配置帧中字节数据crc_data_i(7:0)并逆序赋值给in_bit(0:7);(42)设置16位的CRC校验缓存寄存器crc_temp,当上电复位或CRC功能禁止时,16位的CRC校验缓存寄存器crc_temp设置为X\FFFF\;(43)将crc_temp(15)与in_bit(7)进行异或运算并将运算结果赋给crc_next(7),将crc_temp(14)与in_bit(6)进行异或运算并将运算结果赋给crc_next(6),将crc_temp(13)与in_bit(5)进行异或运算并将运算结果赋给crc_next(5),将crc_temp(12)与in_bit(4)进行异或运算并将运算结果赋给crc_next(4),将crc_temp(15)、in_bit(7)、crc_temp(11)、in_bit(3)进行异或运算并将运算结果赋给crc_next(3),将crc_temp(14)、in_bit(6)、crc_temp(10)、in_bit(2)进行异或运算并将运算结果赋给crc_next(2),将crc_temp(13)、in_bit(5)、crc_temp(9)、in_bit(1)进行异或运算并将运算结果赋给crc_next(1)将crc_temp(12)、in_bit(4)、crc_temp(8)、in_bit(0)进行异或运算并将运算结果赋给crc_next(0);所述crc_next为CRC迁移状态寄存器,crc_next(j)表示迁移状态寄存器crc_next的第j位的值,j=0,1,2,3,,,7;所述crc_temp(k)表示校验缓存寄存器crc_temp的第k位的值,k=0,1,2,3,,,15;所述in_bit(j)代表数据in_bit(0:7)的第j位的值,j=0,1,2,3,,,7;(44)设置CRC掩码参数寄存器T1-T8,判断如果crc_next(7)='1',则CRC掩码参数寄存器T1赋值为X\1080\,否则赋值为X\0000\,如果crc_next(6)='1',则CRC掩码参数寄存器T2赋值为X\0840\,否则赋值为X\0000\,如果crc_next(5)='1',则CRC掩码参数寄存器T3赋值为X\0420\,否则赋值为X\0000\,如果crc_next(4)='1',则CRC掩码参数寄存器T4赋值为X\0210\,否则赋值为X\0000\,如果crc_next(3)='1',则CRC掩码参数寄存器T5赋值为X\8108\,否则赋值为X\0000\,如果crc_next(2)='1',则CRC掩码参数寄存器T6赋值为X\4084\,否则赋值为X\0000\,如果若crc_next(1)='1',则CRC掩码参数寄存器T7赋值为X\2042\,否则赋值为X\0000\,如果crc_next(0)='1',则CRC掩码参数寄存器T8赋值为X\1021\,否则赋值为X\0000\;(45)将CRC掩码参数寄存器T1-T8进行按位异或运算,并将得到的十六位运算结果赋值给crc_xor;(46)将校验缓存寄存器crc_temp左移八位,与crc_xor进行按位异或运算,并将运算结果赋值给检验缓存寄存器crc_temp;(47)将crc_temp(15:8)按位取反,然后逆序输出给crc_data_o(8:15),将crc_temp(7:0)按位取反,然后逆序输出给crc_data_o(0:7),最后将crc_data_o作为校验结果输出。本专利技术与现有技术相比的优点在于:(1)本专利技术方法采用CRC校验码的形式,实现了FPGA配置信息校验的器件无关性,使得内部不具备检错资源的FPGA以及定制的ASIC也能实现对配置文件的检错;(2)本专利技术方法设置了使能标志和获取标志,具备多周期本文档来自技高网...

【技术保护点】
一种用于SRAM型FPGA配置刷新的CRC校验方法,其特征在于包括如下步骤:(1)将PROM中CLB配置数据、BRAM数据一次性加载至SRAM型FPGA;所述CLB配置数据为控制SRAM型FPGA中电路通断的数据;所述BRAM数据为SRAM型FPGA中初始化寄存器的数据;(2)再次读取PROM中的CLB配置数据加载到SRAM型FPGA中;(3)回读SRAM型FPGA中当前的CLB配置数据后根据配置帧划分的数据长度进行配置帧划分并进行帧号计数;(4)根据帧号依次计算配置帧的CRC校验码;(5)在每一配置帧的CRC校验码计算完成后,依据该配置帧的帧号从PROM中的FPGA配置文件数据中搜索对应配置帧的CRC校验码,并进行比对;所述FPGA配置文件数据包括CLB配置数据、BRAM数据、配置帧划分的数据长度、配置帧划分的帧号和对应CRC校验码;(6)如果比对错误,则转入步骤(1),如果正确,转入步骤(7);(7)判断当前配置帧是否为当前CLB数据的最后一帧,如果是最后一帧,则配置刷新CRC校验过程完成,否则转到步骤(4)计算下一配置帧的CRC校验码。

【技术特征摘要】
1.一种用于SRAM型FPGA配置刷新的CRC校验方法,其特征在于包
括如下步骤:
(1)将PROM中CLB配置数据、BRAM数据一次性加载至SRAM型
FPGA;所述CLB配置数据为控制SRAM型FPGA中电路通断的数据;所述
BRAM数据为SRAM型FPGA中初始化寄存器的数据;
(2)再次读取PROM中的CLB配置数据加载到SRAM型FPGA中;
(3)回读SRAM型FPGA中当前的CLB配置数据后根据配置帧划分的
数据长度进行配置帧划分并进行帧号计数;
(4)根据帧号依次计算配置帧的CRC校验码;
(5)在每一配置帧的CRC校验码计算完成后,依据该配置帧的帧号从
PROM中的FPGA配置文件数据中搜索对应配置帧的CRC校验码,并进行比
对;所述FPGA配置文件数据包括CLB配置数据、BRAM数据、配置帧划分
的数据长度、配置帧划分的帧号和对应CRC校验码;
(6)如果比对错误,则转入步骤(1),如果正确,转入步骤(7);
(7)判断当前配置帧是否为当前CLB数据的最后一帧,如果是最后一帧,
则配置刷新CRC校验过程完成,否则转到步骤(4)计算下一配置帧的CRC
校验码。
2.根据权利要求1所述的一种用于SRAM型FPGA配置刷新的CRC校
验方法,其特征在于:所述步骤(4)中计算配置帧的CRC校验码的方法包括
如下步骤:
(41)依次回读当前配置帧中字节数据crc_data_i(7:0)并逆序赋值给
in_bit(0:7);
(42)设置16位的CRC校验缓存寄存器crc_temp,当上电复位或CRC
功能禁止时,16位的CRC校验缓存寄存器crc_temp设置为X\FFFF\;
(43)将crc_temp(15)与in_bit(7)进行异或运算并将运算结果赋给

\tcrc_next(7),将crc_temp(14)与in_bit(6)进行异或运算并将运算结果赋给
crc_next(6),将crc_temp(13)与in_bit(5)进行异或运算并将运算结果赋给
crc_next(5),将crc_temp(12)与in_bit(4)进行异或运算并将运算结果赋给
crc_next(4),将crc_temp(15)、in_bit(7)、crc_temp(11)、in_bit(3)进行异或运
算并将运算结果赋给crc_next(3),将crc_temp(14)、in_bit(6)、crc_temp(10)、
in_bit(2)进行异或运算...

【专利技术属性】
技术研发人员:叶有时杨孟飞孙强施蕾赵云富熊军董暘暘胡洪凯刘波吴一帆杨桦
申请(专利权)人:北京控制工程研究所
类型:发明
国别省市:北京;11

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

1