一種用於數據傳輸差錯控制的嵌套crc碼生成方法及裝置的製作方法
2023-08-02 06:30:41 2
專利名稱:一種用於數據傳輸差錯控制的嵌套crc碼生成方法及裝置的製作方法
技術領域:
本發明屬於通信及計算機數據傳輸差錯控制技術領域,更具體地,涉及一種用於數據傳輸差錯控制的嵌套CRC碼生成方法及裝置。
背景技術:
在各種各樣的數據通信中,一般都是將數據分組後進行傳輸,在分組數據後附加數據巾貞校驗序列(Frame Check Sequence,簡稱FCS)進行差錯控制,以保證傳輸的正確性。在中貞校驗序列的實現中,循環冗餘校驗碼(Cyclic Redundancy Code,簡稱CRC)以其高效率、高性能獲得了廣泛應用,是目前數據傳輸過程中普遍採用的一種提高數據通信可靠性的辦法。數據發送過程中,發送端將需要傳送的數據進行CRC校驗碼計算,並將校驗碼附 在傳送數據後一起發送。接收端需要用同樣的計算方法對接收到的數據進行校驗碼計算,然後將計算得到的CRC碼與接收到的CRC碼進行比較,如果一致則說明數據傳送無誤,反之數據傳送有差錯。如果數據傳送有誤,可以採用各種自動重發請求(AutomaticRepeat-request,簡稱ARQ)技術讓發送端重新傳送該數據。在現有的技術中,CRC編碼的計算可以由軟體和硬體完成。軟體和硬體均分為串行與並行兩種方式。在實時高速數據通信中,為了達到實時高速的要求,多採用並行CRC編碼計算來提高運算速度。目前通用的並行計算主要有兩種,一種是通過異或邏輯和餘數緩存器及相關控制電路組成,可採用可編程邏輯器件(programmable logic device,簡稱PLD)、現場可編程門陣列(Field Programmable Gate Array,簡稱FPGA)等器件實現。另一種是通過查找餘數表實現,該方法可以通過預先計算好餘數表,並儲存餘數表,由軟、硬體查找餘數表來實現並行計算。在第一種實現方式中,隨著並行計算的位數增加,所需要的邏輯資源也大量增加,而且隨著級聯的邏輯門越來越多,會導致寄存器之間的延時不斷增加,成為提升計算速度的瓶頸。在第二種並行計算方法中,對於R位的CRC並行計算,需要保存的餘數表容量為(2K *R)bit,因此,隨著並行計算位數R的增加,存儲的容量也會呈指數上升,成為提升計算速度的瓶頸。在並行計算的基礎之上,為了進一步提升CRC編碼計算的速度,可以通過對數據塊進行預先分段,利用多個並行CRC計算通道對各數據塊同時進行計算,從而進一步提升CRC計算速度。公布號為CN1431594A的中國發明專利申請公開了一種多通道多位並行計算CRC碼的方法。該方法直接將整個待計算CRC碼數據按每個長度為Ls位分割成多個數據塊,最後一個通道的數據長度為Lf,並將各數據塊按順序依次放入N個通道,由該N個通道同時對各自通道中的數據塊進行CRC計算,得到N個通道中數據塊的CRC子碼;再通過構建除法餘數變換表,對前N-I個通道的CRC子碼進行除法餘數變換查表(最後一個通道不需要進行餘數變換),得到變換後的CRC子碼;最後對變換後的CRC子碼逐一進行異或計算後,得到整個待計算數據CRC碼。但是,該方法需要對N-I個通道計算的CRC子碼依次進行餘數轉後才能得到各通道需要的CRC計算碼,因而存在以下缺點I)按照該專利的說明,前N-I個通道中計算得到的CRC子碼,需要再通過構建除法餘數變換表,對N個通道的CRC子碼進行除法餘數變換查表,才能得到需要的CRC子碼。其中第i(i為小於N的正整數)個通道的餘數轉換表中的表項,是通過對典型數據餘數表中每一個表項進行[(N-i) .Q+P]次連續查表得到的,其中Ls為所計算的CRC碼位數R的Q倍,最後一個通道的數據長度Lf為計算CRC位數R的P倍。因此,隨著待計算數據的長度變化,會導致N、P兩個變量發生變化,單個通道對應的餘數表則隨著這兩個參數而發生變化,從而無法為每個通道分配固定的餘數變換表。2)按照該專利的說明,需要為前N-I個通道的每一個通道分配一個餘數轉換表,這使得計算器需要的存儲容量大大增加。如建立一個N通道的運算器,餘數轉換表需要的存儲容量為[(N-I) ·2Ε· RJbit0因此,隨著所計算CRC碼位數R的增加,整個計算器需要分配給餘數轉換表的存儲容量將急劇上升。例如在32位CRC計算中,單個通道需要的餘數轉換表的存儲容量為16GB的容量。
發明內容
針對現有技術的缺陷,本發明的目的在於提供一種用於數據傳輸差錯控制的嵌套CRC碼生成方法,旨在解決現有多通道多位並行CRC碼生成方法中存儲容量耗費大、通用性較差的問題,並且嵌套CRC碼的糾錯能力優於傳統的CRC碼。為實現上述目的,本發明提供了一種用於數據傳輸差錯控制的嵌套CRC碼生成方法,包括以下步驟(I)數據分割器對待計算數據進行分段,具體包括以下子步驟(ι-l)將數據分割器中的數據初始化為0,並根據計算通道的數量N確定數據分割器的最大分段數為N ;(1-2)為整個數據分割器生成Ν+1個指針(P。,P1,…,Pi,…,Pn)和N個指針(Pl,P2,…,Pi,…,ρΝ),其中i為小於等於N的正整數,(Po,Po,…,Pi,…,Pn)將整個數據分割器分成N個長為Ls的數據段,按照N個數據段的順序,為每個數據段分配一個指針分別為(P1, P2,…,Pi,…,pN),其中Ls為任意正整數;(1-3)為指針(PtllP1,…Pi,…,Pn)分配固定值,其中Pi = PiJLs,P。的值可以取任意值,整個計算過程中,Pi指針的值固定不變;(1-4)為N個數據區域的指針(P1, p2,…,Pi, ...,pN)分配初始值,並令(P1, P2,…,Pi,…,Pn)指針的初始值分別與(P。,P1,…,Pm,…,Pm)相等;(1-5)將待計算數據填充至數據分割器中,根據數據的填充情況,改變(Pl,p2,…,Pi,…,PN)指針的值;(1-6)數據分割器將待計算數據分為m段,並將m的值傳遞給通道選擇器和反向通道選擇器;(1-7)利用(Pl,p2,pm)的值,以及計算通道的並行計算位數W,在每一個時鐘周期,向m個計算通道分別傳送W位數據,並將(Pl,p2,p3··· pm)的值均減去W ;(1-8)判斷(PuPhPfPm)是否與(Pc^P11PfPm-I)的值相等,若相等,貝1J進入步驟(2),否則返回步驟(1-7);
(2)為分割後的各待計算數據段分配所需的CRC碼計算通道,具體包括以下子步驟(2-1)針對不同類型數據的Q次嵌套CRC碼的生成,為通道選擇器生成一張通道選擇表用於在不同類型數據的各次嵌套計算中,為數據輸入通道分配相應的計算通道,其中Q為正整數;(2-2)利用數據分割器傳遞的數據段總數m,通道選擇器選通用於連接數據分割器的m個序號為(1,2,3,···,ηι)的輸出與通道選擇器的開關;(2-3)根據開關選擇表,將選通的m個數據輸入分別連接至相應的計算通道之上;(3)各計算通道對各待計算數據段進行CRC子碼計算,具體包括以下子步驟(3-1)為N個計算通道分別分配相應的生成多項式為(gj (x), g2 (x), ···,gi (x),... ,gN(X)),其中i為I到N之間的任意值,各通道之間可以採用同樣的生成多項式;(3-2)根據相應的生成多項式,利用邏輯電路或者查找餘數表的方法來實現W位並行計算的各計算通道;(3-3)根據各計算通道所採用的生成多項式,為各通道設置初始值,通常可以為各計算通道賦初始值為全零或者全一;(3-4)對各通道的輸入數據完成CRC子碼計算,得到m個CRC子碼;(4)對各通道計算所得到的CRC子碼進行排序,具體包括以下子步驟(4-1)反向通道選擇器與通道選擇器共用一張通道選擇表;(4-2)依據數據分割器傳遞的待計算數據的分段總數m,反向通道選擇器選通序號為(1,2,3,···,!!!)的CRC子碼暫存器與反向通道選擇器的連接開關。(4-3)根據開關選擇表,將選通的m個數據輸出分別連接至相應的計算通道的輸出之上;(4-4)各計算通道按照反向通道選擇器的選擇結果,將各計算通道計算所得的CRC子碼存入相應的CRC子碼暫存器,得到一串新的數據為(CRC1,CRC2,…,CRCi,…,CRCm),其中i為I到m之間的任意值,CRCi對應第i個數據段計算所得到的CRC子碼;(5)判斷是否需要再次進行多通道計算,如果需要,則將步驟(4)得到的CRC子碼作為新的待計算數據,返回步驟(I);如果不需要,則進入步驟(6),具體包括以下子步驟(5-1)將CRC碼的嵌套次數Q的值減去I ;(5-2)判斷Q的值是否為0,若Q的值為0,則進入步驟(6);若Q的值不為零,則以
(4)步驟中排序好的CRC子碼數據作為新的待計算數據,並返回步驟(I)進行計算;(6)第N+1個計算通道計算出最終的Q次嵌套CRC碼,具體包括以下子步驟(6-1)為第N+1個CRC計算通道分配生成多項式gN+1 (x);(6-2)根據生成多項式,利用邏輯電路或者查找餘數表的方法來實現W位並行計算的計算通道;(6-3)為該計算通道設置初始值,通常可以為該計算通道賦初始值為全零或者全(6-4)對多通道第Q次計算並經過排序所得到的CRC子碼數據進行最後一次CRC碼計算,得到最終的Q次嵌套CRC碼。步驟(1-5)中,(P1, P2,…,Pi,…,pN)的賦值情況為
a)若第i個數據區域中填充了長度為Ls的待計算數據,則將Pi的值賦為Pi ;b)若第i個數據區域未填充數據段,則保持Pi的值不變;c)對於第m個填充區域,由於待計算數據並不保證以Ls對齊,為了保證計算的同步性,若第m個數據區域的填充長度Lf大於O且小於Ls,則將pm的值賦為Pm,即將長度為Lf數據段的長度通過補零擴展至Ls,其中m為待計算數據的長度除以Ls後上取整得到的值,Lf為待計算數據的長度除以Ls後得到的餘數。步驟(2-1)具體包括以下子步驟(2-1-1)對於N個計算通道和數據分割器的N個數據輸出通道,分別對其進行順序編號(1,2, 3,…i,…,N),其中i為I到N之間的任意值;(2-1-2)為通道選擇表的每一個表項分配一個長為N ·「Iog2N]位的矢量S(X),矢·
量多項式為
S(x) = mN{logl λ Λ「1θ& Λ B + mJVflog2 ΝΤ-2χΛ「1θ& 外2 Η + miX' Λ W1Xi + m0x°其中IIii = I 或 O (其中 i = O, I, 2, ..., iV-[log2 Ar]-!);(2-1-3)將 S (X)分成 N段長為「log2 iV"|的矢量(S1 (x), S2 (x),…,Si (x),…,sN(x)),其中i為I到N之間的任意值,(S1(X), S2 (X),…,Si (X),…,Sn(X))對應數據分割器的N個數據輸出(1,2,3,···,i,···,N),其中Si(X)為分配給第i個數據輸入的計算通道的序號;(2-1-4)固定待計算數據的數據類型,針對每一次嵌套CRC碼的生成,生成Q個相應的S(X),作為一行表項保存在開關選擇表中;(2-1-5)針對待計算數據的每一種數據類型,重複步驟(2-1-4),以構成完整的通道選擇表。本發明的另一目的在於提供一種用於數據傳輸差錯控制的嵌套CRC碼生成裝置,該裝置一方面採用多通道多位並行計算CRC碼,另一方面可以自動根據待計算數據的類型,為待計算數據選擇不同的計算通道組合,因此該裝置具有計算速度快,靈活性高等特點。為實現上述目的,本發明提供了一種用於數據傳輸差錯控制的嵌套CRC碼生成裝置,包括數據分段模塊、計算通道選擇模塊、多通道CRC碼計算模塊、數據排序模塊、寄存器、計數器、數據分配器、單通道CRC碼計算模塊。數據分段模塊用於將待計算數據按照一定的數據長度自動分段並通過補零的方法使各數據段長度對齊,並在時鐘的控制下,將各數據段按照一定的位數依次傳送出去;計算通道選擇模塊用於將各輸入數據通道連接至所需要的計算通道之上;多通道CRC碼計算模塊用於同時對多個數據段計算CRC碼;數據排序模塊用於將各輸入數據通道連接至所需要的寄存器之上;寄存器用於存儲CRC碼;計數器用於記錄CRC碼的計算次數,並控制數據分配器的數據輸出;數據分配器用於對輸入數據進行分配,數據的分配受到計數器的控制;單通道CRC碼計算模塊用於計算出最終的CRC碼。通過本發明所構思的以上技術方案,與現有技術相比,本發明具有以下的有益效果I、通用性好在本發明中,由於採用了步驟(1),因此對於長度小於等於N *LS的任意長度的待計算數據都可以通過本發明來生成嵌套CRC碼。2、使用的存儲資源少在本發明中,由於採用了步驟(7),各計算通道計算得到的CRC子碼再一次通過CRC計算通道計算即可得到嵌套CRC碼,因此無需餘數轉換表,可以節省大量的存儲資源。3、處理速度快在本發明中,由於採用了步驟(3)和步驟(6),因此能夠實現對待計算數據的各數據塊同時進行多位並行CRC碼計算,從而在傳統的並行CRC碼計算的基礎上,進一步加快了處理的速度,可以適用於一些實時高速的數據傳輸網絡,例如IOGB乙太網。4、用途廣泛在本發明中,由於採用了步驟(2)和步驟(4),因此對於不同類型的待計算數據都可以通過本發明來生成嵌套CRC碼,比較適合於一些融合型網絡的應用,例如架構在IOGB乙太網上的FCoE網絡。5、差錯控制能力強在本發明中,由於採用了步驟(3)、(5)、(6)和步驟(7),因此 在計算過程中,可以為待計算數據的各數據段分配不同的CRC碼計算生成多項式,同時根據嵌套CRC碼的差錯控制原理,單個R位的CRC碼檢測的數據量減小,因此嵌套CRC碼的差錯控制能力優於傳統的CRC碼。
圖I是本發明嵌套CRC碼生成方法的流程圖。圖2是本發明嵌套CRC碼生成方法的原理框圖。圖3是本發明中數據分割器原理框圖。圖4是本發明中通道選擇器的原理框圖。圖5是本發明中反向通道選擇器的原理框圖。圖6是本發明嵌套CRC碼生成裝置的示意框圖。
具體實施例方式為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。以下首先就本發明的技術術語進行解釋和說明嵌套CRC碼將傳統的CRC碼計算器計算得到的CRC碼作為新的待計算數據,並利用傳統的CRC碼計算器對其進行CRC碼計算,得到的CRC碼即為單層嵌套CRC碼。若將得到的CRC碼依次繼續進行Q次CRC碼計算後,最終得到的CRC碼即為Q次嵌套CRC碼,其中Q為正整數。計算通道本發明中所提及的計算通道均為傳統的W位並行CRC碼計算器,其中W為各計算器單個時鐘周期所能處理的數據位數。各計算通道之間相互獨立,不存在關聯,均能夠獨立地對數據進行傳統的CRC碼計算。本發明一共採用N+1個計算通道,其中N為任意正整數。生成多項式g(x):生成多項式g(x)用於CRC碼計算中,是數據接收方和發送方約定好的一個二進位數,在數據傳送過程中,這個二進位數保持不變。g(x)的位數決定了 CRC碼的位數R。如圖I和圖2所示,本發明用於差錯控制的高速嵌套CRC碼生成方法包括以下步驟(I)數據分割器對待計算數據進行分段;具體而言,本步驟包括以下子步驟( 1-1)將數據分割器中的數據初始化為0,並根據計算通道的數量N確定數據分割器的最大分段數為N ;(1-2)參照圖3,為整個數據分割器生成N+1個指針(P。,P1,…,Pi,…,Pn)和N個指針(Pl,P2,…,Pi,…,pN),其中i為小於等於N的正整數,(Po, P1,-,Pi,-,Pn)將整個數據分割器分成N個長為Ls的數據段,按照N個數據段的順序,為每個數據段分配一個指針分別為(P1, Pu…,Pi,…,PN),其中Ls為任意正整數;(1-3)為指針(PtllP1,…Pi,…,Pn)分配固定值,其中Pi = PiJl^Pci的值可以取任 意值,整個計算過程中,Pi指針的值固定不變;( 1-4)為N個數據區域的指針(P1, P2,…,Pi,…,pN)分配初始值,並令(P1, P2,…,Pi,…,Pn)指針的初始值分別與(P。,P1,…,Pi+…,Pim)相等;(1-5)將待計算數據填充至數據分割器中,根據數據的填充情況,改變(Pl,p2,…,Pi,…,Pn)指針的值;a)若第i個數據區域中填充了長度為Ls的待計算數據,則將Pi的值賦為Pi ;b)若第i個數據區域未填充數據段,則保持Pi的值不變;c)對於第m個填充區域(其中m為待計算數據的長度除以Ls後上取整得到的值),由於待計算數據並不保證以Ls對齊,為了保證計算的同步性,若第m個數據區域的填充長度Lf (其中Lf為待計算數據的長度除以Ls後得到的餘數)大於O且小於Ls,則將pm的值賦為Pm,即將長度為Lf數據段的長度通過補零擴展至Ls,從而解決待計算數據長度不對齊的問題。(1-6)數據分割器將待計算數據分為m段,並將m的值傳遞給通道選擇器和反向通道選擇器;(1-7)利用(Pl,p2,pm)的值,以及計算通道的並行計算位數W,在每一個時鐘周期,向m個計算通道分別傳送W位數據,並將(Pl,p2,p3··· pm)的值均減去W ;(1-8)判斷(p」 p2,p3…pm)是否與(P0,P1, P2…Pm-i)的值相等,若相等,則進入步驟
(2),否則返回步驟(1-7);舉例而言,在本步驟中,設待計算數據的長度為[(m-1) · Ls+Lf],數據分割器的指針(Ptl, P1,…,Pm,…,PN_i)值預先分配好,將待計算數據放入數據分割器後,數據分割器自動將待計算數據分割成m段,序號為(1,2,3,…,m),並為m段數據各分配一個指針(Pl,P2,P3,…,Pm),(Pi, P2, P3, ···, Pm)的初始值設置為(P。, P1, P2, P3,…,Pnri)。待計算數據填充後,(P1, Pb …,Pm)的值被賦值為(P1, P2,Py…,Pm),其中第m個數據塊的長度為Lf (I彡Lf彡Ls),數據分割器初始值為0,將Pm的值由初始值Pnrl改變為Pm,等效於Pnri的值由Pm-JLf擴展為Pm,從而實現第m個數據塊的長度通過補零擴展為Ls。在計算過程中,通過(P1, P2, P3,…,Pm)來將待計算數據送入各計算通道,計算通道為W位並行計算,數據分割器每次向計算通道送入W位數據,並將(P1, Pa P3,…,Pm)的值分別減去W,若(P1, P2, P3,…,Pm)與(Po,P1,P2,…,Pnri)值相等時,則指示數據分割其中的數據計算完成。
(2)為分割後的各待計算數據段分配所需的計算通道,具體包括以下子步驟(2-1)針對不同類型數據的Q次嵌套CRC碼的生成(其中Q為正整數),為通道選擇器生成一張通道選擇表用於在不同類型數據的各次嵌套計算中,為數據輸入通道分配相應的計算通道,具體包括以下子步驟(2-1-1)對於N個計算通道和數據分割器的N個數據輸出通道,分別對其進行順序編號(1,2,3,…,i,…,N),其中i為I到N之間的任意值;(2-1-2)為通道選擇表的每一個表項分配一個長為A^「log2 位的矢量S(X),矢
量多項式為
權利要求
1.一種用於數據傳輸差錯控制的嵌套CRC碼生成方法,其特徵在於,包括以下步驟 (1)數據分割器對待計算數據進行分段,具體包括以下子步驟 (1-1)將數據分割器中的數據初始化為O,並根據計算通道的數量N確定數據分割器的最大分段數為N ; (1-2)為整個數據分割器生成N+1個指針(Ptl, P1,…,Pi,…,Pn)和N個指針(Pl,p2,…,Pi,…,Pn),其中i為小於等於N的正整數,(P0, P1,…,Pi,…,Pn)將整個數據分割器分成N個長為Ls的數據段,按照N個數據段的順序,為每個數據段分配一個指針分別為(Pl,P2,…,Pi,…,PN),其中Ls為任意正整數; (1-3)為指針(P0, P1, -Pi, - ,Pn)分配固定值,其中Pi =Ρη+Ι^,Ρ。的值可以取任意值,整個計算過程中,Pi指針的值固定不變; (1-4)為N個數據區域的指針(P1, P2,…,Pi,…,pN)分配初始值,並令(P1, P2,…,Pi,…,PN)指針的初始值分別與(Po,P1,…,Pm,…,Pim)相等; (1-5)將待計算數據填充至數據分割器中,根據數據的填充情況,改變(Pl,p2,-,Pi,-,Pn)指針的值; (1-6)數據分割器將待計算數據分為m段,並將m的值傳遞給通道選擇器和反向通道選擇器; (1-7)利用(ρι,ρ2,ρ3···ρπ)的值,以及計算通道的並行計算位數W,在每一個時鐘周期,向m個計算通道分別傳送W位數據,並將(P1, P2, Pf pm)的值均減去W ; (1-8)判斷(p」 p2,p3…pm)是否與(P0, P1, P2…Pnri)的值相等,若相等,則進入步驟(2),否則返回步驟(1-7); (2)為分割後的各待計算數據段分配所需的CRC碼計算通道,具體包括以下子步驟 (2-1)針對不同類型數據的Q次嵌套CRC碼的生成,為通道選擇器生成一張通道選擇表用於在不同類型數據的各次嵌套計算中,為數據輸入通道分配相應的計算通道,其中Q為正整數; (2-2)利用數據分割器傳遞的數據段總數m,通道選擇器選通用於連接數據分割器的m個序號為(1,2,3,···,ηι)的輸出與通道選擇器的開關; (2-3)根據開關選擇表,將選通的m個數據輸入分別連接至相應的計算通道之上; (3)各計算通道對各待計算數據段進行CRC子碼計算,具體包括以下子步驟 (3-1)為N個計算通道分別分配相應的生成多項式為(gjx), g2(x),…,gi (x),…,gN(x)),其中i為I到N之間的任意值,各通道之間可以採用同樣的生成多項式; (3-2)根據相應的生成多項式,利用邏輯電路或者查找餘數表的方法來實現W位並行計算的各計算通道; (3-3)根據各計算通道所採用的生成多項式,為各通道設置初始值,通常可以為各計算通道賦初始值為全零或者全一; (3-4)對各通道的輸入數據完成CRC子碼計算,得到m個CRC子碼; (4)對各通道計算所得到的CRC子碼進行排序,具體包括以下子步驟 (4-1)反向通道選擇器與通道選擇器共用一張通道選擇表; (4-2)依據數據分割器傳遞的待計算數據的分段總數m,反向通道選擇器選通序號為(I, 2,3,…,m)的CRC子碼暫存器與反向通道選擇器的連接開關。(4-3)根據開關選擇表,將選通的m個數據輸出分別連接至相應的計算通道的輸出之上; (4-4)各計算通道按照反向通道選擇器的選擇結果,將各計算通道計算所得的CRC子碼存入相應的CRC子碼暫存器,得到一串新的數據為(CRC1,CRC2,…,CRCi,…,CRCm),其中i為I到m之間的任意值,CRCi對應第i個數據段計算所得到的CRC子碼; (5)判斷是否需要再次進行多通道計算,如果需要,則將步驟(4)得到的CRC子碼作為新的待計算數據,返回步驟(I);如果不需要,則進入步驟(6),具體包括以下子步驟 (5-1)將CRC碼的嵌套次數Q的值減去I ; (5-2)判斷Q的值是否為O,若Q的值為O,則進入步驟(6);若Q的值不為零,則以(4)步驟中排序好的CRC子碼數據作為新的待計算數據,並返回步驟(I); (6)第N+1個計算通道計算出最終的Q次嵌套CRC碼,具體包括以下子步驟 (6-1)為第N+1個CRC計算通道分配生成多項式gN+1 (X); (6-2)根據生成多項式,利用邏輯電路或者查找餘數表的方法來實現W位並行計算的計算通道; (6-3)為該計算通道設置初始值,通常可以為該計算通道賦初始值為全零或者全一; (6-4)對多計算通道第Q次計算並經過排序所得到的CRC子碼數據進行最後一次CRC碼計算,得到最終的Q次嵌套CRC碼。
2.根據權利要求I所述的高速嵌套CRC碼生成方法,其特徵在於,步驟(1-5)中,(P1, P2,…,Pi,…,Pn)的賦值情況為 a)若第i個數據區域中填充了長度為Ls的待計算數據,則將Pi的值賦為Pi; b)若第i個數據區域未填充數據段,則保持Pi的值不變; c)對於第m個填充區域,由於待計算數據並不保證以Ls對齊,為了保證計算的同步性,若第m個數據區域的填充長度Lf大於O且小於Ls,則將pm的值賦為Pm,即將長度為Lf數據段的長度通過補零擴展至Ls,其中m為待計算數據的長度除以Ls後上取整得到的值,Lf為待計算數據的長度除以Ls後得到的餘數。
3.根據權利要求I所述的高速嵌套CRC碼生成方法,其特徵在於,步驟(2-1)具體包括以下子步驟 (2-1-1)對於N個計算通道和數據分割器的N個數據輸出通道,分別對其進行順序編號(1,2, 3,…,i,"·,Ν),其中i為I到N之間的任意值; (2-1-2)為通道選擇表的每一個表項分配一個長為iV^「log2 位的矢量S (X),矢量多項式為S(X) = OTvfiog2 Λτ-|_1ΧΛ'ΓΙ°82Λ^1 + wAflog2 JV>2 Xjv'1"'08' Λ +--- + MiX' +■■■ +ITI1X1 + moX°其中 IIii = I 或 O (其中 i = O, 1,2,…,Ar-[Iog2 Ar]-1);(2-1-3)將 S(X)分成 N 段長為「log2 7V"|的矢量(S1(X), s2(x),...,Si(X), ...,sN(x)),其中i為I到N之間的任意值,(S1(X), s2 (X),…,Si (X),…,sN(x))對應數據分割器的N個數據輸出(1,2,3,…i,···,N),其中Si(X)為分配給第i個數據輸入的計算通道的序號; (2-1-4)固定待計算數據的數據類型,針對每一次嵌套CRC碼的生成,生成Q個相應的S(x),作為一行表項保存在開關選擇表中;(2-1-5)針對待計算數據的每一種數據類型,重複步驟(2-1-4),以構成完整的通道選擇表。
4.一種用於數據傳輸差錯控制的嵌套CRC碼生成裝置,包括數據分段模塊、計算通道選擇模塊、多通道CRC碼計算模塊、數據排序模塊、寄存器、計數器、數據分配器、單通道CRC碼計算模塊,其特徵在於, 數據分段模塊用於將待計算數據按照一定的數據長度自動分段並通過補零的方法使各數據段長度對齊,並在時鐘的控制下,將各數據段按照一定的位數依次傳送出去; 計算通道選擇模塊用於將各輸入數據通道連接至所需要的計算通道之上; 多通道CRC碼計算模塊用於同時對多個數據段計算CRC碼; 數據排序模塊用於將各輸入數據通道連接至所需要的寄存器之上; 寄存器用於存儲CRC碼; 計數器用於記錄CRC碼的計算次數,並控制數據分配器的數據輸出; 數據分配器用於對輸入數據進行分配,數據的分配受到計數器的控制; 單通道CRC碼計算模塊用於計算最終的CRC碼。
全文摘要
本發明公開了一種用於數據傳輸差錯控制的嵌套CRC碼生成方法,包括對待計算數據進行分段,根據數據類型為各數據段分配所需CRC碼計算通道,各計算通道進行CRC碼計算,對計算得到的各CRC子碼進行排序。根據實際需要,排序後的CRC子碼可直接送入最終的CRC碼計算通道,也可作為新的待計算數據,多次重複上述CRC子碼計算再送入最終的CRC碼計算通道生成嵌套CRC碼。本發明還公開了一種嵌套CRC碼生成裝置,包括數據分段模塊、計算通道選擇模塊、多通道CRC碼計算模塊、數據排序模塊、寄存器、計數器、數據分配器、單通道CRC碼計算模塊。本發明的裝置計算速度快,靈活性好,並且採用本發明的方法,因此所需存儲容量小、糾錯能力強,適用的範圍廣。
文檔編號H04L1/00GK102946297SQ20121044660
公開日2013年2月27日 申請日期2012年11月10日 優先權日2012年11月10日
發明者周文利, 段斌斌 申請人:華中科技大學