亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套crc碼生成方法及裝置的制作方法

文檔序號:7865087閱讀:188來源:國知局
專利名稱:一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套crc碼生成方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于通信及計(jì)算機(jī)數(shù)據(jù)傳輸差錯(cuò)控制技術(shù)領(lǐng)域,更具體地,涉及一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成方法及裝置。
背景技術(shù)
在各種各樣的數(shù)據(jù)通信中,一般都是將數(shù)據(jù)分組后進(jìn)行傳輸,在分組數(shù)據(jù)后附加數(shù)據(jù)巾貞校驗(yàn)序列(Frame Check Sequence,簡稱FCS)進(jìn)行差錯(cuò)控制,以保證傳輸?shù)恼_性。在中貞校驗(yàn)序列的實(shí)現(xiàn)中,循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Code,簡稱CRC)以其高效率、高性能獲得了廣泛應(yīng)用,是目前數(shù)據(jù)傳輸過程中普遍采用的一種提高數(shù)據(jù)通信可靠性的辦法。數(shù)據(jù)發(fā)送過程中,發(fā)送端將需要傳送的數(shù)據(jù)進(jìn)行CRC校驗(yàn)碼計(jì)算,并將校驗(yàn)碼附 在傳送數(shù)據(jù)后一起發(fā)送。接收端需要用同樣的計(jì)算方法對接收到的數(shù)據(jù)進(jìn)行校驗(yàn)碼計(jì)算,然后將計(jì)算得到的CRC碼與接收到的CRC碼進(jìn)行比較,如果一致則說明數(shù)據(jù)傳送無誤,反之?dāng)?shù)據(jù)傳送有差錯(cuò)。如果數(shù)據(jù)傳送有誤,可以采用各種自動重發(fā)請求(AutomaticRepeat-request,簡稱ARQ)技術(shù)讓發(fā)送端重新傳送該數(shù)據(jù)。在現(xiàn)有的技術(shù)中,CRC編碼的計(jì)算可以由軟件和硬件完成。軟件和硬件均分為串行與并行兩種方式。在實(shí)時(shí)高速數(shù)據(jù)通信中,為了達(dá)到實(shí)時(shí)高速的要求,多采用并行CRC編碼計(jì)算來提高運(yùn)算速度。目前通用的并行計(jì)算主要有兩種,一種是通過異或邏輯和余數(shù)緩存器及相關(guān)控制電路組成,可采用可編程邏輯器件(programmable logic device,簡稱PLD)、現(xiàn)場可編程門陣列(Field Programmable Gate Array,簡稱FPGA)等器件實(shí)現(xiàn)。另一種是通過查找余數(shù)表實(shí)現(xiàn),該方法可以通過預(yù)先計(jì)算好余數(shù)表,并儲存余數(shù)表,由軟、硬件查找余數(shù)表來實(shí)現(xiàn)并行計(jì)算。在第一種實(shí)現(xiàn)方式中,隨著并行計(jì)算的位數(shù)增加,所需要的邏輯資源也大量增加,而且隨著級聯(lián)的邏輯門越來越多,會導(dǎo)致寄存器之間的延時(shí)不斷增加,成為提升計(jì)算速度的瓶頸。在第二種并行計(jì)算方法中,對于R位的CRC并行計(jì)算,需要保存的余數(shù)表容量為(2K *R)bit,因此,隨著并行計(jì)算位數(shù)R的增加,存儲的容量也會呈指數(shù)上升,成為提升計(jì)算速度的瓶頸。在并行計(jì)算的基礎(chǔ)之上,為了進(jìn)一步提升CRC編碼計(jì)算的速度,可以通過對數(shù)據(jù)塊進(jìn)行預(yù)先分段,利用多個(gè)并行CRC計(jì)算通道對各數(shù)據(jù)塊同時(shí)進(jìn)行計(jì)算,從而進(jìn)一步提升CRC計(jì)算速度。公布號為CN1431594A的中國發(fā)明專利申請公開了一種多通道多位并行計(jì)算CRC碼的方法。該方法直接將整個(gè)待計(jì)算CRC碼數(shù)據(jù)按每個(gè)長度為Ls位分割成多個(gè)數(shù)據(jù)塊,最后一個(gè)通道的數(shù)據(jù)長度為Lf,并將各數(shù)據(jù)塊按順序依次放入N個(gè)通道,由該N個(gè)通道同時(shí)對各自通道中的數(shù)據(jù)塊進(jìn)行CRC計(jì)算,得到N個(gè)通道中數(shù)據(jù)塊的CRC子碼;再通過構(gòu)建除法余數(shù)變換表,對前N-I個(gè)通道的CRC子碼進(jìn)行除法余數(shù)變換查表(最后一個(gè)通道不需要進(jìn)行余數(shù)變換),得到變換后的CRC子碼;最后對變換后的CRC子碼逐一進(jìn)行異或計(jì)算后,得到整個(gè)待計(jì)算數(shù)據(jù)CRC碼。但是,該方法需要對N-I個(gè)通道計(jì)算的CRC子碼依次進(jìn)行余數(shù)轉(zhuǎn)后才能得到各通道需要的CRC計(jì)算碼,因而存在以下缺點(diǎn)I)按照該專利的說明,前N-I個(gè)通道中計(jì)算得到的CRC子碼,需要再通過構(gòu)建除法余數(shù)變換表,對N個(gè)通道的CRC子碼進(jìn)行除法余數(shù)變換查表,才能得到需要的CRC子碼。其中第i(i為小于N的正整數(shù))個(gè)通道的余數(shù)轉(zhuǎn)換表中的表項(xiàng),是通過對典型數(shù)據(jù)余數(shù)表中每一個(gè)表項(xiàng)進(jìn)行[(N-i) .Q+P]次連續(xù)查表得到的,其中Ls為所計(jì)算的CRC碼位數(shù)R的Q倍,最后一個(gè)通道的數(shù)據(jù)長度Lf為計(jì)算CRC位數(shù)R的P倍。因此,隨著待計(jì)算數(shù)據(jù)的長度變化,會導(dǎo)致N、P兩個(gè)變量發(fā)生變化,單個(gè)通道對應(yīng)的余數(shù)表則隨著這兩個(gè)參數(shù)而發(fā)生變化,從而無法為每個(gè)通道分配固定的余數(shù)變換表。2)按照該專利的說明,需要為前N-I個(gè)通道的每一個(gè)通道分配一個(gè)余數(shù)轉(zhuǎn)換表,這使得計(jì)算器需要的存儲容量大大增加。如建立一個(gè)N通道的運(yùn)算器,余數(shù)轉(zhuǎn)換表需要的存儲容量為[(N-I) ·2Ε· RJbit0因此,隨著所計(jì)算CRC碼位數(shù)R的增加,整個(gè)計(jì)算器需要分配給余數(shù)轉(zhuǎn)換表的存儲容量將急劇上升。例如在32位CRC計(jì)算中,單個(gè)通道需要的余數(shù)轉(zhuǎn)換表的存儲容量為16GB的容量。

發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于提供一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成方法,旨在解決現(xiàn)有多通道多位并行CRC碼生成方法中存儲容量耗費(fèi)大、通用性較差的問題,并且嵌套CRC碼的糾錯(cuò)能力優(yōu)于傳統(tǒng)的CRC碼。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成方法,包括以下步驟(I)數(shù)據(jù)分割器對待計(jì)算數(shù)據(jù)進(jìn)行分段,具體包括以下子步驟(ι-l)將數(shù)據(jù)分割器中的數(shù)據(jù)初始化為0,并根據(jù)計(jì)算通道的數(shù)量N確定數(shù)據(jù)分割器的最大分段數(shù)為N ;(1-2)為整個(gè)數(shù)據(jù)分割器生成Ν+1個(gè)指針(P。,P1,…,Pi,…,Pn)和N個(gè)指針(Pl,P2,…,Pi,…,ρΝ),其中i為小于等于N的正整數(shù),(Po,Po,…,Pi,…,Pn)將整個(gè)數(shù)據(jù)分割器分成N個(gè)長為Ls的數(shù)據(jù)段,按照N個(gè)數(shù)據(jù)段的順序,為每個(gè)數(shù)據(jù)段分配一個(gè)指針分別為(P1, P2,…,Pi,…,pN),其中Ls為任意正整數(shù);(1-3)為指針(PtllP1,…Pi,…,Pn)分配固定值,其中Pi = PiJLs,P。的值可以取任意值,整個(gè)計(jì)算過程中,Pi指針的值固定不變;(1-4)為N個(gè)數(shù)據(jù)區(qū)域的指針(P1, p2,…,Pi, ...,pN)分配初始值,并令(P1, P2,…,Pi,…,Pn)指針的初始值分別與(P。,P1,…,Pm,…,Pm)相等;(1-5)將待計(jì)算數(shù)據(jù)填充至數(shù)據(jù)分割器中,根據(jù)數(shù)據(jù)的填充情況,改變(Pl,p2,…,Pi,…,PN)指針的值;(1-6)數(shù)據(jù)分割器將待計(jì)算數(shù)據(jù)分為m段,并將m的值傳遞給通道選擇器和反向通道選擇器;(1-7)利用(Pl,p2,pm)的值,以及計(jì)算通道的并行計(jì)算位數(shù)W,在每一個(gè)時(shí)鐘周期,向m個(gè)計(jì)算通道分別傳送W位數(shù)據(jù),并將(Pl,p2,p3··· pm)的值均減去W ;(1-8)判斷(PuPhPfPm)是否與(Pc^P11PfPm-I)的值相等,若相等,貝1J進(jìn)入步驟(2),否則返回步驟(1-7);
(2)為分割后的各待計(jì)算數(shù)據(jù)段分配所需的CRC碼計(jì)算通道,具體包括以下子步驟(2-1)針對不同類型數(shù)據(jù)的Q次嵌套CRC碼的生成,為通道選擇器生成一張通道選擇表用于在不同類型數(shù)據(jù)的各次嵌套計(jì)算中,為數(shù)據(jù)輸入通道分配相應(yīng)的計(jì)算通道,其中Q為正整數(shù);(2-2)利用數(shù)據(jù)分割器傳遞的數(shù)據(jù)段總數(shù)m,通道選擇器選通用于連接數(shù)據(jù)分割器的m個(gè)序號為(1,2,3,···,ηι)的輸出與通道選擇器的開關(guān);(2-3)根據(jù)開關(guān)選擇表,將選通的m個(gè)數(shù)據(jù)輸入分別連接至相應(yīng)的計(jì)算通道之上;(3)各計(jì)算通道對各待計(jì)算數(shù)據(jù)段進(jìn)行CRC子碼計(jì)算,具體包括以下子步驟(3-1)為N個(gè)計(jì)算通道分別分配相應(yīng)的生成多項(xiàng)式為(gj (x), g2 (x), ···,gi (x),... ,gN(X)),其中i為I到N之間的任意值,各通道之間可以采用同樣的生成多項(xiàng)式;(3-2)根據(jù)相應(yīng)的生成多項(xiàng)式,利用邏輯電路或者查找余數(shù)表的方法來實(shí)現(xiàn)W位并行計(jì)算的各計(jì)算通道;(3-3)根據(jù)各計(jì)算通道所采用的生成多項(xiàng)式,為各通道設(shè)置初始值,通常可以為各計(jì)算通道賦初始值為全零或者全一;(3-4)對各通道的輸入數(shù)據(jù)完成CRC子碼計(jì)算,得到m個(gè)CRC子碼;(4)對各通道計(jì)算所得到的CRC子碼進(jìn)行排序,具體包括以下子步驟(4-1)反向通道選擇器與通道選擇器共用一張通道選擇表;(4-2)依據(jù)數(shù)據(jù)分割器傳遞的待計(jì)算數(shù)據(jù)的分段總數(shù)m,反向通道選擇器選通序號為(1,2,3,···,!!!)的CRC子碼暫存器與反向通道選擇器的連接開關(guān)。(4-3)根據(jù)開關(guān)選擇表,將選通的m個(gè)數(shù)據(jù)輸出分別連接至相應(yīng)的計(jì)算通道的輸出之上;(4-4)各計(jì)算通道按照反向通道選擇器的選擇結(jié)果,將各計(jì)算通道計(jì)算所得的CRC子碼存入相應(yīng)的CRC子碼暫存器,得到一串新的數(shù)據(jù)為(CRC1,CRC2,…,CRCi,…,CRCm),其中i為I到m之間的任意值,CRCi對應(yīng)第i個(gè)數(shù)據(jù)段計(jì)算所得到的CRC子碼;(5)判斷是否需要再次進(jìn)行多通道計(jì)算,如果需要,則將步驟(4)得到的CRC子碼作為新的待計(jì)算數(shù)據(jù),返回步驟(I);如果不需要,則進(jìn)入步驟(6),具體包括以下子步驟(5-1)將CRC碼的嵌套次數(shù)Q的值減去I ;(5-2)判斷Q的值是否為0,若Q的值為0,則進(jìn)入步驟(6);若Q的值不為零,則以
(4)步驟中排序好的CRC子碼數(shù)據(jù)作為新的待計(jì)算數(shù)據(jù),并返回步驟(I)進(jìn)行計(jì)算;(6)第N+1個(gè)計(jì)算通道計(jì)算出最終的Q次嵌套CRC碼,具體包括以下子步驟(6-1)為第N+1個(gè)CRC計(jì)算通道分配生成多項(xiàng)式gN+1 (x);(6-2)根據(jù)生成多項(xiàng)式,利用邏輯電路或者查找余數(shù)表的方法來實(shí)現(xiàn)W位并行計(jì)算的計(jì)算通道;(6-3)為該計(jì)算通道設(shè)置初始值,通常可以為該計(jì)算通道賦初始值為全零或者全(6-4)對多通道第Q次計(jì)算并經(jīng)過排序所得到的CRC子碼數(shù)據(jù)進(jìn)行最后一次CRC碼計(jì)算,得到最終的Q次嵌套CRC碼。步驟(1-5)中,(P1, P2,…,Pi,…,pN)的賦值情況為
a)若第i個(gè)數(shù)據(jù)區(qū)域中填充了長度為Ls的待計(jì)算數(shù)據(jù),則將Pi的值賦為Pi ;b)若第i個(gè)數(shù)據(jù)區(qū)域未填充數(shù)據(jù)段,則保持Pi的值不變;c)對于第m個(gè)填充區(qū)域,由于待計(jì)算數(shù)據(jù)并不保證以Ls對齊,為了保證計(jì)算的同步性,若第m個(gè)數(shù)據(jù)區(qū)域的填充長度Lf大于O且小于Ls,則將pm的值賦為Pm,即將長度為Lf數(shù)據(jù)段的長度通過補(bǔ)零擴(kuò)展至Ls,其中m為待計(jì)算數(shù)據(jù)的長度除以Ls后上取整得到的值,Lf為待計(jì)算數(shù)據(jù)的長度除以Ls后得到的余數(shù)。步驟(2-1)具體包括以下子步驟(2-1-1)對于N個(gè)計(jì)算通道和數(shù)據(jù)分割器的N個(gè)數(shù)據(jù)輸出通道,分別對其進(jìn)行順序編號(1,2, 3,…i,…,N),其中i為I到N之間的任意值;(2-1-2)為通道選擇表的每一個(gè)表項(xiàng)分配一個(gè)長為N ·「Iog2N]位的矢量S(X),矢·
量多項(xiàng)式為
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))對應(yīng)數(shù)據(jù)分割器的N個(gè)數(shù)據(jù)輸出(1,2,3,···,i,···,N),其中Si(X)為分配給第i個(gè)數(shù)據(jù)輸入的計(jì)算通道的序號;(2-1-4)固定待計(jì)算數(shù)據(jù)的數(shù)據(jù)類型,針對每一次嵌套CRC碼的生成,生成Q個(gè)相應(yīng)的S(X),作為一行表項(xiàng)保存在開關(guān)選擇表中;(2-1-5)針對待計(jì)算數(shù)據(jù)的每一種數(shù)據(jù)類型,重復(fù)步驟(2-1-4),以構(gòu)成完整的通道選擇表。本發(fā)明的另一目的在于提供一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成裝置,該裝置一方面采用多通道多位并行計(jì)算CRC碼,另一方面可以自動根據(jù)待計(jì)算數(shù)據(jù)的類型,為待計(jì)算數(shù)據(jù)選擇不同的計(jì)算通道組合,因此該裝置具有計(jì)算速度快,靈活性高等特點(diǎn)。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成裝置,包括數(shù)據(jù)分段模塊、計(jì)算通道選擇模塊、多通道CRC碼計(jì)算模塊、數(shù)據(jù)排序模塊、寄存器、計(jì)數(shù)器、數(shù)據(jù)分配器、單通道CRC碼計(jì)算模塊。數(shù)據(jù)分段模塊用于將待計(jì)算數(shù)據(jù)按照一定的數(shù)據(jù)長度自動分段并通過補(bǔ)零的方法使各數(shù)據(jù)段長度對齊,并在時(shí)鐘的控制下,將各數(shù)據(jù)段按照一定的位數(shù)依次傳送出去;計(jì)算通道選擇模塊用于將各輸入數(shù)據(jù)通道連接至所需要的計(jì)算通道之上;多通道CRC碼計(jì)算模塊用于同時(shí)對多個(gè)數(shù)據(jù)段計(jì)算CRC碼;數(shù)據(jù)排序模塊用于將各輸入數(shù)據(jù)通道連接至所需要的寄存器之上;寄存器用于存儲CRC碼;計(jì)數(shù)器用于記錄CRC碼的計(jì)算次數(shù),并控制數(shù)據(jù)分配器的數(shù)據(jù)輸出;數(shù)據(jù)分配器用于對輸入數(shù)據(jù)進(jìn)行分配,數(shù)據(jù)的分配受到計(jì)數(shù)器的控制;單通道CRC碼計(jì)算模塊用于計(jì)算出最終的CRC碼。通過本發(fā)明所構(gòu)思的以上技術(shù)方案,與現(xiàn)有技術(shù)相比,本發(fā)明具有以下的有益效果I、通用性好在本發(fā)明中,由于采用了步驟(1),因此對于長度小于等于N *LS的任意長度的待計(jì)算數(shù)據(jù)都可以通過本發(fā)明來生成嵌套CRC碼。2、使用的存儲資源少在本發(fā)明中,由于采用了步驟(7),各計(jì)算通道計(jì)算得到的CRC子碼再一次通過CRC計(jì)算通道計(jì)算即可得到嵌套CRC碼,因此無需余數(shù)轉(zhuǎn)換表,可以節(jié)省大量的存儲資源。3、處理速度快在本發(fā)明中,由于采用了步驟(3)和步驟(6),因此能夠?qū)崿F(xiàn)對待計(jì)算數(shù)據(jù)的各數(shù)據(jù)塊同時(shí)進(jìn)行多位并行CRC碼計(jì)算,從而在傳統(tǒng)的并行CRC碼計(jì)算的基礎(chǔ)上,進(jìn)一步加快了處理的速度,可以適用于一些實(shí)時(shí)高速的數(shù)據(jù)傳輸網(wǎng)絡(luò),例如IOGB以太網(wǎng)。4、用途廣泛在本發(fā)明中,由于采用了步驟(2)和步驟(4),因此對于不同類型的待計(jì)算數(shù)據(jù)都可以通過本發(fā)明來生成嵌套CRC碼,比較適合于一些融合型網(wǎng)絡(luò)的應(yīng)用,例如架構(gòu)在IOGB以太網(wǎng)上的FCoE網(wǎng)絡(luò)。5、差錯(cuò)控制能力強(qiáng)在本發(fā)明中,由于采用了步驟(3)、(5)、(6)和步驟(7),因此 在計(jì)算過程中,可以為待計(jì)算數(shù)據(jù)的各數(shù)據(jù)段分配不同的CRC碼計(jì)算生成多項(xiàng)式,同時(shí)根據(jù)嵌套CRC碼的差錯(cuò)控制原理,單個(gè)R位的CRC碼檢測的數(shù)據(jù)量減小,因此嵌套CRC碼的差錯(cuò)控制能力優(yōu)于傳統(tǒng)的CRC碼。


圖I是本發(fā)明嵌套CRC碼生成方法的流程圖。圖2是本發(fā)明嵌套CRC碼生成方法的原理框圖。圖3是本發(fā)明中數(shù)據(jù)分割器原理框圖。圖4是本發(fā)明中通道選擇器的原理框圖。圖5是本發(fā)明中反向通道選擇器的原理框圖。圖6是本發(fā)明嵌套CRC碼生成裝置的示意框圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。以下首先就本發(fā)明的技術(shù)術(shù)語進(jìn)行解釋和說明嵌套CRC碼將傳統(tǒng)的CRC碼計(jì)算器計(jì)算得到的CRC碼作為新的待計(jì)算數(shù)據(jù),并利用傳統(tǒng)的CRC碼計(jì)算器對其進(jìn)行CRC碼計(jì)算,得到的CRC碼即為單層嵌套CRC碼。若將得到的CRC碼依次繼續(xù)進(jìn)行Q次CRC碼計(jì)算后,最終得到的CRC碼即為Q次嵌套CRC碼,其中Q為正整數(shù)。計(jì)算通道本發(fā)明中所提及的計(jì)算通道均為傳統(tǒng)的W位并行CRC碼計(jì)算器,其中W為各計(jì)算器單個(gè)時(shí)鐘周期所能處理的數(shù)據(jù)位數(shù)。各計(jì)算通道之間相互獨(dú)立,不存在關(guān)聯(lián),均能夠獨(dú)立地對數(shù)據(jù)進(jìn)行傳統(tǒng)的CRC碼計(jì)算。本發(fā)明一共采用N+1個(gè)計(jì)算通道,其中N為任意正整數(shù)。生成多項(xiàng)式g(x):生成多項(xiàng)式g(x)用于CRC碼計(jì)算中,是數(shù)據(jù)接收方和發(fā)送方約定好的一個(gè)二進(jìn)制數(shù),在數(shù)據(jù)傳送過程中,這個(gè)二進(jìn)制數(shù)保持不變。g(x)的位數(shù)決定了 CRC碼的位數(shù)R。如圖I和圖2所示,本發(fā)明用于差錯(cuò)控制的高速嵌套CRC碼生成方法包括以下步驟(I)數(shù)據(jù)分割器對待計(jì)算數(shù)據(jù)進(jìn)行分段;具體而言,本步驟包括以下子步驟( 1-1)將數(shù)據(jù)分割器中的數(shù)據(jù)初始化為0,并根據(jù)計(jì)算通道的數(shù)量N確定數(shù)據(jù)分割器的最大分段數(shù)為N ;(1-2)參照圖3,為整個(gè)數(shù)據(jù)分割器生成N+1個(gè)指針(P。,P1,…,Pi,…,Pn)和N個(gè)指針(Pl,P2,…,Pi,…,pN),其中i為小于等于N的正整數(shù),(Po, P1,-,Pi,-,Pn)將整個(gè)數(shù)據(jù)分割器分成N個(gè)長為Ls的數(shù)據(jù)段,按照N個(gè)數(shù)據(jù)段的順序,為每個(gè)數(shù)據(jù)段分配一個(gè)指針分別為(P1, Pu…,Pi,…,PN),其中Ls為任意正整數(shù);(1-3)為指針(PtllP1,…Pi,…,Pn)分配固定值,其中Pi = PiJl^Pci的值可以取任 意值,整個(gè)計(jì)算過程中,Pi指針的值固定不變;( 1-4)為N個(gè)數(shù)據(jù)區(qū)域的指針(P1, P2,…,Pi,…,pN)分配初始值,并令(P1, P2,…,Pi,…,Pn)指針的初始值分別與(P。,P1,…,Pi+…,Pim)相等;(1-5)將待計(jì)算數(shù)據(jù)填充至數(shù)據(jù)分割器中,根據(jù)數(shù)據(jù)的填充情況,改變(Pl,p2,…,Pi,…,Pn)指針的值;a)若第i個(gè)數(shù)據(jù)區(qū)域中填充了長度為Ls的待計(jì)算數(shù)據(jù),則將Pi的值賦為Pi ;b)若第i個(gè)數(shù)據(jù)區(qū)域未填充數(shù)據(jù)段,則保持Pi的值不變;c)對于第m個(gè)填充區(qū)域(其中m為待計(jì)算數(shù)據(jù)的長度除以Ls后上取整得到的值),由于待計(jì)算數(shù)據(jù)并不保證以Ls對齊,為了保證計(jì)算的同步性,若第m個(gè)數(shù)據(jù)區(qū)域的填充長度Lf (其中Lf為待計(jì)算數(shù)據(jù)的長度除以Ls后得到的余數(shù))大于O且小于Ls,則將pm的值賦為Pm,即將長度為Lf數(shù)據(jù)段的長度通過補(bǔ)零擴(kuò)展至Ls,從而解決待計(jì)算數(shù)據(jù)長度不對齊的問題。(1-6)數(shù)據(jù)分割器將待計(jì)算數(shù)據(jù)分為m段,并將m的值傳遞給通道選擇器和反向通道選擇器;(1-7)利用(Pl,p2,pm)的值,以及計(jì)算通道的并行計(jì)算位數(shù)W,在每一個(gè)時(shí)鐘周期,向m個(gè)計(jì)算通道分別傳送W位數(shù)據(jù),并將(Pl,p2,p3··· pm)的值均減去W ;(1-8)判斷(p” p2,p3…pm)是否與(P0,P1, P2…Pm-i)的值相等,若相等,則進(jìn)入步驟
(2),否則返回步驟(1-7);舉例而言,在本步驟中,設(shè)待計(jì)算數(shù)據(jù)的長度為[(m-1) · Ls+Lf],數(shù)據(jù)分割器的指針(Ptl, P1,…,Pm,…,PN_i)值預(yù)先分配好,將待計(jì)算數(shù)據(jù)放入數(shù)據(jù)分割器后,數(shù)據(jù)分割器自動將待計(jì)算數(shù)據(jù)分割成m段,序號為(1,2,3,…,m),并為m段數(shù)據(jù)各分配一個(gè)指針(Pl,P2,P3,…,Pm),(Pi, P2, P3, ···, Pm)的初始值設(shè)置為(P。, P1, P2, P3,…,Pnri)。待計(jì)算數(shù)據(jù)填充后,(P1, Pb …,Pm)的值被賦值為(P1, P2,Py…,Pm),其中第m個(gè)數(shù)據(jù)塊的長度為Lf (I彡Lf彡Ls),數(shù)據(jù)分割器初始值為0,將Pm的值由初始值Pnrl改變?yōu)镻m,等效于Pnri的值由Pm-JLf擴(kuò)展為Pm,從而實(shí)現(xiàn)第m個(gè)數(shù)據(jù)塊的長度通過補(bǔ)零擴(kuò)展為Ls。在計(jì)算過程中,通過(P1, P2, P3,…,Pm)來將待計(jì)算數(shù)據(jù)送入各計(jì)算通道,計(jì)算通道為W位并行計(jì)算,數(shù)據(jù)分割器每次向計(jì)算通道送入W位數(shù)據(jù),并將(P1, Pa P3,…,Pm)的值分別減去W,若(P1, P2, P3,…,Pm)與(Po,P1,P2,…,Pnri)值相等時(shí),則指示數(shù)據(jù)分割其中的數(shù)據(jù)計(jì)算完成。
(2)為分割后的各待計(jì)算數(shù)據(jù)段分配所需的計(jì)算通道,具體包括以下子步驟(2-1)針對不同類型數(shù)據(jù)的Q次嵌套CRC碼的生成(其中Q為正整數(shù)),為通道選擇器生成一張通道選擇表用于在不同類型數(shù)據(jù)的各次嵌套計(jì)算中,為數(shù)據(jù)輸入通道分配相應(yīng)的計(jì)算通道,具體包括以下子步驟(2-1-1)對于N個(gè)計(jì)算通道和數(shù)據(jù)分割器的N個(gè)數(shù)據(jù)輸出通道,分別對其進(jìn)行順序編號(1,2,3,…,i,…,N),其中i為I到N之間的任意值;(2-1-2)為通道選擇表的每一個(gè)表項(xiàng)分配一個(gè)長為A^「log2 位的矢量S(X),矢
量多項(xiàng)式為
權(quán)利要求
1.一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成方法,其特征在于,包括以下步驟 (1)數(shù)據(jù)分割器對待計(jì)算數(shù)據(jù)進(jìn)行分段,具體包括以下子步驟 (1-1)將數(shù)據(jù)分割器中的數(shù)據(jù)初始化為O,并根據(jù)計(jì)算通道的數(shù)量N確定數(shù)據(jù)分割器的最大分段數(shù)為N ; (1-2)為整個(gè)數(shù)據(jù)分割器生成N+1個(gè)指針(Ptl, P1,…,Pi,…,Pn)和N個(gè)指針(Pl,p2,…,Pi,…,Pn),其中i為小于等于N的正整數(shù),(P0, P1,…,Pi,…,Pn)將整個(gè)數(shù)據(jù)分割器分成N個(gè)長為Ls的數(shù)據(jù)段,按照N個(gè)數(shù)據(jù)段的順序,為每個(gè)數(shù)據(jù)段分配一個(gè)指針分別為(Pl,P2,…,Pi,…,PN),其中Ls為任意正整數(shù); (1-3)為指針(P0, P1, -Pi, - ,Pn)分配固定值,其中Pi =Ρη+Ι^,Ρ。的值可以取任意值,整個(gè)計(jì)算過程中,Pi指針的值固定不變; (1-4)為N個(gè)數(shù)據(jù)區(qū)域的指針(P1, P2,…,Pi,…,pN)分配初始值,并令(P1, P2,…,Pi,…,PN)指針的初始值分別與(Po,P1,…,Pm,…,Pim)相等; (1-5)將待計(jì)算數(shù)據(jù)填充至數(shù)據(jù)分割器中,根據(jù)數(shù)據(jù)的填充情況,改變(Pl,p2,-,Pi,-,Pn)指針的值; (1-6)數(shù)據(jù)分割器將待計(jì)算數(shù)據(jù)分為m段,并將m的值傳遞給通道選擇器和反向通道選擇器; (1-7)利用(ρι,ρ2,ρ3···ρπ)的值,以及計(jì)算通道的并行計(jì)算位數(shù)W,在每一個(gè)時(shí)鐘周期,向m個(gè)計(jì)算通道分別傳送W位數(shù)據(jù),并將(P1, P2, Pf pm)的值均減去W ; (1-8)判斷(p” p2,p3…pm)是否與(P0, P1, P2…Pnri)的值相等,若相等,則進(jìn)入步驟(2),否則返回步驟(1-7); (2)為分割后的各待計(jì)算數(shù)據(jù)段分配所需的CRC碼計(jì)算通道,具體包括以下子步驟 (2-1)針對不同類型數(shù)據(jù)的Q次嵌套CRC碼的生成,為通道選擇器生成一張通道選擇表用于在不同類型數(shù)據(jù)的各次嵌套計(jì)算中,為數(shù)據(jù)輸入通道分配相應(yīng)的計(jì)算通道,其中Q為正整數(shù); (2-2)利用數(shù)據(jù)分割器傳遞的數(shù)據(jù)段總數(shù)m,通道選擇器選通用于連接數(shù)據(jù)分割器的m個(gè)序號為(1,2,3,···,ηι)的輸出與通道選擇器的開關(guān); (2-3)根據(jù)開關(guān)選擇表,將選通的m個(gè)數(shù)據(jù)輸入分別連接至相應(yīng)的計(jì)算通道之上; (3)各計(jì)算通道對各待計(jì)算數(shù)據(jù)段進(jìn)行CRC子碼計(jì)算,具體包括以下子步驟 (3-1)為N個(gè)計(jì)算通道分別分配相應(yīng)的生成多項(xiàng)式為(gjx), g2(x),…,gi (x),…,gN(x)),其中i為I到N之間的任意值,各通道之間可以采用同樣的生成多項(xiàng)式; (3-2)根據(jù)相應(yīng)的生成多項(xiàng)式,利用邏輯電路或者查找余數(shù)表的方法來實(shí)現(xiàn)W位并行計(jì)算的各計(jì)算通道; (3-3)根據(jù)各計(jì)算通道所采用的生成多項(xiàng)式,為各通道設(shè)置初始值,通常可以為各計(jì)算通道賦初始值為全零或者全一; (3-4)對各通道的輸入數(shù)據(jù)完成CRC子碼計(jì)算,得到m個(gè)CRC子碼; (4)對各通道計(jì)算所得到的CRC子碼進(jìn)行排序,具體包括以下子步驟 (4-1)反向通道選擇器與通道選擇器共用一張通道選擇表; (4-2)依據(jù)數(shù)據(jù)分割器傳遞的待計(jì)算數(shù)據(jù)的分段總數(shù)m,反向通道選擇器選通序號為(I, 2,3,…,m)的CRC子碼暫存器與反向通道選擇器的連接開關(guān)。(4-3)根據(jù)開關(guān)選擇表,將選通的m個(gè)數(shù)據(jù)輸出分別連接至相應(yīng)的計(jì)算通道的輸出之上; (4-4)各計(jì)算通道按照反向通道選擇器的選擇結(jié)果,將各計(jì)算通道計(jì)算所得的CRC子碼存入相應(yīng)的CRC子碼暫存器,得到一串新的數(shù)據(jù)為(CRC1,CRC2,…,CRCi,…,CRCm),其中i為I到m之間的任意值,CRCi對應(yīng)第i個(gè)數(shù)據(jù)段計(jì)算所得到的CRC子碼; (5)判斷是否需要再次進(jìn)行多通道計(jì)算,如果需要,則將步驟(4)得到的CRC子碼作為新的待計(jì)算數(shù)據(jù),返回步驟(I);如果不需要,則進(jìn)入步驟(6),具體包括以下子步驟 (5-1)將CRC碼的嵌套次數(shù)Q的值減去I ; (5-2)判斷Q的值是否為O,若Q的值為O,則進(jìn)入步驟(6);若Q的值不為零,則以(4)步驟中排序好的CRC子碼數(shù)據(jù)作為新的待計(jì)算數(shù)據(jù),并返回步驟(I); (6)第N+1個(gè)計(jì)算通道計(jì)算出最終的Q次嵌套CRC碼,具體包括以下子步驟 (6-1)為第N+1個(gè)CRC計(jì)算通道分配生成多項(xiàng)式gN+1 (X); (6-2)根據(jù)生成多項(xiàng)式,利用邏輯電路或者查找余數(shù)表的方法來實(shí)現(xiàn)W位并行計(jì)算的計(jì)算通道; (6-3)為該計(jì)算通道設(shè)置初始值,通??梢詾樵撚?jì)算通道賦初始值為全零或者全一; (6-4)對多計(jì)算通道第Q次計(jì)算并經(jīng)過排序所得到的CRC子碼數(shù)據(jù)進(jìn)行最后一次CRC碼計(jì)算,得到最終的Q次嵌套CRC碼。
2.根據(jù)權(quán)利要求I所述的高速嵌套CRC碼生成方法,其特征在于,步驟(1-5)中,(P1, P2,…,Pi,…,Pn)的賦值情況為 a)若第i個(gè)數(shù)據(jù)區(qū)域中填充了長度為Ls的待計(jì)算數(shù)據(jù),則將Pi的值賦為Pi; b)若第i個(gè)數(shù)據(jù)區(qū)域未填充數(shù)據(jù)段,則保持Pi的值不變; c)對于第m個(gè)填充區(qū)域,由于待計(jì)算數(shù)據(jù)并不保證以Ls對齊,為了保證計(jì)算的同步性,若第m個(gè)數(shù)據(jù)區(qū)域的填充長度Lf大于O且小于Ls,則將pm的值賦為Pm,即將長度為Lf數(shù)據(jù)段的長度通過補(bǔ)零擴(kuò)展至Ls,其中m為待計(jì)算數(shù)據(jù)的長度除以Ls后上取整得到的值,Lf為待計(jì)算數(shù)據(jù)的長度除以Ls后得到的余數(shù)。
3.根據(jù)權(quán)利要求I所述的高速嵌套CRC碼生成方法,其特征在于,步驟(2-1)具體包括以下子步驟 (2-1-1)對于N個(gè)計(jì)算通道和數(shù)據(jù)分割器的N個(gè)數(shù)據(jù)輸出通道,分別對其進(jìn)行順序編號(1,2, 3,…,i,"·,Ν),其中i為I到N之間的任意值; (2-1-2)為通道選擇表的每一個(gè)表項(xiàng)分配一個(gè)長為iV^「log2 位的矢量S (X),矢量多項(xiàng)式為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))對應(yīng)數(shù)據(jù)分割器的N個(gè)數(shù)據(jù)輸出(1,2,3,…i,···,N),其中Si(X)為分配給第i個(gè)數(shù)據(jù)輸入的計(jì)算通道的序號; (2-1-4)固定待計(jì)算數(shù)據(jù)的數(shù)據(jù)類型,針對每一次嵌套CRC碼的生成,生成Q個(gè)相應(yīng)的S(x),作為一行表項(xiàng)保存在開關(guān)選擇表中;(2-1-5)針對待計(jì)算數(shù)據(jù)的每一種數(shù)據(jù)類型,重復(fù)步驟(2-1-4),以構(gòu)成完整的通道選擇表。
4.一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成裝置,包括數(shù)據(jù)分段模塊、計(jì)算通道選擇模塊、多通道CRC碼計(jì)算模塊、數(shù)據(jù)排序模塊、寄存器、計(jì)數(shù)器、數(shù)據(jù)分配器、單通道CRC碼計(jì)算模塊,其特征在于, 數(shù)據(jù)分段模塊用于將待計(jì)算數(shù)據(jù)按照一定的數(shù)據(jù)長度自動分段并通過補(bǔ)零的方法使各數(shù)據(jù)段長度對齊,并在時(shí)鐘的控制下,將各數(shù)據(jù)段按照一定的位數(shù)依次傳送出去; 計(jì)算通道選擇模塊用于將各輸入數(shù)據(jù)通道連接至所需要的計(jì)算通道之上; 多通道CRC碼計(jì)算模塊用于同時(shí)對多個(gè)數(shù)據(jù)段計(jì)算CRC碼; 數(shù)據(jù)排序模塊用于將各輸入數(shù)據(jù)通道連接至所需要的寄存器之上; 寄存器用于存儲CRC碼; 計(jì)數(shù)器用于記錄CRC碼的計(jì)算次數(shù),并控制數(shù)據(jù)分配器的數(shù)據(jù)輸出; 數(shù)據(jù)分配器用于對輸入數(shù)據(jù)進(jìn)行分配,數(shù)據(jù)的分配受到計(jì)數(shù)器的控制; 單通道CRC碼計(jì)算模塊用于計(jì)算最終的CRC碼。
全文摘要
本發(fā)明公開了一種用于數(shù)據(jù)傳輸差錯(cuò)控制的嵌套CRC碼生成方法,包括對待計(jì)算數(shù)據(jù)進(jìn)行分段,根據(jù)數(shù)據(jù)類型為各數(shù)據(jù)段分配所需CRC碼計(jì)算通道,各計(jì)算通道進(jìn)行CRC碼計(jì)算,對計(jì)算得到的各CRC子碼進(jìn)行排序。根據(jù)實(shí)際需要,排序后的CRC子碼可直接送入最終的CRC碼計(jì)算通道,也可作為新的待計(jì)算數(shù)據(jù),多次重復(fù)上述CRC子碼計(jì)算再送入最終的CRC碼計(jì)算通道生成嵌套CRC碼。本發(fā)明還公開了一種嵌套CRC碼生成裝置,包括數(shù)據(jù)分段模塊、計(jì)算通道選擇模塊、多通道CRC碼計(jì)算模塊、數(shù)據(jù)排序模塊、寄存器、計(jì)數(shù)器、數(shù)據(jù)分配器、單通道CRC碼計(jì)算模塊。本發(fā)明的裝置計(jì)算速度快,靈活性好,并且采用本發(fā)明的方法,因此所需存儲容量小、糾錯(cuò)能力強(qiáng),適用的范圍廣。
文檔編號H04L1/00GK102946297SQ20121044660
公開日2013年2月27日 申請日期2012年11月10日 優(yōu)先權(quán)日2012年11月10日
發(fā)明者周文利, 段斌斌 申請人:華中科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1