專利名稱::一種crc校驗的方法和系統及crc初值影響矩陣的制作方法
技術領域:
:本發明涉及數字通信
技術領域:
,具體而言是涉及一種循環冗余校驗CRC(CyclicRedundancyCheck)校驗的方法和系統及CRC初值影響矩陣。
背景技術:
:隨著數字通信速率的要求越來越高,如寬帶碼分多址(WidebandCodeDivisionMultipleAccess,WCDMA)的下行業務由高速下行鏈路分組接入(HighSpeedDownlinkPacketAccess,HSDPA)向高速分組4妄入演進(High-SpeedPacketAccessEvolution,HSPA+)擴展時,下行接收后待處理的數據塊將越來越大。為了提高接收端的處理能力,最簡單的方法就是將整塊數據分段,增加處理單元以同時處理多段數據,同時輸出多段結果,減少整塊數據的處理時間和處理延遲。接收端為檢查接收到的整塊數據是否正確,一般會釆用在譯碼器后接CRC的方式。圖1所示為現有技術的CRC校驗流程框圖,如圖1所示,現有的CRC校驗要求按順序逐步(單比特或多比特)校驗,只有前一段的數據按順序校驗完畢后才能開始后一段數據的校驗,這樣不僅需要增加額外的存儲單元以緩存后幾段數據,而且CRC校驗的處理時間會比較長。例如HSPA+的43.2M數據,需要處理的數據量為86400比特,時鐘頻率是16倍碼片(chip)速率,如果采用逐比特CRC校驗方式,得到CRC結果需要86400/16clk/2560chip=2.12slot(時隙),該處理時間和延遲在高速業務中是無法接受的;如果采用多比特CRC并行校驗的方式,則需要譯碼單元也能夠同時輸出多比特譯碼值,這不僅增加了資源,而且實現難度較大。因此現有的CRC逐步校驗方法將成為數據流處理線上的瓶頸。
發明內容有鑒于此,本發明實施例提供了一種CRC校驗的方法和系統及CRC初值影響矩陣,能夠縮短CRC校驗時間。為實現上述目的,本發明實施例是通過如下技術方案實現的提供一種循環冗余校驗CRC校驗的方法,包括將整塊待CRC校驗數據分成多段;對每一段數據同時進行CRC校驗得到各段CRC結果;對所述各段CRC結果進行合并得到整塊數據的CRC結果。提供一種循環冗余校驗CRC校驗的系統,包括分段單元,用于將整塊待CRC校驗數據分成N段;N個校驗并行運算單元,用于對每一段數據同時進行CRC校驗得到各段CRC結果;校驗結果合并單元,用于對所述各段CRC結果進行合并得到整塊數據的CRC結果。還提供一種CRC初值影響矩陣,為一個xxx的矩陣,由初值影響矩陣的運算公式迭代運算L次得到;其中,初值影響矩陣的運算公式由CRC標準校驗公式對din取零演變得到,x為CRC校驗長度,L為待校驗的數據長度,x>0,L>0。由以上本發明實施例提供的技術方案可知,通過對整塊待CRC校驗數據采用CRC分段校驗方法,同時進行CRC校驗得到各段CRC結果,然后對各段CRC結果進行合并得到整塊數據的CRC結果,與現有的CRC逐步校驗方法相比,不但能夠節省CRC處理前的數據存儲單元,而且無需等待前段CRC結果,節省延遲時間,縮短CRC才交-驗時間。圖1為現有技術的CRC校驗流程框圖2為本發明實施例提供的一種CRC校驗的方法流程圖3為本發明實施例提供的一種CRC校驗流程框圖4為本發明實施例提供的一種CRC8校驗電路示意圖5為本發明實施例提供的對各段CRC結果進行合并得到整塊數據的CRC結果的流程示意圖6為本發明實施例三提供的分為三個碼塊、釆用CRC8進行校驗的運算流程圖7為本發明實施例提供了一種CRC校驗的系統組成示意圖。具體實施例方式為使本發明的目的、技術方案、及優點更加清楚明白,下面結合附圖并舉實施例,對本發明提供的技術方案進一步詳細描述。參見圖2,圖2為本發明實施例提供的一種CRC4交驗的方法流程圖,包括步驟21,將整塊待CRC校驗數據分成多段;步驟22,對每一段數據同時進行CRC校驗得到各段CRC結果;步驟23,對所述各段CRC結果進行合并得到整塊數據的CRC結果。例如將整塊數據L分成N段,第一段數據長度為Ll,第二段數據長度為L2,...第N段數據長度為Ln,總段數為待CRC校驗的段數,Ll+L2+...+Ln=L。各段數據單獨使用一個獨立的CRCx校驗單元,例如CRC8時,x=8;CRC16時,x=16,分段同時進行CRC校驗,最后將各段CRC結果合并以得到整塊數據的CRC結果。本發明實施例提供的CRC校驗的方法,通過對整塊待CRC校驗數據采用CRC分段校驗方法,同時進行CRC校驗得到各段CRC結果,然后對各段CRC結果進行合并得到整塊數據的CRC結果,與現有的CRC逐步校驗方法相比,不但能夠節省CRC處理前的數據存儲單元,而且無需等待前段CRC結果,節省延遲時間,縮短CRC才交,瞼時間。參見圖3,圖3為本發明實施例提供的一種CRC校驗流程框圖,包括步驟31,將整塊數據分成N段;步驟32,對每一段數據由各個譯碼單元進行譯碼后,同時輸出各段數據的譯碼值。步驟33,對所述各段數據的譯碼值由各個CRCx校驗單元同時進行CRC校驗,得到各段CRC結果。其中,CRCx校驗單元1采用標準的CRC校驗方法,其初值根據需要進行設定;其余CRCx校驗單元暫不考慮前一段CRCx校驗結果對后一段CRCx校驗結果的影響,采用全零初值進行校驗。這些初值的影響將在步驟34"對各段CRC結果進行合并"時通過"CRC初值影響距陣"經相關運算、對應比特依次異或得到。所述CRC初值影響矩陣是一個xxx的矩陣,由初值影響矩陣的運算公式迭代運算L次得到;其中,初值影響矩陣的運算公式由CRC標準校驗公式對din取零演變得到,x為CRC校驗長度,L為待校驗的數據長度,x>0,L〉0。例如,對于一個CRC8標準校驗公式,該CRC8校驗電路參見圖4所示,其校驗公式如下D7=D6AD7Adin,D6=D5,D5=D4,D4=D3AD7Adin,D3=D2AD7Adin,D2=D1,Dl=D0AD7Adin,DO=D7Adin,則CRC8(L)的"初值影響距陣的運算公式"為M(7,k,L+l)=M(6,k,L)AM(7,k,L),M(6,k,L+l)=M(5,k,L),M(5,k,L+l)=M(4,k,L),M(4,k,L+1)=M(3,k,L)AM(7,k,L),M(3,k,L+1)=M(2,k,L)AM(7,k,L),M(2,k,L+l)=M(l,k,L),M(1,k,L+1)=M(0,k,L)AM(7,k,L),M(0,k,L+l)=M(7,k,L);其中,k=0,l,2x-l;L>0,當Li時,有M(k,k,O"l,M(k,notk,0)=0。對每一種x取值與L取值的組合,通過"初值影響距陣的運算公式"迭代運算L次后,可以得到唯——個"CRCx(L)初值影響距陣,,與其對應,列表形式如下:<table>tableseeoriginaldocumentpage9</column></row><table>步驟34,對所述各段CRC結果進行合并得到整塊數據的CRC結果。參見圖5,該步驟具體包括將"第一段CRC結果C"作為"第二段CRC結果的初值A",輸入"CRC初值影響矩陣CRCx(L2)"計算得到"第二段CRC結果的影響值B";將所述"第二段CRC結果的影響值B"與"第二段CRC結果C",對應比特異或得到"第三段CRC結果的初值A,";循環上述操作,直到得到所有N段"整塊數據的CRC結果"。需要說明的是,"第n段CRC結果的影響值"與"第n段CRC結果"對應比特異或后得到"整塊數據的CRC結果"。一種實施例,通過/^式B^S!(AkXM(i,k))k-0mod2運算得到除第一段之外的各段CRC結果的影響值,其中Ak為各段CRC結果的初值,M(i,k)為各段的CRC初值影響矩陣,i=0,l,..x-l,x為CRC校-瞼長度。一種實施例,與一次CRC校驗多比特數據配合使用,進一步提高CRC校驗效率。本發明實施例提供的CRC校驗的方法,將整塊數據分成N段,對每一段數據由譯碼單元進行譯碼后同時輸出的各段數據的譯碼值,采用CRCx校驗單元同時進行CRC校驗,其中,CRCx校驗單元1采用標準的CRC校驗方法,其初值根據需要進行設定;其余CRCx校驗單元暫不考慮前一段CRCx校驗結果對后一段CRCx校驗結果的影響,采用全零初值進行校驗,然后在對各段CRC結果進行合并時,再通過"CRC初值影響距陣"考慮前一段CRCx校驗結果對后一段CRCx校驗結果的影響,直到得到整塊數據的CRC結果。與現有的CRC逐步校驗方法相比,不但能夠節省CRC處理前的數據存儲單元,而且無需等待前段CRC結果,節省延遲時間,縮短CRC校驗時間。一個具體實施例,WCDMA的HSPA+中常會遇到為節省處理延遲將單傳輸塊分為多碼塊同時進行TURBO譯碼,同時輸出譯碼結果進行CRC校驗情況。設傳輸塊長度10770,分為3個碼塊,每個碼塊長度35卯,釆用CRC8校驗,其運算過程參見圖6所示,包括步驟(1)取零初值對第一個碼塊進行CRC8校驗,得到第一個碼塊的CRC8校驗值。(2)取零初值對第二個碼塊進行CRC8校驗,得到第二個碼塊的CRC8校驗值。(3)取零初值對第三個碼塊進行CRC8校驗,得到第三個碼塊的CRC8校驗值。(4)CRC8(L)"初值影響距陣的運算公式"為M(7,k,L+l)=M(6,k,L)AM(7,k,L)M(6,k,L+l)=M(5,k,L)M(5,k,L+l)=M(4,k,L)M(4,k,L+1)=M(3,k,L)AM(7,k,l)M(3,k,L+1)=M(2,k,L)AM(7,k,l)M(2,k,L+l)=M(l,k,L)M(1,k,L+1)=M(0,k,L)AM(7,k,l)M(0,k,L+l)=M(7,k,L)其中,k=0,l,2...x-l;上述公式對L>0有效,當L=0時,有M(k,k,0)=l,M(k,notk,0)=0,用8*8=641^寄存器,通過上述公式迭代運算3590次得到"CRC8(35卯)初值影響距陣"。CRCx(L)初值影響距陣,x=8,L=3590<table>tableseeoriginaldocumentpage12</column></row><table>(5)將第一個碼塊的CRC8校驗值作為初值Ak帶入公式Z(AkxM(i,k》k=0mod2(其中i-0,l,2,…7)計算得到第二碼塊的CRC影響值'(6)將第二碼塊的CRC影響值與第二個碼塊的CRC8校驗值對應比特異或得到前兩個碼塊的CRC8校驗值。(7)將前兩個碼塊的CRC8校驗值作為初值帶Ak入公式:E(AkxM(i,k》k=0mod2(其中1=0,1,2,...7)計算得到第三碼塊的CRC影響值'(8)將第三碼塊的CRC影響值與第三個碼塊的CRC8校驗值對應比特異或得到前三個碼塊的CRC8校驗值,即得到整個傳輸塊的CRC8校驗值。本實施例需要說明的有三點1、增加的CRC8并行運算單元所占用的資源遠遠小于原本需要存儲數據的緩存單元。2、步驟(1)~(4)的運算可以同時進行,以此節省后面碼塊2和碼塊3碼塊排隊需要的存儲器和等待的時間。3、步驟(5)~(8)占用的時間很少,實際電路中最多每一步用一個時鐘周期,可以忽略不計。在本實施例中,CRC校驗的處理時間為3590個時鐘周期;如果采用現有的CRC逐步校驗方法,處理時間為10770個時鐘周期,本發明實施例是現有技術的三分之一。而且本實施例中CRC校驗幾乎沒有處理延遲,并行譯碼單元的譯碼結果輸出完畢,4個時鐘周期后就能得到CRC結果;如果采用現有的CRC方法,從譯碼單元輸出譯碼結果到得到CRC結果的延遲時間為3590x2=7180個時鐘周期,因此本實施例能夠節省CRC處理時間和延遲時間,而且數據量越大,節省的時間越多。并且,本實施例節省了碼塊2和碼塊3譯碼結果共3590x2=7180bit的緩存單元,實現代價僅是多了兩組CRC8并行運算單元和64bit的初值影響距陣,而且數據量越大,節省的存儲單元越多。參見圖7,本發明實施例提供了一種CRC校驗的系統,包括分段單元71,用于將整塊待CRC校驗數據分成N段;N個校驗并行運算單元72,用于對每一段數據同時進行CRC校驗得到各段CRC結果;校驗結果合并單元73,用于對所述各段CRC結果進行合并得到整塊數據的CRC結果。所述N個校驗并行運算單元72中第一個4文驗并行運算單元使用標準的CRC校驗方法,其初值根據需要進行設定;其余校驗并行運算單元暫不考慮前一段CRC結果對后一段CRC結果的影響,采用全零初值進行校驗。所述校驗結果合并單元73包括CRC初值影響矩陣731,為一個xxx的矩陣,由初值影響矩陣的運算公式迭代運算L次得到,其中,初值影響矩陣的運算公式由CRC標準校驗公式對din取零演變得到,x為校驗長度,L為待校驗的數據長度,x>0,L>0;影響值計算模塊732,用于將各段CRC結果的初值輸入所述CRC初值影響矩陣,計算得到各段CRC結果的影響值,其中第一段CRC結果不計算影響值,并直接作為第二段CRC結果的初值;Z(AkxM(i,k》k=0初值計算模塊733,用于將各段CRC結果的影響值與各段CRC結果對應比特異或得到下一,殳CRC結果的初值,其中最后一段CRC結果的影響值與最后一段CRC結果對應比特異或后得到整塊數據的CRC結果。如何得到CRC初值影響矩陣731的方法示例如上所示,在此不再贅述。所述影響值計算模塊732包括影響值計算子模塊,用于通過公式mod2運算得到除第一段之外的各段CRC結果的影響值,其中Ak為初值,M(i,k)為CRC初值影響矩陣731,Bi為影響值,i=0,l,..x-l,x為CRC校驗長度。以將整塊待CRC校驗數據分成3個數據段為例,說明校驗結果合并單元73的運算流程如下第1段CRC結果直接作為第2段CRC結果的初值輸入CRC初值影響矩陣731,經影響值計算模塊732得到第2段CRC結果的影響值,將第2段CRC結果的影響值與第2段CRC結果對應比特異或經初值計算模塊733得到第3段CRC結果的初值,即前2段的CRC結果,并作為第3段CRC結果的初值輸入CRC初值影響矩陣731,經影響值計算模塊732計算得到第3段CRC結果的影響值,將第3段CRC結果的影響值與第3段CRC結果對應比特異或經初值計算模塊733得到前3段CRC結果,即整塊數據的CRC結果。本發明實施例提供的CRC校驗的系統,通過N個校驗并行運算單元72同時進行CRC分段校驗得到各段CRC結果,然后由校驗結果合并單元73對各段CRC結果進行合并得到整塊數據的CRC結果,與現有的CRC逐步校驗方法相比,不但能夠節省CRC處理前的數據存儲單元,而且無需等待前段CRC結果,節省延遲時間,縮短了CRC校驗時間。本發明實施例還提供了一種CRC初值影響矩陣,為一個xxx的矩陣,由初值影響矩陣的運算公式迭代運算L次得到;其中,初值影響矩陣的運算公式由CRC標準校驗公式對din取零演變得到,x為CRC校驗長度,L為待校驗的數據長度,x>0,I>0。對每一種x取值與L取值的組合,通過初值影響矩陣的運算公式迭代運算L次后,得到唯一一個CRCx(L)初值影響矩陣,列表形式如下<table>tableseeoriginaldocumentpage15</column></row><table>其中,k=0,l,2x-l;L>0,當L=0時,有M(k,k,0"l,M(k,notk,0)=0。本發明實施例通過提供CRC初值影響矩陣,將"第一段CRC結果"作為"第二段CRC結果的初值",輸入"CRC初值影響矩陣"變換得到"第二段CRC結果的影響值";將"第二段CRC結果的影響值"與"第二段CRC結果"對應比特異或得到"第三段CRC結果的初值";循環上述操作,直到得到所有N段"整塊數據的CRC結果";通過"CRC初值影響距P車"考慮前一段CRCx校驗結果對后一段CRCx校驗結果的影響,保證了能夠采用CRCx校驗單元同時進行CRC校驗。與現有的CRC逐步校驗方法相比,不但能夠節省CRC處理前的數據存儲單元,而且無需等待前段CRC結果,節省延遲時間,縮短CRC4交驗時間。需要說明的是,本發明實施例中的方法可以軟件功能模塊的形式實現,并且該軟件功能模塊作為獨立的產品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質中。上述提到的存儲介質可以是只讀存儲器,i茲盤或光盤等。本發明實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個15單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現,也可以采用軟件功能模塊的形式實現。所述集成的模塊如果以軟件功能模塊的形式實現并作為獨立的產品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質中。上述提到的存儲介質可以是只讀存儲器,磁盤或光盤等。以上對本發明實施例所提供的CRC校驗的方法和系統及CRC初值影響矩陣進行了詳細介紹,本發明實施例可以廣泛地應用到數字通信各個領域的接收端(甚至是發射端),只要是需要進行CRC校驗的數據處理都可以使用。實施例的說明只是用于幫助理解本發明的方法及其思想;任何熟悉本
技術領域:
的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。權利要求1、一種循環冗余校驗CRC校驗的方法,其特征在于,包括將整塊待CRC校驗數據分成多段;對每一段數據同時進行CRC校驗得到各段CRC結果;對所述各段CRC結果進行合并得到整塊數據的CRC結果。2、根據權利要求1所述的方法,其特征在于,所述對每一段數據同時進行CRC校驗得到各段CRC結果的方法包括對第一段數據使用標準的CRC校驗方法,其初值根據需要進行設定;其余各段數據進行CRC校驗時暫不考慮前一段CRC結果對后一段CRC結果的影響,采用全零初值進行校驗。3、根據權利要求2所述的方法,其特征在于,所述對每一段數據同時進行CRC校驗得到各段CRC結果的方法還包括除第一段CRC結果外,所述前一段CRC結果對后一段CRC結果的影響,在對各段CRC結果進行合并時通過CRC初值影響矩陣得到。4、根據權利要求3所示的方法,其特征在于,所述CRC初值影響矩陣是一個xxx的矩陣,由初值影響矩陣的運算公式迭代運算L次得到;其中,初值影響矩陣的運算公式由CRC標準校驗公式對din取零演變得到,x為CRC校驗長度,L為待校驗的數據長度,x>0,L>0。5、根據權利要求3所述的方法,其特征在于,所述對各段CRC結果進行合并得到整塊數據的CRC結果的方法包括將各段CRC結果的初值輸入所述CRC初值影響矩陣,計算得到各段CRC結果的影響值,其中第一段CRC結果不計算影響值,并直接作為第二段CRC結果的初值;將各段CRC結果的影響值與各段CRC結果對應比特異或得到下一段CRC結果的初值,其中最后一段CRC結果的影響值與最后一段CRC結果對應比特異或后得到整塊數據的CRC結果。6、根據權利要求5所述的方法,其特征在于,所述將各段CRC結果的初值輸入所述CRC初值影響矩陣,計算得到各段CRC結果的影響值的方法包括:通過公式B,.=l!(AkXM(i,k))k=0mod2運算得到除第一段之外的各段CRC結果的影響值,其中Ak為初值,M(i,k)為所述CRC初值影響矩陣,Bi為影響值,i=0,l,..x-l,x為CRC校驗長度。7、一種循環冗余校驗CRC校驗的系統,其特征在于,包括分段單元,用于將整塊待CRC校驗數據分成N段;N個校驗并行運算單元,用于對每一段數據同時進行CRC校驗得到各段CRC結果;校驗結果合并單元,用于對所述各段CRC結果進行合并得到整塊數據的CRC結果。8、根據權利要求7所述的系統,其特征在于,所述N個校驗并行運算單元中第一個校驗并行運算單元使用標準的CRC校驗方法,其初值根據需要進行設定;其余校驗并行運算單元暫不考慮前一段CRC結果對后一段CRC結杲的影響,采用全零初值進行校驗。9、根據權利要求8所述的系統,其特征在于,所述校驗結果合并單元包括CRC初值影響矩陣,為一個xxx的矩陣,由初值影響矩陣的運算公式迭代運算L次得到,其中,初值影響矩陣的運算公式由CRC標準校驗公式對din取零演變得到,x為校驗長度,L為待校驗的數據長度,x>0,L>0;影響值計算模塊,用于將各段CRC結果的初值輸入所述CRC初值影響矩陣,計算得到各段CRC結果的影響值,其中第一段CRC結果不計算影響值,并直接作為第二段CRC結果的初值;初值計算模塊,用于將各段CRC結果的影響值與各段CRC結果對應比特異或得到下一段CRC結果的初值,其中最后一段CRC結果的影響值與最后一段CRC結果對應比特異或后得到整塊數據的CRC結果。10、根據權利要求9所述的系統,其特征在于,所述影響值計算模塊包括影響值計算子模塊,用于通過公式B,S!(AkXM(i,k))k=0mod2運算得到除第一段之外的各段CRC結果的影響值,其中Ak為初值,M(i,k)為所述CRC初值影響矩陣,Bj為影響值,i=0,l,..x-l,x為CRC校驗長度。11、一種CRC初值影響矩陣,其特征在于,為一個xxx的矩陣,由初值影響矩陣的運算公式迭代運算L次得到;其中,初值影響矩陣的運算公式由CRC標準校驗公式對din取零演變得到,x為CRC校驗長度,L為待校驗的數據長度,x>0,I>0。12、根據權利要求11所述的CRC初值影響矩陣,其特征在于,對每一種x取值與L取值的組合,通過初值影響矩陣的運算公式迭代運算L次后,得到唯——個CRCx(L)初值影響矩陣,列表形式如下M(x-l,k)M(x-2,k)M(l,k)M(O,k)x-1l或Ol或Ol或Ol或Ox-2l或Ol或Ol或Ol或O1l或Ol或Ol或Ol或O0l或Ol或Ol或Ol或O其中,k=0,l,2...x-l;L>0,當Li時,有M(k,k,O)-l,M(k,notk,0)=Oc全文摘要本發明的實施例公開了一種CRC校驗的方法和系統及CRC初值影響矩陣,能夠縮短CRC校驗時間。本發明實施例提供的方法包括首先將整塊待CRC校驗數據分成多段;對每一段數據同時進行CRC校驗得到各段CRC結果;然后通過CRC初值影響距陣,將各段CRC校驗值合并,得到整個數據塊的CRC結果。本發明實施例提供的技術方案可廣泛地應用到數字通信各個領域的接收端,甚至是發送端,只要是需要進行CRC校驗的數據處理都可以使用。文檔編號H04L1/00GK101478369SQ20091000032公開日2009年7月8日申請日期2009年1月5日優先權日2009年1月5日發明者張亞凡,范文奇申請人:深圳華為通信技術有限公司