一種用于128位并行數(shù)據(jù)的crc校驗矩陣生成方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于可靠性編解碼領(lǐng)域,涉及一種并行數(shù)據(jù)的CRC校驗矩陣生成方法,具 體涉及一種用于128位并行數(shù)據(jù)的CRC校驗矩陣生成方法。
【背景技術(shù)】
[0002] 為保證數(shù)據(jù)通信的可靠性,通常在數(shù)據(jù)傳輸中采用CRC編碼對被傳輸數(shù)據(jù)進行校 驗。目前實現(xiàn)CRC編碼方式多樣,有串行編碼方式、查表法和公式法(也稱推導(dǎo)法)等。
[0003] 串行編碼實現(xiàn)方式簡單硬件消耗很小,但是由于只能串行處理數(shù)據(jù),數(shù)據(jù)傳輸速 率非常低。查表法需要存儲模塊來存儲表項,其硬件消耗大,并且難以實現(xiàn)高位寬的并行數(shù) 據(jù)處理。公式法目前在以太網(wǎng)和PCIe等高速并行通信中廣泛應(yīng)用,但其迭代推導(dǎo)方式對于 高位寬數(shù)據(jù)(大于16)來講,推導(dǎo)比較復(fù)雜,因此一般采用基于公式法的級聯(lián)結(jié)構(gòu)解決并行 寬位數(shù)據(jù)的CRC編碼(即采用多個窄位CRC編碼結(jié)構(gòu)級聯(lián)實現(xiàn)并行寬位數(shù)據(jù)的CRC編碼, 如采用多個面向8位數(shù)據(jù)編碼的CRC模塊,通過級聯(lián)實現(xiàn)對64并行數(shù)據(jù)的CRC編碼),級聯(lián) 結(jié)構(gòu)在對寬位并行數(shù)據(jù)(如128位)進行編解碼時延時較大,無法滿足實際的應(yīng)用需求。
[0004] 當(dāng)前,PCIe 3. 0(8GT/s)在物理層中使用128b/130b編碼方式以實現(xiàn)負(fù)載均衡,在 單周期內(nèi)實現(xiàn)對128位并行數(shù)據(jù)的CRC校驗是保證高速串行通信效率的前提。串行編碼、 查表法、公式法及基于公式法的級聯(lián)結(jié)構(gòu)均無法高效率的實現(xiàn)對128并行數(shù)據(jù)的CRC編解 碼。
【發(fā)明內(nèi)容】
[0005] 針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種用于128位并行數(shù)據(jù)的CRC編解碼, 減少了級聯(lián)結(jié)構(gòu)帶來的鏈路延遲,實現(xiàn)高速串行通信中接收或發(fā)送數(shù)據(jù)的實時校驗,用于 128位并行數(shù)據(jù)的CRC校驗矩陣的生成方法。
[0006] 本發(fā)明是通過以下技術(shù)方案來實現(xiàn):
[0007] -種用于128位并行數(shù)據(jù)的CRC校驗矩陣生成方法,其特征在于,包括如下步驟,
[0008] 1)根據(jù)串行編碼CRC的編解碼原理,得到當(dāng)前CRC值與當(dāng)前數(shù)據(jù)輸入和前一級 CRC值的關(guān)系;
[0009] 2)根據(jù)當(dāng)前CRC值與當(dāng)前數(shù)據(jù)輸入和前一級CRC值的關(guān)系,通過迭代得到8位并 行數(shù)據(jù)輸入的當(dāng)前CRC值與前一級CRC值和當(dāng)前8位并行數(shù)據(jù)輸入的關(guān)系;
[0010] 3)根據(jù)步驟2)中得到的CRC前后關(guān)系,提取出32x32的前一級CRC參數(shù)矩陣和 8x32的當(dāng)前數(shù)據(jù)輸入?yún)?shù)矩陣;
[0011] 4)根據(jù)步驟3)中的參數(shù)矩陣,得到8位并行數(shù)據(jù)輸入的當(dāng)前CRC值與前一級CRC 值和當(dāng)前8位并行數(shù)據(jù)輸入的相應(yīng)表達式,對該表達式進行四次迭代運算后,得到輸入32 數(shù)據(jù)后的CRC值及其對應(yīng)的表達式;
[0012] 5)從輸入32數(shù)據(jù)后的CRC值的表達式中提取出前一級CRC值和當(dāng)前32為數(shù)據(jù)輸 入的參數(shù)矩陣;將該參數(shù)矩陣中的奇數(shù)變?yōu)?,偶數(shù)變?yōu)椹?得到32位并行的當(dāng)前CRC值與 前一級CRC值和當(dāng)前32位并行數(shù)據(jù)輸入的關(guān)系表達式;
[0013] 6)對步驟5)中得到的關(guān)系表達式按照步驟4)和5)的方法進行四次迭代,得到 128并行數(shù)據(jù)的當(dāng)前CRC值與前一級CRC值和當(dāng)前128位數(shù)據(jù)輸入的關(guān)系矩陣;
[0014] 7)將步驟6)得到的關(guān)系矩陣用于128并行數(shù)據(jù)編碼的實時校驗。
[0015] 優(yōu)選的,步驟1)中,當(dāng)前CRC值與當(dāng)前數(shù)據(jù)輸入和前一級CRC值的關(guān)系為,
[0017] 其中,為第j+Ι次數(shù)據(jù)輸入后的第i+Ι位CRC值,^為第j次數(shù)據(jù)輸入后的 第i位CRC值,g1+1為CRC生成多項式中第i+Ι位的系數(shù),d j+1為第j+Ι次的數(shù)據(jù)輸入,遂 為第j次數(shù)據(jù)輸入后的第31位CRC值,j為自然數(shù),i = 0, 1. .. 31。
[0018] 進一步,步驟2中,8位并行數(shù)據(jù)輸入的當(dāng)前CRC值與前一級CRC值和當(dāng)前8位并 行數(shù)據(jù)輸入的關(guān)系為,
[0020] 其中,碌為當(dāng)前CRC值的第i位,cf為前一級CRC值的第i位(i = 0, 1··· 31,j = 0, I. . . 7),4為當(dāng)前的數(shù)據(jù)輸入的第j位;\和y j為該關(guān)系中cf和4的參數(shù),由IEEE802. 3 中的CRC-32生成多項式?jīng)Q定。
[0021] 再進一步,步驟3)中提取參數(shù)矩陣時,
[0022] 設(shè)由步驟2)得到的8位并行數(shù)據(jù)輸入的當(dāng)前CRC值為
[0024] 將步驟2)包含參數(shù)\與y郝C,1帶入到列向量〇,其中i = 0, 1...31,j = 〇, 1. . . 7,得到
[0026] 按照上式對應(yīng)關(guān)系提取出參數(shù)\和y ,,得到一個32x40的矩陣⑶4(]X32T,轉(zhuǎn)置后得 到40x32的矩陣OT 4idx32,將⑶4(]Χ32按照X JP y j分割開,得到兩個分別關(guān)于前一級CRC值 €°?1,(4~4]和當(dāng)前數(shù)據(jù)輸入值,0|二[?...01!,]的參數(shù)矩陣02(: 32><32和02(:8><32。
[0027] 再進一步,步驟4)中,得到8位并行數(shù)據(jù)輸入的當(dāng)前CRC值與前一級CRC值和當(dāng) 前8位并行數(shù)據(jù)輸入的相應(yīng)表達式為,
[0029] 根據(jù)表達式中C1、(:°和D 1之間的關(guān)系,得到輸入兩次8位數(shù)據(jù),即輸入16位并行 數(shù)據(jù)后的當(dāng)前CRC值為,
[0031] 采用同樣處理,繼續(xù)迭代兩次后得到輸入四次8位數(shù)據(jù),即輸入32位并行數(shù)據(jù)后 的CRC值為,
[0033] 將異或關(guān)系轉(zhuǎn)換為數(shù)學(xué)中相加,可得到(:4與C °以及D \ D2、D3、D4的關(guān)系為,
[0035] 其中,C°為前一級的CRC值,
[0036] D1、D2、D3、D4分別為第一、二、三、四次輸入的8位數(shù)據(jù),
[0041] D2CSX3AD4 的參數(shù)矩陣。
[0042] 再進一步,步驟5)中,根據(jù)步驟4)中C4表達式,令C °的參數(shù)矩陣為C2Cfx32,D1 的參數(shù)矩陣為F8U,. D2的參數(shù)矩陣為.校32,D3的參數(shù)矩陣為拉32,D 4的參數(shù)矩陣為、,則
[0044] 對C2C3322x32、咬32、if32、i^、% 32進行計算,將得到的矩陣中奇數(shù)變成1,偶 數(shù)變成〇 ; D2C^32為關(guān)于當(dāng)前32位并行數(shù)據(jù)的參數(shù)矩陣;
[0046] 得到32位并行的當(dāng)前CRC值與前一級CRC值和當(dāng)前32位并行數(shù)據(jù)輸入的關(guān)系
其中 D32= [D1?,D4]。
[0047] 再進一步,步驟6)中,將關(guān)系表達式,
[0049] 按照步驟4)和步驟5)的方法迭代計算最終得到128并行數(shù)據(jù)的當(dāng)前CRC值C128 與前一級CRC值C°和當(dāng)前128位數(shù)據(jù)輸入的關(guān)系為,
[0051] 其中,為關(guān)于C°的參數(shù)矩陣,D2CH2為關(guān)于D128的參數(shù)矩陣。與現(xiàn)有技 術(shù)相比,本發(fā)明具有以下有益的技術(shù)效果:
[0052] 本發(fā)明所述的一種用于128位并行數(shù)據(jù)校驗矩陣生成方法,該方法提供了直接對 128并行數(shù)據(jù)進行CRC編解碼的校驗矩陣,從而避免使用延時較大的級聯(lián)結(jié)構(gòu),提高了 128 位并行數(shù)據(jù)的CRC編解碼效率,實現(xiàn)高速串行通信中接收或發(fā)送數(shù)據(jù)的實時校驗?;谠?校驗矩陣的CRC電路可以用于PCIe 3. 0物理層中的128位并行數(shù)據(jù)的實時CRC校驗,保證 了數(shù)據(jù)的高效率傳輸。
【附圖說明】
[0053] 圖1為本發(fā)明的校驗矩陣生成方法流程圖。
【具體實施方式】
[0054] 下面結(jié)合具體的實施例對本發(fā)明做進一步的詳細說明,所述是對本發(fā)明的解釋而 不是限定。
[0055] 本發(fā)明的目的在于通過使用校驗矩陣對128位并行數(shù)據(jù)直接進行CRC編解碼,避 免使用級聯(lián)結(jié)構(gòu)的CRC編解碼方法,從而提高128位并行數(shù)據(jù)的CRC編解碼效率。
[0056] 本發(fā)明所述的用于128位并行數(shù)據(jù)的CRC校驗矩陣生成方法包括如下步驟:
[0057] 1)根據(jù)串行編碼CRC的編解碼原理,可知當(dāng)前CRC值與當(dāng)前數(shù)據(jù)輸入和前一級 CRC值的關(guān)系為
為第j+Ι次數(shù)據(jù)輸入后的第i+Ι位 CRC值,為第j次數(shù)據(jù)輸入后的第i位CRC值,g1+1為CRC生成多項式中第i+Ι位的系 數(shù),d]+1為第j+Ι次的數(shù)據(jù)輸入,4為第j次數(shù)據(jù)輸入后的第31位CRC值,j為自然數(shù),i = 0, 1. · · 31) 〇
[0058] 根據(jù) IEEE802. 3 中的 CRC-32 所規(guī)定的 CRC-32 生成多項式 G(x) = x32+x26+x23+x22 +x16+x12+xn+x10+xs+x 7+x5+x4+x2+x+lj gi對應(yīng)值 g3i= 0, g3〇= 0."g〇= Io
[0059] 2)由步驟I)的迭代關(guān)系可推導(dǎo)出8位并行數(shù)據(jù)輸入的 當(dāng)前CRC值與前一級CRC值和當(dāng)前8位并行數(shù)據(jù)輸入的關(guān)系為
,其中4為當(dāng)前CRC值的第i位, cf為前一級CRC值的第i位(i =0, 1... 31,j =0, 1...7),?ζ為當(dāng)前的數(shù)據(jù)輸入的第j位
的參數(shù),由IEEE802. 3中的CRC-32生成多項式?jīng)Q定)。
[0060] 由步驟1)所述關(guān)系式迭代得到的8位并行數(shù)據(jù)輸入的當(dāng)前CRC值與前一級CRC 值和當(dāng)前8