lird[12rd[13rd[16rd[17] ~d[19]~d[20]~d[22]~d[24]~d[25]~d[26]~d[28]~d[31] r[6]=r[irr[2rr[4rr[5rr[7rr[9rr[l0rr[lirr[13rd[l]~d[5rd[6rd[9r d[l0rd[12rd[13rd[14rd[17rd[18] ~d[20]~d[21]~d[23]~d[25]~d[26]~d[27]~d[29] r[7]=r[2] ~r[3] ~r[5] ~r[6] ~r[8] ~r[10] 'r [11] ~r[12] ~r[14] 'd[2] 'd[6] 'd[7] 'd[10 rd[lird[13rd[14rd[15rd[18rd[19] ~d[21]~d[22]~d[24]~d[26]~d[27]~d[28]~d[30] r[8]=r[0] ~r[3] ~r[4] ~r[6] ~r[7] ~r[9] ~r[ll] ~r[12] ~r[13] ~r[15] 'd[3] 'd[7] 'd[8] ~(1[11Γ(1[12Γ(1[14Γ(1[15Γ(1[16Γ(1[19] ~d[20]~d[22]~d[23]~d[25]~d[27]~d[28]~d[29]~d[31] r[9]=r[0] ~r[l] ~r[4] ~r[5] ~r[7] ~r[8] ~r[10] ~r[12] ~r[13] ~r[14] 'd[4] 'd[8] 'd[9] ~(1[12Γ(1[13Γ(1[15Γ(1[16Γ(1[17Γ(1[20] ~d[21]~d[23]~d[24]~d[26]~d[28]~d[29]~d[30] r[10]=r[0rr[irr[2rr[5rr[6rr[8rr[9rr[lirr[13rr[14rr[15rd[5rd[9 rd[l0rd[13rd[14rd[16rd[17rd[18] ~d[21]~d[22]~d[24]~d[25]~d[27]~d[29]~d[30]~d[31] Γ[11]=γ[1]Μ2]Μ3]Μ6]Μ7]Μ9]Μ10]Μ12]Μ14]Μ15Γ(1[6Γ(1[10Γ(1[ 11Γ(1[14Γ(1[15Γ(1[17Γ(1[18Γ(1[1%~(1[22] ~d[23]~d[25]~d[26]~d[28]~d[30]~d[31] r[12]=r[0] ~r[2] 'r [6] ~r[7] ~r[8] ~r[12] ~r[13] 'r [15] 'd[0] 'd[4] 'd[7] 'd[8] 'd[15 ]'d[16]'d[18]'d[22]'d[23]'d[24]'d[28] 'd[29]'d[31] r[13]=r[0] ~r[l] 'r [3] ~r[7] ~r[8] ~r[9] 'r [13] ~r[14] 'd[l] 'd[5] 'd[8] 'd[9] 'd[16] 'd[17]'d[19]'d[23]'d[24]'d[25]'d[29] ~d[30] r[14]=r[l] ~r[2] 'r [4] ~r[8] ~r[9] ~r[10] ~r[14] 'r [15] 'd[2] 'd[6] 'd[9] 'd[10] 'd[l 7]~d[18]~d[20]~d[24]~d[25]~d[26]~d[30] ~d[31] r[15]=r[2rr[3rr[5rr[9rr[l0rr[lirr[15rd[3rd[7rd[l0rd[lird[18rd
[19]'d[21]'d[25]'d[26]'d[27] 'd[31] 其中,'表示异或运算。输入数据是32位有效数据。
[0017] 本发明的设计中,CRC校验结果是可以保持的,即只要mcu没有发出清除指令,则 校验结果寄存器保持上一次校验的结果并将此结果用于下一次的计算,所以理论上可以支 持任意η个32位数据的连续校验,实际意义为可以对任意长度为32的整数倍的数据进行 校验。
[0018] 其系统框图如图2所示。
[0019] 如图2所示,mcu通过数据总线将要校验的数据输入到32位数据输入寄存器,数 据写入完成后,CRC并行计算模块从输入寄存器中取出数据进行计算,然后将校验结果输入 到校验结果寄存器,整个计算在一个周期内完成,此时若mcu需要查看校验结果,可对校验 结果寄存器进行读请求。校验结果寄存器用来保存校验的结果,同时在需要反馈的时候将 校验结果提供给计算模块用于下一次的校验计算。
[0020] 对于校验结果寄存器中保存的校验输出,mcu可以通过数据接口将其读出然后 与数据源中的校验码进行对比,或者将校验码输入到校验模块进行一次校验(校验码为16 位,低位补零形成32位数据源),此时得到的校验结果为0。
[0021] CRC16校验拥有足够高的校验准确率,在没有重复率的情况下,CRC16可以100%检 测出奇数个错误bit导致的错误,以及长度小于16的突发性错误,而在长度大于16的突发 性错误中,只有新的数值与原数值相差正好可以被CRC_CCITT的16位公式整除才不会被检 测到,这个概率非常低。
[0022] 在计算上,本发明采用并行计算方式,可以在一个周期之内,对32位并行输入数 据进行校验计算,这无疑对SoC系统中苛刻的时序需求提供了很大程度的支持,是32位mcu 系统中非常有用的校验方式。
[0023] 相比软件CRC方式,本发明由硬件电路实现校验的方式具有更快的速度,更高的 稳定性,计算速度可提升的空间也很大,同时,占用的资源也更少。
【主权项】
1. 一种SoC系统的校验方法,其特征在于,包括以下步骤: 1) 单片机mcu通过数据总线将要校验的数据输入到32位数据输入寄存器; 2. CRC并行计算模块从输入寄存器中取出数据; 3. CRC并行计算模块进行基于CRC_CCITT标准的CRC16校验计算; 4) 并行计算模块将校验结果输入到校验结果寄存器; 5) 校验结果寄存器反馈上一次的计算结果给计算模块进行下一次计算; 6) 校验结果寄存器将结果返回给mcu数据总线。2. 如权利要求1所述的一种SoC系统的校验方法,其特征在于:所述CRC16校验计算 公式为:CRC_CCITT=X16+X12+X5+1。
【专利摘要】本发明提供一种SoC系统的校验方法,其特征在于,包括以下步骤:1)单片机mcu通过数据总线将要校验的数据输入到32位数据输入寄存器;2)CRC并行计算模块从输入寄存器中取出数据;3)CRC并行计算模块进行基于CRC_CCITT标准的CRC16校验计算;4)并行计算模块将校验结果输入到校验结果寄存器;5)校验结果寄存器反馈上一次的计算结果给计算模块进行下一次计算;6)校验结果寄存器将结果返回给mcu数据总线,所述一种SoC系统的校验方法具有更快的速度,更高的稳定性,计算速度可提升的空间也很大,且占用的资源也更少。
【IPC分类】G06F11/10
【公开号】CN105653390
【申请号】
【发明人】周佩, 王芬芬
【申请人】无锡华润矽科微电子有限公司
【公开日】2016年6月8日
【申请日】2014年11月10日