CN105099466B - 一种用于128位并行数据的crc校验矩阵生成方法 - Google Patents
一种用于128位并行数据的crc校验矩阵生成方法 Download PDFInfo
- Publication number
- CN105099466B CN105099466B CN201510504163.8A CN201510504163A CN105099466B CN 105099466 B CN105099466 B CN 105099466B CN 201510504163 A CN201510504163 A CN 201510504163A CN 105099466 B CN105099466 B CN 105099466B
- Authority
- CN
- China
- Prior art keywords
- msub
- mrow
- msubsup
- circleplus
- msup
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明提供一种用于128位并行数据的CRC校验矩阵生成方法,减少了级联结构带来的链路延迟,实现高速串行通信中接收或发送数据的实时校验,用于128位并行数据的CRC校验矩阵的生成方法。该方法提供了直接对128并行数据进行CRC编解码的校验矩阵,从而避免使用延时较大的级联结构,提高了128位并行数据的CRC编解码效率,实现高速串行通信中接收或发送数据的实时校验。基于该校验矩阵的CRC电路可以用于PCIe 3.0物理层中的128位并行数据的实时CRC校验,保证了数据的高效率传输。
Description
技术领域
本发明属于可靠性编解码领域,涉及一种并行数据的CRC校验矩阵生成方法,具体涉及一种用于128位并行数据的CRC校验矩阵生成方法。
背景技术
为保证数据通信的可靠性,通常在数据传输中采用CRC编码对被传输数据进行校验。目前实现CRC编码方式多样,有串行编码方式、查表法和公式法(也称推导法)等。
串行编码实现方式简单硬件消耗很小,但是由于只能串行处理数据,数据传输速率非常低。查表法需要存储模块来存储表项,其硬件消耗大,并且难以实现高位宽的并行数据处理。公式法目前在以太网和PCIe等高速并行通信中广泛应用,但其迭代推导方式对于高位宽数据(大于16)来讲,推导比较复杂,因此一般采用基于公式法的级联结构解决并行宽位数据的CRC编码(即采用多个窄位CRC编码结构级联实现并行宽位数据的CRC编码,如采用多个面向8位数据编码的CRC模块,通过级联实现对64并行数据的CRC编码),级联结构在对宽位并行数据(如128位)进行编解码时延时较大,无法满足实际的应用需求。
当前,PCIe 3.0(8GT/s)在物理层中使用128b/130b编码方式以实现负载均衡,在单周期内实现对128位并行数据的CRC校验是保证高速串行通信效率的前提。串行编码、查表法、公式法及基于公式法的级联结构均无法高效率的实现对128并行数据的CRC编解码。
发明内容
针对现有技术中存在的问题,本发明提供一种用于128位并行数据的CRC编解码,减少了级联结构带来的链路延迟,实现高速串行通信中接收或发送数据的实时校验,用于128位并行数据的CRC校验矩阵的生成方法。
本发明是通过以下技术方案来实现:
一种用于128位并行数据的CRC校验矩阵生成方法,其特征在于,包括如下步骤,
1)根据串行编码CRC的编解码原理,得到当前CRC值与当前数据输入和前一级CRC值的关系;
2)根据当前CRC值与当前数据输入和前一级CRC值的关系,通过迭代得到8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的关系;
3)根据步骤2)中得到的CRC前后关系,提取出32x32的前一级CRC参数矩阵和8x32的当前数据输入参数矩阵;
4)根据步骤3)中的参数矩阵,得到8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的相应表达式,对该表达式进行四次迭代运算后,得到输入32数据后的CRC值及其对应的表达式;
5)从输入32数据后的CRC值的表达式中提取出前一级CRC值和当前32为数据输入的参数矩阵;将该参数矩阵中的奇数变为1,偶数变为0,得到32位并行的当前CRC值与前一级CRC值和当前32位并行数据输入的关系表达式;
6)对步骤5)中得到的关系表达式按照步骤4)和5)的方法进行四次迭代,得到128并行数据的当前CRC值与前一级CRC值和当前128位数据输入的关系矩阵;
7)将步骤6)得到的关系矩阵用于128并行数据编码的实时校验。
优选的,步骤1)中,当前CRC值与当前数据输入和前一级CRC值的关系为,
其中,为第j+1次数据输入后的第i+1位CRC值,为第j次数据输入后的第i位CRC值,gi+1为CRC生成多项式中第i+1位的系数,dj+1为第j+1次的数据输入,为第j次数据输入后的第31位CRC值,j为自然数,i=0,1...31。
进一步,步骤2中,8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的关系为,
其中,为当前CRC值的第i位,为前一级CRC值的第i位(i=0,1...31,j=0,1...7),为当前的数据输入的第j位;xi和yj为该关系中和的参数,由IEEE802.3中的CRC-32生成多项式决定。
再进一步,步骤3)中提取参数矩阵时,
设由步骤2)得到的8位并行数据输入的当前CRC值为
则
将步骤2)包含参数xi与yj的带入到列向量C1T中,其中i=0,1...31,j=0,1...7,得到
按照上式对应关系提取出参数xi和yj,得到一个32x40的矩阵CD40×32 T,转置后得到40x32的矩阵CD40×32,将CD40×32按照xi和yj分割开,得到两个分别关于前一级CRC值和当前数据输入值的参数矩阵C2C32×32和D2C8×32。
再进一步,步骤4)中,得到8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的相应表达式为,
根据表达式中C1、C0和D1之间的关系,得到输入两次8位数据,即输入16位并行数据后的当前CRC值为,
采用同样处理,继续迭代两次后得到输入四次8位数据,即输入32位并行数据后的CRC值为,
将异或关系转换为数学中相加,可得到C4与C0以及D1、D2、D3、D4的关系为,
C4=C0*C2C32×32*C2C32×32*C2C32×32*C2C32×32+D1*D2C8×32*C2C32×32*C2C32×32*C2C32×32+D2*D2C8×32*C2C32×32*C2C32×32+D3*D2C8×32*C2C32×32+D4*D2C8×32
其中,C0为前一级的CRC值,
D1、D2、D3、D4分别为第一、二、三、四次输入的8位数据,
C2C32×32*C2C32×32*C2C32×32*C2C32×32为C0的参数矩阵,
D2C8×32*C2C32×32*C2C32×32*C2C32×32为D1的参数矩阵,
D2C8×32*C2C32×32*C2C32×32为D2的参数矩阵,
D2C8×32*C2C32×32为D3的参数矩阵,
D2C8×32为D4的参数矩阵。
再进一步,步骤5)中,根据步骤4)中C4表达式,令C0的参数矩阵为D1的参数矩阵为D2的参数矩阵为D3的参数矩阵为D4的参数矩阵为则
对进行计算,将得到的矩阵中奇数变成1,偶数变成0;为关于当前32位并行数据的参数矩阵;
令
得到32位并行的当前CRC值与前一级CRC值和当前32位并行数据输入的关系其中D32=[D1,D2,D3,D4]。
再进一步,步骤6)中,将关系表达式,
按照步骤4)和步骤5)的方法迭代计算最终得到128并行数据的当前CRC值C128与前一级CRC值C0和当前128位数据输入的关系为,
其中,为关于C0的参数矩阵,为关于D128的参数矩阵。与现有技术相比,本发明具有以下有益的技术效果:
本发明所述的一种用于128位并行数据校验矩阵生成方法,该方法提供了直接对128并行数据进行CRC编解码的校验矩阵,从而避免使用延时较大的级联结构,提高了128位并行数据的CRC编解码效率,实现高速串行通信中接收或发送数据的实时校验。基于该校验矩阵的CRC电路可以用于PCIe 3.0物理层中的128位并行数据的实时CRC校验,保证了数据的高效率传输。
附图说明
图1为本发明的校验矩阵生成方法流程图。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明的目的在于通过使用校验矩阵对128位并行数据直接进行CRC编解码,避免使用级联结构的CRC编解码方法,从而提高128位并行数据的CRC编解码效率。
本发明所述的用于128位并行数据的CRC校验矩阵生成方法包括如下步骤:
1)根据串行编码CRC的编解码原理,可知当前CRC值与当前数据输入和前一级CRC值的关系为(其中为第j+1次数据输入后的第i+1位CRC值,为第j次数据输入后的第i位CRC值,gi+1为CRC生成多项式中第i+1位的系数,dj+1为第j+1次的数据输入,为第j次数据输入后的第31位CRC值,j为自然数,i=0,1...31)。
根据IEEE802.3中的CRC-32所规定的CRC-32生成多项式G(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1,知gi对应值g31=0,g30=0…g0=1。
2)由步骤1)的迭代关系可推导出8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的关系为其中为当前CRC值的第i位,为前一级CRC值的第i位(i=0,1...31,j=0,1...7),为当前的数据输入的第j位(其中xi和yj为表达式中和的参数,由IEEE802.3中的CRC-32生成多项式决定)。
由步骤1)所述关系式迭代得到的8位并行数据输入的当前CRC值与前一级CRC值和当前8位数据输入数值的关系,结果如下:
…
3)设由步骤2)得到的8位并行数据输入的当前CRC值为则将步骤2)包含参数xi与yj的带入到列向量C1T中,(其中i=0,1...31,j=0,1...7),可得
按照上式对应关系提取出参数xi和yj,得到一个32x40的矩阵CD40×32 T,转置后得到40x32的矩阵CD40×32,将CD40×32按照xi和yj分割开,得到两个分别关于前一级CRC值和当前数据输入值的参数矩阵C2C32×32和D2C8×32;
提取得到的矩阵CD40×32为
其中前32行为参数矩阵C2C32×32,后8行为参数矩阵D2C8×32。
4)由步骤3)知,步骤3)中所述的8位并行数据输入的当前CRC值根据C1、C0和D1之间的关系,可直接得到输入两次8位数据,即输入16位并行数据后的当前CRC值同理,继续迭代两次后得到输入四次8位数据,即输入32位并行数据后的CRC值,为将异或关系转换为数学中相加,可得到C4与C0以及D1、D2、D3、D4(C0为前一级的CRC值,D1、D2、D3、D4分别为第一、二、三、四次输入的8位数据)的关系,C4=C0*C2C32×32*C2C32×32*C2C32×32*C2C32×32+D1*D2C8×32*C2C32×32*C2C32×32*C2C32×32+D2*D2C8×32*C2C32×32*C2C32×32+D3*D2C8×32*C2C32×32+D4*D2C8×32
表达式中C2C32×32*C2C32×32*C2C32×32*C2C32×32为C0的参数矩阵,D2C8×32*C2C32×32*C2C32×32*C2C32×32为D1的参数矩阵,D2C8×32*C2C32×32*C2C32×32为D2的参数矩阵,D2C8×32*C2C3×232为D3的参数矩阵,D2C8×32为D4的参数矩阵。
5)根据步骤4)中C4表达式,令C0的参数矩阵为D1的参数矩阵为D2的参数矩阵为D3的参数矩阵为D4的参数矩阵为则
对进行计算,将得到的矩阵中奇数变成1,偶数变成0。为关于当前32位并行数据的参数矩阵。
令
得到当前CRC值与前一级CRC值和当前32位并行数据的关系
计算结果矩阵为:
将上面的矩阵中奇数变成1,偶数变成0。矩阵化为
计算并将其纵向合并的到32x32的矩阵为
将上面的矩阵中奇数变成1,偶数变成0。矩阵化为
6)将公式按照步骤4)和步骤5)的方法迭代计算最终得到128并行数据的当前CRC值C128与前一级CRC值C0和当前128位数据输入的关系,(其中为关于C0的参数矩阵,为关于D128的参数矩阵)。
推导得出校验矩阵为
矩阵为
7)将步骤6)得到的关系矩阵用于128并行数据编码的实时校验。
Claims (6)
1.一种用于128位并行数据的CRC校验矩阵生成方法,其特征在于,包括如下步骤,
1)根据串行编码CRC的编解码原理,得到当前CRC值与当前数据输入和前一级CRC值的关系;其中,当前CRC值与当前数据输入和前一级CRC值的关系为,
<mrow>
<msubsup>
<mi>c</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msubsup>
<mo>=</mo>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mi>j</mi>
</msubsup>
<mo>&CirclePlus;</mo>
<mrow>
<mo>(</mo>
<msub>
<mi>g</mi>
<mrow>
<mi>i</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>(</mo>
<mrow>
<msub>
<mi>d</mi>
<mrow>
<mi>j</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msubsup>
<mi>c</mi>
<mn>31</mn>
<mi>j</mi>
</msubsup>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mo>;</mo>
</mrow>
其中,为第j+1次数据输入后的第i+1位CRC值,为第j次数据输入后的第i位CRC值,gi+1为CRC生成多项式中第i+1位的系数,dj+1为第j+1次的数据输入,为第j次数据输入后的第31位CRC值,j为自然数,i=0,1...31;
2)根据当前CRC值与当前数据输入和前一级CRC值的关系,通过迭代得到8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的关系;
3)根据步骤2)中得到的8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的关系,提取出32x32的前一级CRC参数矩阵和8x32的当前数据输入参数矩阵;
4)根据步骤3)中的参数矩阵,得到8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的相应表达式,对该表达式进行四次迭代运算后,得到输入32数据后的CRC值及其对应的表达式;
5)从输入32数据后的CRC值的表达式中提取出前一级CRC值和当前32为数据输入的参数矩阵;将该参数矩阵中的奇数变为1,偶数变为0,得到32位并行的当前CRC值与前一级CRC值和当前32位并行数据输入的关系表达式;
6)对步骤5)中得到的关系表达式按照步骤4)和5)的方法进行四次迭代,得到128并行数据的当前CRC值与前一级CRC值和当前128位数据输入的关系矩阵;
7)将步骤6)得到的关系矩阵用于128并行数据编码的实时校验。
2.根据权利要求1所述的一种用于128位并行数据的CRC校验矩阵生成方法,其特征在于,步骤2中,8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的关系为,
<mrow>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mn>1</mn>
</msubsup>
<mo>=</mo>
<msub>
<mi>x</mi>
<mn>31</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>31</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>x</mi>
<mn>30</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>30</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mi>i</mi>
</msub>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>0</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>7</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>7</mn>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mi>j</mi>
</msub>
<msubsup>
<mi>d</mi>
<mi>j</mi>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
<mo>,</mo>
</mrow>
其中,为当前CRC值的第i位,为前一级CRC值的第i位(i=0,1...31,j=0,1...7),为当前的数据输入的第j位;xi和yj为该关系中和的参数,由IEEE802.3中的CRC-32生成多项式决定。
3.根据权利要求2所述的一种用于128位并行数据的CRC校验矩阵生成方法,其特征在于,步骤3)中提取参数矩阵时,
设由步骤2)得到的8位并行数据输入的当前CRC值为
则
将步骤2)包含参数xi与yj的带入到列向量C1T中,其中i=0,1...31,j=0,1...7,得到
<mfenced open = "[" close = "]">
<mtable>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>c</mi>
<mn>31</mn>
<mn>1</mn>
</msubsup>
<mo>=</mo>
<msub>
<mi>x</mi>
<mn>31</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>31</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>x</mi>
<mn>30</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>30</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mi>i</mi>
</msub>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>0</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>7</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>7</mn>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mi>j</mi>
</msub>
<msubsup>
<mi>d</mi>
<mi>j</mi>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>c</mi>
<mn>30</mn>
<mn>1</mn>
</msubsup>
<mo>=</mo>
<msub>
<mi>c</mi>
<mn>31</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>31</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>x</mi>
<mn>30</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>30</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mi>i</mi>
</msub>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>0</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>7</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>7</mn>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mi>j</mi>
</msub>
<msubsup>
<mi>d</mi>
<mi>j</mi>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>...</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mn>1</mn>
</msubsup>
<mo>=</mo>
<msub>
<mi>x</mi>
<mn>31</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>31</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>x</mi>
<mn>30</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>30</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mi>i</mi>
</msub>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>0</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>7</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>7</mn>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mi>j</mi>
</msub>
<msubsup>
<mi>d</mi>
<mi>j</mi>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>...</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>c</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
<mo>=</mo>
<msub>
<mi>x</mi>
<mn>31</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>31</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>x</mi>
<mn>30</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>30</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mi>i</mi>
</msub>
<msubsup>
<mi>c</mi>
<mi>i</mi>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<mn>...</mn>
<msub>
<mi>x</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>c</mi>
<mn>0</mn>
<mn>0</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>7</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>7</mn>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mi>j</mi>
</msub>
<msubsup>
<mi>d</mi>
<mi>j</mi>
<mn>1</mn>
</msubsup>
<mn>...</mn>
<mo>&CirclePlus;</mo>
<msub>
<mi>y</mi>
<mn>0</mn>
</msub>
<msubsup>
<mi>d</mi>
<mn>0</mn>
<mn>1</mn>
</msubsup>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
按照上式对应关系提取出参数xi和yj,得到一个32x40的矩阵CD40×32 T,转置后得到40x32的矩阵CD40×32,将CD40×32按照xi和yj分割开,得到两个分别关于前一级CRC值和当前数据输入值的参数矩阵C2C32×32和D2C8×32。
4.根据权利要求3所述的一种用于128位并行数据的CRC校验矩阵生成方法,其特征在于,步骤4)中,得到8位并行数据输入的当前CRC值与前一级CRC值和当前8位并行数据输入的相应表达式为,
<mrow>
<msup>
<mi>C</mi>
<mn>1</mn>
</msup>
<mo>=</mo>
<msup>
<mi>C</mi>
<mn>0</mn>
</msup>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msup>
<mi>D</mi>
<mn>1</mn>
</msup>
<mo>*</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>;</mo>
</mrow>
根据表达式中C1、C0和D1之间的关系,得到输入两次8位数据,即输入16位并行数据后的当前CRC值为,
<mrow>
<msup>
<mi>C</mi>
<mn>2</mn>
</msup>
<mo>=</mo>
<msup>
<mi>C</mi>
<mn>1</mn>
</msup>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msup>
<mi>D</mi>
<mn>2</mn>
</msup>
<mo>*</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>=</mo>
<mrow>
<mo>(</mo>
<msup>
<mi>C</mi>
<mn>0</mn>
</msup>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msup>
<mi>D</mi>
<mn>1</mn>
</msup>
<mo>*</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msup>
<mi>D</mi>
<mn>2</mn>
</msup>
<mo>*</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>;</mo>
</mrow>
采用同样处理,继续迭代两次后得到输入四次8位数据,即输入32位并行数据后的CRC值为,
<mrow>
<msup>
<mi>C</mi>
<mn>4</mn>
</msup>
<mo>=</mo>
<msup>
<mi>C</mi>
<mn>3</mn>
</msup>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>&CirclePlus;</mo>
<msup>
<mi>D</mi>
<mn>4</mn>
</msup>
<mo>*</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>;</mo>
</mrow>
将异或关系转换为数学中相加,可得到C4与C0以及D1、D2、D3、D4的关系为,
C4=C0*C2C32×32*C2C32×32*C2C32×32*C2C32×32+D1*D2C8×32*C2C32×32*C2C32×32*C2C32×32+D2*D2C8×32*C2C32×32*C2C32×32+D3*D2C8×32*C2C32×32+D4*D2C8×32
其中,C0为前一级的CRC值,
D1、D2、D3、D4分别为第一、二、三、四次输入的8位数据,
C2C32×32*C2C32×32*C2C32×32*C2C32×32为C0的参数矩阵,
D2C8×32*C2C32×32*C2C32×32*C2C32×32为D1的参数矩阵,
D2C8×32*C2C32×32*C2C32×32为D2的参数矩阵,
D2C8×32*C2C32×32为D3的参数矩阵,
D2C8×32为D4的参数矩阵。
5.根据权利要求4所述的一种用于128位并行数据的CRC校验矩阵生成方法,其特征在于,步骤5)中,根据步骤4)中C4表达式,令C0的参数矩阵为D1的参数矩阵为D2的参数矩阵为D3的参数矩阵为D4的参数矩阵为则
<mrow>
<mtable>
<mtr>
<mtd>
<mrow>
<mi>C</mi>
<mn>2</mn>
<msubsup>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>32</mn>
</msubsup>
<mo>=</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>F</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>1</mn>
</msubsup>
<mo>=</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>F</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>2</mn>
</msubsup>
<mo>=</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>F</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>3</mn>
</msubsup>
<mo>=</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msubsup>
<mi>F</mi>
<mrow>
<mn>8</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>4</mn>
</msubsup>
<mo>=</mo>
<mi>D</mi>
<mn>2</mn>
<msub>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>;</mo>
</mrow>
对进行计算,将得到的矩阵中奇数变成1,偶数变成0;为关于当前32位并行数据的参数矩阵;
令
得到32位并行的当前CRC值与前一级CRC值和当前32位并行数据输入的关系其中D32=[D1,D2,D3,D4]。
6.根据权利要求5所述的一种用于128位并行数据的CRC校验矩阵生成方法,其特征在于,步骤6)中,将关系表达式,
<mrow>
<msup>
<mi>C</mi>
<mn>32</mn>
</msup>
<mo>=</mo>
<msup>
<mi>C</mi>
<mn>0</mn>
</msup>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msubsup>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>32</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msup>
<mi>D</mi>
<mn>32</mn>
</msup>
<mo>*</mo>
<mi>D</mi>
<mn>2</mn>
<msubsup>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>32</mn>
</msubsup>
<mo>;</mo>
</mrow>
按照步骤4)和步骤5)的方法进行四次迭代计算最终得到128并行数据的当前CRC值C128与前一级CRC值C0和当前128位数据输入的关系为,
<mrow>
<msup>
<mi>C</mi>
<mn>128</mn>
</msup>
<mo>=</mo>
<msup>
<mi>C</mi>
<mn>0</mn>
</msup>
<mo>*</mo>
<mi>C</mi>
<mn>2</mn>
<msubsup>
<mi>C</mi>
<mrow>
<mn>32</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>128</mn>
</msubsup>
<mo>&CirclePlus;</mo>
<msup>
<mi>D</mi>
<mn>128</mn>
</msup>
<mo>*</mo>
<mi>D</mi>
<mn>2</mn>
<msubsup>
<mi>C</mi>
<mrow>
<mn>128</mn>
<mo>&times;</mo>
<mn>32</mn>
</mrow>
<mn>128</mn>
</msubsup>
<mo>;</mo>
</mrow>
其中,为关于C0的参数矩阵,为关于D128的参数矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510504163.8A CN105099466B (zh) | 2015-08-17 | 2015-08-17 | 一种用于128位并行数据的crc校验矩阵生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510504163.8A CN105099466B (zh) | 2015-08-17 | 2015-08-17 | 一种用于128位并行数据的crc校验矩阵生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105099466A CN105099466A (zh) | 2015-11-25 |
CN105099466B true CN105099466B (zh) | 2018-04-17 |
Family
ID=54579167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510504163.8A Active CN105099466B (zh) | 2015-08-17 | 2015-08-17 | 一种用于128位并行数据的crc校验矩阵生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105099466B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108880562B (zh) * | 2017-05-11 | 2020-06-19 | 珠海零边界集成电路有限公司 | 循环冗余校验电路及其方法、装置以及芯片、电子设备 |
CN117097440B (zh) * | 2023-10-18 | 2024-03-15 | 苏州联讯仪器股份有限公司 | 一种以太网包crc校验方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101461140A (zh) * | 2006-04-22 | 2009-06-17 | 英国贝尔法斯特女王大学 | 循环冗余校验码的可配置并行计算 |
CN101783688A (zh) * | 2010-03-05 | 2010-07-21 | 苏州和迈微电子技术有限公司 | 一种64位并行多模式crc码生成电路的设计方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9350385B2 (en) * | 2013-03-15 | 2016-05-24 | Xilinx, Inc. | Modular and scalable cyclic redundancy check computation circuit |
-
2015
- 2015-08-17 CN CN201510504163.8A patent/CN105099466B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101461140A (zh) * | 2006-04-22 | 2009-06-17 | 英国贝尔法斯特女王大学 | 循环冗余校验码的可配置并行计算 |
CN101783688A (zh) * | 2010-03-05 | 2010-07-21 | 苏州和迈微电子技术有限公司 | 一种64位并行多模式crc码生成电路的设计方法 |
Non-Patent Citations (1)
Title |
---|
"基于FPGA的10G以太网并行CRC设计";袁征 等;《计算机工程与设计》;20140531;第35卷(第5期);第1510-1515页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105099466A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106998208B (zh) | 一种可变长Polar码的码字构造方法 | |
CN107346977A (zh) | 使用共模抑制和sso恢复的功率和引脚高效的芯片到芯片通信 | |
CN107124251B (zh) | 一种基于任意内核的极化码编码方法 | |
CN105515590A (zh) | 一种基于随机二进制数据流的有效低复杂度串行抵消列表极化码译码算法及其译码构架 | |
CN101938349A (zh) | 一种适用于硬件实现的s盒及其电路实现方法 | |
CN105099466B (zh) | 一种用于128位并行数据的crc校验矩阵生成方法 | |
CN107069741A (zh) | 一种新型线性化潮流计算方法 | |
CN103731239A (zh) | 一种适用于向量处理器的通用crc并行计算部件及方法 | |
Gao | Comment on “Solitons, Bäcklund transformation, and Lax pair for the (2+ 1)-dimensional Boiti-Leon-Pempinelli equation for the water waves”[J. Math. Phys. 51, 093519 (2010)] | |
WO2010135942A1 (zh) | 快速循环冗余校验编码方法及装置 | |
CN103929210A (zh) | 一种基于遗传算法与神经网络的硬判决译码方法 | |
CN107204782A (zh) | 一种bch译码器及生成该译码器的编译器的实现方法 | |
CN106656213B (zh) | 基于k段分解的低复杂度极化码折叠硬件构架的实现方法 | |
CN105634568A (zh) | 一种基于大规模mimo系统信号检测的llr计算方法 | |
CN103269255B (zh) | 一种并行crc电路的生成方法和装置 | |
CN106533452A (zh) | 一种多进制ldpc编码方法及编码器 | |
CN103986557A (zh) | 低路径延迟的LTE Turbo码并行分块译码方法 | |
CN103888392A (zh) | 一种基于dna遗传优化的正交小波盲均衡方法 | |
CN101630999B (zh) | 一种用于二元擦除信道前向纠错的喷泉编解码方法 | |
CN107330201A (zh) | 一种固定极性Reed‑Muller逻辑电路极性搜索方法 | |
CN103260154B (zh) | 一种基于128-eia3的完整性保护增强方法 | |
CN110717342A (zh) | 一种基于transformer的距离参量对齐翻译方法 | |
CN110166060A (zh) | 高吞吐流水线型极化码bp译码器及其实现方法 | |
Zhu | On a proof of the Bouchard-Sulkowski conjecture | |
CN102522957B (zh) | 一种改善射频功率放大器预失真性能的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |