一种SoC系统的校验方法

文档序号:9887493阅读:178来源:国知局
一种SoC系统的校验方法
【技术领域】
[0001] 本发明设计数字通信技术领域,尤其是设计一种s〇c系统的校验方法。
【背景技术】
[0002] 在数据传输系统中,由于通信线路的不稳定,外界环境的干扰,仪器的故障等原 因,接收端收到的数据常常会有一定的错误,这些错误的信号如果被正常采用,会产生意想 不到的后果,有些时候甚至会造成巨大的损失。因此,引入校验系统非常有必要。SoC系统中 常用的校验方式有很多,简单的例如奇偶校验,但对于大量的数据,高精度检错的需求情况 下,CRC校验是比较常用的校验方式。CRC校验全称循环冗余校验算法(Cyclic Redundancy Check),简称为CRC,是一种可以将校验结果反复迭代直至最终结果输出的校验方式。CRC 校验算法以具有高性能、简单、易于实现等优点在通讯系统中得到了广泛的应用。
[0003] 通常情况下,CRC采用的是串行计算方式,即校验数据以bit为单位逐位输入进行 校验,每bit进行一次计算,待数据全部计算完成即得到校验结果,但是在SoC资源蓬勃发 展的今天,mcu处理能力不断在上升,数据位宽从8位到16位32位不停的发展,同时存储 设备也不断的扩大,数据校验所需要进行的计算量也在不断的上升,而SoC系统严格的时 序需求,又同时对计算的速度提出了很高的要求。因此,应用于SoC系统的并行CRC校验非 常必要。在SoC系统中,还有一种方式是在mcu软件中增加 CRC校验的功能,数据在mcu中 进行校验,不过这种方法仍有一定的缺点,例如mcu处理资源的消耗、计算能力提升的困难 等。现有的SoC校验方式中,奇偶校验过于简单,只能应用于小量数据的校验,而且校验的 出错率相对较高,串行CRC校验的准确率有了保证,但是计算效率比较低,如果想要提高只 能提尚fe验t旲块的时钟频率。
[0004] 针对以上缺点,本发明设计对于32位并行输入的基于CRC_CCITT的CRC16校验方 法,CRC16校验拥有足够高的校验准确率,在没有重复率的情况下,CRC16可以100%检测出 奇数个错误bit导致的错误,以及长度小于16的突发性错误,而在长度大于16的突发性 错误中,只有新的数值与原数值相差正好可以被CRC_CCITT的16位公式整除才不会被检 测到,这个概率非常低。在计算上,本发明采用并行计算方式,可以在一个周期之内,对32 位并行输入数据进行校验计算,这无疑对SoC系统中苛刻的时序需求提供了很大程度的支 持,是32位mcu系统中非常有用的校验方式。本发明的全部功能由硬件电路实现,相比软件 CRC方式,本发明的方式具有更快的速度,更高的稳定性,计算速度可提升的空间也很大,同 时,占用的资源也更少。

【发明内容】

[0005] 本发明的目的是克服了上述现有技术的缺点,提供了具有更快的速度,更高的稳 定性,计算速度可提升的空间也很大,且占用的资源也更少的一种SoC系统的校验方法。
[0006] 为了实现上述目的,本发明是通过如下的技术方案来实现:一种SoC系统的校验 方法,其特征在于,包括以下步骤: 1) 单片机mcu通过数据总线将要校验的数据输入到32位数据输入寄存器; 2) CRC并行计算模块从输入寄存器中取出数据; 3) CRC并行计算模块进行基于CRC_CCITT标准的CRC16校验计算; 4) 并行计算模块将校验结果输入到校验结果寄存器; 5) 校验结果寄存器反馈上一次的计算结果给计算模块进行下一次计算; 6) 校验结果寄存器将结果返回给mcu数据总线。。
[0007] 进一步地,所述 CRC16 校验计算公式为:CRC_CCITT=X16+X12+X5+1。
[0008] 采用本发明的一种SoC系统的校验方法,具有如下有益效果: (1)、本发明设计对于32位并行输入的基于CRC_CCITT的CRC16校验方法,CRC16校验 拥有足够高的校验准确率,在没有重复率的情况下,CRC16可以100%检测出奇数个错误bit 导致的错误,以及长度小于16的突发性错误,而在长度大于16的突发性错误中,只有新的 数值与原数值相差正好可以被CRC_CCITT的16位公式整除才不会被检测到,这个概率非常 低。
[0009] (2)、在计算上,本发明采用并行计算方式,可以在一个周期之内,对32位并行输 入数据进行校验计算,这无疑对SoC系统中苛刻的时序需求提供了很大程度的支持,是32 位mcu系统中非常有用的校验方式。
[0010] (3)、本发明的全部功能由硬件电路实现,相比软件CRC方式,本发明的方式具有 更快的速度,更高的稳定性,计算速度可提升的空间也很大,同时,占用的资源也更少。
【附图说明】
[0011] 图1为通信计算公式串行计算的框图。
[0012] 图2为CRC校验系统框图。
【具体实施方式】
[0013] 为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的 描述。
[0014] 请参阅图1至图2所示,本发明的CRC设计采用的是CRC_CCITT,它是国际上通常 采用的通信校验公式。其校验公式如下: CRC_CCITT=X16+X12+X5+1 其串行计算的框图如图1所示。
[0015] 其对应bit的迭代公式如下:
其中i表示对应于CRC输出的第i位,j表示第j次数据输入,表示第j次校验输入 的数据,表示CRC_CCITT中第i位的多项式系数。数据data_in从高位到低位依次输入, 可以看出,串行计算所需要的时间与数据的长度成正比。
[0016] 若采用并行计算,依串行迭代公式,我们可以计算得到并行校验的计算公式: 设输入的32位数据为d,CRC校验的16位寄存器的保持结果为r,则一个周期内计算出 校验结果的计算公式如下: r[0]=r[3rr[4rr[6rr[l0rr[lirr[12rd[0rd[4rd[8rd[lird[12rd[19rd[ 20] 'd[22]'d[26]'d[27]'d[28] r[l]=r[4rr[5rr[7rr[lirr[12rr[13rd[ird[5rd[9rd[12rd[13rd[20rd[ 21] 'd[23]'d[27]'d[28]'d[29] r[2]=r[5rr[6rr[8rr[12rr[13rr[14rd[2rd[6rd[l0rd[13rd[14rd[2ird
[22] ~d[24]~d[28]~d[29]~d[30] r[3]=r[6rr[7rr[9rr[13rr[14rr[15rd[3rd[7rd[lird[14rd[15rd[22rd
[23] ~d[25]~d[29]~d[30]~d[31] r[4]=r[0rr[7rr[8rr[l0rr[14rr[15rd[4rd[8rd[12rd[15rd[16rd[23rd
[24] 'd[26]'d[30]'d[31] r[5]=r[0] ~r[l] ~r[3] ~r[4] ~r[6] ~r[8] ~r[9] ~r[10] ~r[12] ~r[15] 'd[0] 'd[4] 'd[5]' d[8rd[9rd[
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1