亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn)方法

文檔序號:7971509閱讀:290來源:國知局
專利名稱:一種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn)方法
技術領域
本發(fā)明涉及一種循環(huán)冗余碼CRC校驗碼的實現(xiàn)方法,具體涉及一 種循環(huán)兀余校驗碼在不同寬度總線上的實現(xiàn)方法,其能把從數(shù)據(jù)源得 到的并行數(shù)據(jù)流,通過循環(huán)冗余碼CRC校驗處理,驗證其正確性,由 于本發(fā)明可以在比原始數(shù)據(jù)流更寬的數(shù)據(jù)線上進行數(shù)據(jù)分析操作,數(shù) 據(jù)分析的時鐘可以比數(shù)據(jù)源的時鐘頻率更低,從而實現(xiàn)通過低頻時鐘 操作,降低功耗。
背景技術
循環(huán)冗余碼CRC校驗處理是通信協(xié)議中的常見技術,發(fā)送方在發(fā) 送數(shù)據(jù)時,對一組連續(xù)的數(shù)據(jù)流,逐個進行循環(huán)冗余編碼,接受方在 接收這組數(shù)據(jù)的同時,也逐個進行循環(huán)冗余編碼,每一組數(shù)據(jù)處理完 畢后,接受方把得到數(shù)據(jù)流的循環(huán)冗余校驗碼返回給發(fā)送方,發(fā)送方 通過比較返回的校驗碼和本身計算得到的校驗碼,就能得到數(shù)據(jù)是否 正確傳送的結論。由于CRC的迭代算法簡單,校驗實現(xiàn)代價小,被廣 泛應用于數(shù)據(jù)包的傳送中。循環(huán)冗余校驗碼的本質是模/2除法的余數(shù),采用的除數(shù)不同,實 現(xiàn)的類型也就不一樣。循環(huán)冗余校驗碼的計算是使用移位寄存器和異 或運算實現(xiàn)的,兩者分別是由初始種子數(shù)和生成多項式的算法決定 的,不斷更新的數(shù)據(jù)流加載于移位寄存器中,同時移位寄存器中某些 二進制位是與將要移出的位做異或運算以后再更新相鄰位。處理連續(xù) 的數(shù)據(jù)流時,CRC算法決定了其CRC值是由求解每個數(shù)值的CRC值的和 對CRC寄存器的值反復更新而得到計算一個數(shù)據(jù)段的CRC值的。循環(huán)冗余碼校驗的核心是生成多項式和初始種子數(shù),對于一定位 寬的數(shù)據(jù),其生成多項式和初始種子數(shù)是有特定要求的,不同位寬的 數(shù)據(jù),不能直接使用傳統(tǒng)的合并操作。這就要求數(shù)據(jù)發(fā)送方和接受方 的數(shù)據(jù)寬度應當一致才能使用共同的生成多項式和初始種子數(shù)得到 對應的校驗碼,但是當發(fā)送方和接受方的數(shù)據(jù)寬度不同時,傳統(tǒng)的實 現(xiàn)方案使得數(shù)據(jù)流傳送只能使用傳輸雙方數(shù)據(jù)寬度的最小值來同步 進行操作,浪費了系統(tǒng)資源,增加了無端的功耗
發(fā)明內容
本發(fā)明的目的主要是為了實現(xiàn)不同帶寬間的循環(huán)冗余碼校驗處理,而且,本發(fā)明提供的方法解決了常規(guī)算法中難以在不同寬度的數(shù)據(jù)流實現(xiàn)處理的不良后果,能夠充分利用數(shù)據(jù)帶寬,在保證正常數(shù)據(jù)吞吐速率的同時,降低工作的時鐘頻率,而且在實際應用中還可以多路復用,進一步共享硬件資源。本發(fā)明解決其技術問題所釆用的技術方案是結合硬件電路的實現(xiàn)特點,在不同帶寬的發(fā)送方和接受方雙方使用不同的校驗碼生成電 路,從而在不同的數(shù)據(jù)帶寬上,對相同的數(shù)據(jù)流得到同樣的校驗碼。更具體地說,本發(fā)明提供了一種從數(shù)據(jù)總線得到CRC校驗碼的實 現(xiàn)方法,其通過使用異步隊列改變將要處理的數(shù)據(jù)寬度,再用新寬度 對應的初始種子數(shù)和生成多項式,得到對應的CRC校驗碼。即首先改變將要處理的數(shù)據(jù)寬度,保證低頻狀態(tài)下的帶寬要求, 然后再使用新的初始化值和邏輯運算在低頻下對比原始數(shù)據(jù)更寬的 數(shù)據(jù)進行CRC分析,最后得到和原有數(shù)據(jù)相一致的CRC校驗碼。在得到所需要的新數(shù)據(jù)寬度以后,以合適的時鐘頻率工作,進一 步使用對應新數(shù)據(jù)寬度的組合電路和時序電路,經(jīng)過邏輯運算得到與 原有寬度數(shù)據(jù)流相同的CRC校驗碼。通過進一步對CRC算法的研究,我們發(fā)現(xiàn) 一個8位數(shù)據(jù)加到16 位累加器中去,只有累加器的高8位或低8位與數(shù)據(jù)相作用,其結果僅 有256種可能的組合值。因而,還可以考慮使用查表法來代替對應的 運算,這也同樣適用于其他情況,如CRC32的計算。本發(fā)明提供的一種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn)方 法的有益效果是發(fā)送與接受雙方無需確認對方的具體位寬實現(xiàn)方 案,只要發(fā)送方在完成一組數(shù)據(jù)傳送以后從接受方返回得到的校驗碼 和自身計算的校驗碼是一致的,就說明數(shù)據(jù)傳送已經(jīng)正確完成。發(fā)送 與接受雙方的數(shù)據(jù)處理位寬越寬,正常工作所需要的時鐘頻率就越 低,可以降低功耗。下面,結合附圖和實施例詳細說明依據(jù)本發(fā)明提出方法的具體細 節(jié)及工作情況。關翻

圖1是傳統(tǒng)CRC算法實現(xiàn)方法的原理圖,從多個16位寬的數(shù)據(jù) data—in得到16位寬的CRC;圖2是傳統(tǒng)CRC16位算法的電路原理圖,生成多項式為 g(X)=xlfi+x'5+x5+l,初始種子數(shù)為16,h4ABA;
圖3是傳統(tǒng)CRC算法實現(xiàn)方法的工作流程圖,每次得到新的數(shù)據(jù)都要重新計算對應的CRC16;圖4是本發(fā)明提供的CRC算法的基本原理圖,先使用異步隊列asyn—fifo把16位寬的數(shù)據(jù)data—in打包為32位寬的數(shù)據(jù)data—tmp,再作數(shù)^分析,得到16位的CRC;圖5是圖4中異步隊列asyrufifo的基本工作原理圖; 圖6是本發(fā)明提供方法的電路原理圖,選擇合適的組合邏輯,從多個32bit寬的數(shù)據(jù)data—t即,結合適當?shù)募拇嫫鞒踔担玫?6bit寬的CRC;圖7是本發(fā)明提供的CRC算法實現(xiàn)方法的工作流程圖,可以每來兩 組數(shù)據(jù)才需要重新計算新的CRC。
具體實施方式
本發(fā)明提供的一種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn)方法的具體步驟為使用異步隊列改變將要處理的數(shù)據(jù)寬度,再用新數(shù) 據(jù)寬度對應的初始種子數(shù)和生成多項式,得到對應的CRC校驗碼;從 而實現(xiàn)在不同帶寬的發(fā)送方和接受方雙方使用不同的校驗碼生成電 路,在不同的數(shù)據(jù)帶寬上,對相同的數(shù)據(jù)流得到同樣的校驗碼。本發(fā)明更具體的描述特征是首先改變將要處理的數(shù)據(jù)寬度,保 證低頻下的帶寬要求,然后再是使用新的初始化值和邏輯運算在低頻 下對比原始數(shù)據(jù)更寬的數(shù)據(jù)進行CRC分析;本發(fā)明所述的改變數(shù)據(jù)總 線寬度,可以先使用異步隊列得到所需要的數(shù)據(jù)寬度,在這個過程中, 既可保證數(shù)據(jù)吞吐率而又降低了工作時鐘頻率;在得到所需要的新數(shù)據(jù)寬度以后,以合適的時鐘頻率工作,進一 步使用對應新數(shù)據(jù)寬度的組合電路和時序電路,經(jīng)過邏輯運算得到與原有寬度數(shù)據(jù)流相同的CRC校驗碼。同理,本發(fā)明提供一種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn) 方法不但可應用于雙向糾錯,也同樣可用于單向糾錯。下面,本發(fā)明通過優(yōu)選實施例提供的一種循環(huán)冗余校驗碼在不同 寬度總線上的實現(xiàn)方法來對本發(fā)明作進行進一步的說明,其中均以接受方處理16位寬輸入數(shù)據(jù)為例。在附圖1-3中,其是傳統(tǒng)CRC算法實現(xiàn)方法的原理圖, 一般傳統(tǒng)16 位的CRC實現(xiàn)方法,使用的生成多項式8 00=7+,+^+1,初始種子數(shù) 為16,h4ABA,對于一組連續(xù)數(shù)據(jù)流,每一個16位寬的輸入數(shù)據(jù),都會 和當前的CRC運算,得到新的CRC。其基本電路結構可參見附圖2,其 基本工作流程可參見附圖3,每次得到新的數(shù)據(jù)都要重新計算對應的 CRC16。
在附圖4一7中,為本發(fā)明提供的一種循環(huán)冗余校驗碼在不同寬度 總線上的實現(xiàn)方法。如附圖4-5所示,本發(fā)明提供的方法首先是使用異步隊列 asyn—f ifo把16位的輸入數(shù)據(jù)data jn (1)兩兩并接為32位的 data—t即,對應時鐘域的切換是由clkl6到clk32,前者用于16位的輸 入數(shù)^datajn,后者用于32位的輸入數(shù)據(jù)data—tmp。 register(2) 的作用是把^前待處理的數(shù)據(jù)保存為dat—16(3),其間使用了一個標 記,用以判斷當前的16位數(shù)據(jù)應該放在data—tmp的低16位還是高16 位,完成正確拼接。register(4)進一步把dat—16(3)和新輸入的數(shù)據(jù) data一in合并為dat一32(5),可見輸入兩組16位的數(shù)據(jù)datajn只會得 到一組32位的數(shù)據(jù)dat一32,盡管這組數(shù)據(jù)還是屬于clkl6日;鐘域。最 后由FIFO把這組數(shù)據(jù)轉換為data—tmp(6),這已經(jīng)是clk32的時鐘域 了 。這樣的結果是傳送32位寬數(shù)據(jù)一的次數(shù)減少到傳送16位寬數(shù)據(jù)所需 的一半,新的工作時鐘頻率clk32只需要用以前工作時鐘頻率clk16 的一半就可以得到相同的數(shù)據(jù)吞吐率。在得到32位數(shù)據(jù)data—tmp以后,組合邏輯Combinational Logic 部分,根據(jù)新的生成多項it結合當前的數(shù)據(jù)data一tmp和對應的時序 電路Register Device中儲存的已有CRC信息,以clk32為工作時鐘頻 率,經(jīng)過運算得到新的CRC數(shù)據(jù)。由于發(fā)送方是使用16位寬的數(shù)據(jù)進 行處理的,所以接受方也要從得到的數(shù)據(jù)中處理得到16位寬的CRC校 驗碼,以傳回給發(fā)送方。圖6是具體實現(xiàn)的本發(fā)明方法的基本電路方案,可以看出輸入數(shù) 據(jù)信號,同樣是經(jīng)過組合電路運算后,被時序電路保存,得到輸出的 CRC校驗碼。圖7是本發(fā)明提供的CRC算法實現(xiàn)方法的工作流程圖,其 可以每來兩組數(shù)據(jù)才需要重新計算新的CRC。這種技術已經(jīng)在Chipnuts的移動多媒體處理芯片驗證平臺上通 過測試。關于CRC的生成多項式,以G16(X)二xl6+xl2+x5+l為例,初始種子 數(shù)為16' h4ABA硬件設計實現(xiàn)代碼如下:assignfl二 crc[O]crcout [15]assignf2二 crc[l]crcout[14]assignf3=crc[2]_ crcout[13]assignf4=crc[3]—crcout[12]assignf5=crc[4]~ crcout[11]-flassignf6二 crc[5]—crcout[10]-f2<formula>formula see original document page 8</formula>對應32位生成多項式的硬件設計實現(xiàn)代碼如下(初始種子數(shù)為32,h6D5C4ABA)<formula>formula see original document page 8</formula>
assign crc—14—trap = feedback—t即[l] ~ feedback—tmp[6] feedback—tmp[13];assign crc—13—tmp 二 feedback—tmp[2] feedback—tmp[7] feedback一tmp[14];assign crc—12_tmp 二 feedback—tmp[3] feedback—trap[8] feedback一tmp[15];assign crc—11—tmp = feedback—tmp[4]feedback—tmp[9] ;assigncrc一JO一—tmp=feedback—tmp[5]feedback—tmp[10]assigncrc—一09一—t卿二 feedback—tmp[6]feedback—tmp[11]assigncrc——08——t即二 feedback—tmp[7]f eedback—tmp[12]assigncrc_—07——trap二 feedback—tmp[8]feedback—tmp[13]assigncrc一一06一一tmp二 feedback—t卿[9]feedback—tmp[14]assigncrc一—05——t即二 feedback—tmp[10]f eedback—tmp[15]assigncrc一—04_一tmp =feedback—tmp[11]assigncrc—一03一_tmp 二feedback—tmp[12]assigncrc——02—_tmp =feedback—tmp[13]assigncrc——oi一—tmp =feedback—tmp[14]assigncrc一—00—一t卿二feedback—tmp[15]assignfeedback—15—swp二data—high[15]crc一tmp[O]f eedback—04_一swp ~ feedback—11——swp ;assignfeedback—14_swp二data—high[14]crc一tmp[l]f eedback—03—一swp ' feedback—10——swp ;assignfeedback—13_swp=data—high[13]crc—tmp[2]feedback—02_一swp ~ feedback—09—一swp ;assignfeedback—12—swp二data—high[12]crc—tmp[3]feedback—01.一swp ' feedback—08—一swp ;assignfeedback—ll—swpdata—high[ll]crc—tmp[4]feedback—00.一swp ' feedback—07-—swp ;assignfeedback—10—swp二datajiigh[10] 一crc一tmp[5]feedback—06.—swp ;assignfeedback—09—swpdata—high[9] -crc一tmp[6]feedback—05一swp ;
assign feedback—08—swp feedback—04—swp ;assign feedback—07—swp feedback—03—swp ;assign feedback—06—swp feedback—02—swp ;assign feedback—05__swp feedback——01—swp ;assign feedback—04—swp feedback一00一swp ;assign feedback—03—swpassign feedback—02—swpassign feedback—01—swpassign feedback—00—swpdata—high[8] data—high[7] data—high[6]data—high[5] data—high[4]data一high[3] data—high[2] data—high[1] data—high
crc—tmp〔7]crc—tmp[8] crc—tmp[9]crc—tmp[lO] crc—tmp[ll]crc一tmp[12] crc—t,[13] crc—tmp[14] crc一tmp[15]assign crc—15—swp 二 feedback—swp
feedback——swp[12];assign crc—14—swp 二 feedback—swp[1] feedback—swp[13];assign crc一13一swp 二 feedback—swp[2] feedback—swp[14];assign crc—12—swp 二 feedback—swp[3] feedback一swp[15];assign crc—11—swp = feedback—swp[4]feedback—swp[9]assigncrc—茂_swp二 feedback—swp[5]feedback——swp [10]assigncrc一—09——swp二 feedback—swp[6]feedback一swp[ll]assigncrc一靈—swp二 feedback—swp[7]feedback——swp [12]assigncrc一—07—一swp=feedback—swp[8]feedback——swp [13]assigncrc_—06——swp二 feedback—swp[9]feedback——swp [14]assigncrc一—05—一swp=feedback—swp[10]feedback—-Swp[15]assigncrc一—04—_swp=feedback—swp[11].assigncrc__03—一swp二 feedback—swp[12]assigncrc一一02_—swp二 feedback—swp[13]feedback—swp[5] feedback—swp[6] feedback—swp[7] feedback—swp[8]assign crc—01__swp 二 feedback—swp[14]; assign crc—OO一swp 二 feedback—swp[15];最后得到的CRC校驗碼為crc32out 二 { crcl6tmp, crcl6swp }.在真實實際的應用中,位寬的改變不一定是16位改為32位,具體 的生成多項式和初始種子數(shù)是由數(shù)據(jù)寬度和一組數(shù)據(jù)的長度影響的, 并不唯一確定,發(fā)送方和接受方必須針對具體情況仔細分析,特定總 線寬度的生成多項式和初始種子數(shù)是由數(shù)字信號處理理論中的余數(shù) 定理決定的。事實上,在工程開發(fā)上的使用也只是按照需求,使用已 有的公式。同樣,數(shù)據(jù)寬度在不同的應用場所也可能不同。舉例如下4位的生成多項式gUW+X+l, 16位的生成多項式:g(X)二X'W+l或 者g(X)=X"'+,+X5+l都可以,而32位的生成多項式g(x)二x32+x加+x"'+x22+x'Vx'2+xi'+x'('+x8+x7+x5+xVx2+x+l。在具體的使用中,應用系統(tǒng)數(shù)據(jù)吞吐帶寬要求一定的情況下,如果要求的時鐘頻率 越低,則對應的數(shù)據(jù)總線寬度也要越大,所需要的硬件資源也越多, 代價越大。對于特定的要求,應該在許可的最高頻率下,使用對應數(shù) 據(jù)總線寬度最小需求的生成多項式和初始種子數(shù)設計。
權利要求
1. 一種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn)方法,其特征在于該方法使用異步隊列改變將要處理的數(shù)據(jù)寬度,再用新數(shù)據(jù)寬度對應的初始種子數(shù)和生成多項式,得到對應的CRC校驗碼;從而實現(xiàn)在不同帶寬的發(fā)送方和接受方雙方使用不同的校驗碼生成電路,在不同的數(shù)據(jù)帶寬上,對相同的數(shù)據(jù)流得到同樣的校驗碼。
2、 根據(jù)權利要求1所述的--種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn)方法,其特征在于首先改變將要處理的數(shù)據(jù)寬度,保證低頻狀態(tài) 下的帶寬要求,然后再使用新的初始化值和邏輯運算在低頻下對比原始數(shù)據(jù)更寬的數(shù)據(jù)進行CRC分析,最后得到和原有數(shù)據(jù)相一致的CRC 校驗碼。
3、根據(jù)權利要求1所述的一種循環(huán)冗余校驗碼在不同寬度總線上的 實現(xiàn)方法,其特征在于在得到所需要的新數(shù)據(jù)寬度以后,以合適的時 鐘頻率工作,進一步使用對應新數(shù)據(jù)寬度的組合電路和時序電路,經(jīng) 過邏輯運算得到與原有寬度數(shù)據(jù)流相同的CRC校驗碼。
4、根據(jù)權利要求1所述的一種循環(huán)冗余校驗碼在不同寬度總線上的 實現(xiàn)方法,其特征在于該方法不但可應用于雙向糾錯,也同樣可用于 單向糾錯。
5、根據(jù)權利要求l所述的一種循環(huán)冗余校驗碼在不同寬度總線上的實 現(xiàn)方法,其特征在于該方法是首先是使用異步隊列asyn—fifo把16位的輸入數(shù)據(jù)datajn(l)兩 兩并接為32位的data—t卿,對雖時鐘域的切換是由clkl6到clk32,前 者用于16位的輸入數(shù)^data—in,后者用于32位的輸入數(shù)據(jù)data—tmp; register(2)的作用是把當前待處理的數(shù)據(jù)保存為dat—16(3), f間使 用了一個標記,用以判斷當前的16位數(shù)據(jù)應該放在data—tmp的低16 位還是高16位,完成正確拼接;register(4:)進一步把dat—16(3)和新 輸入的數(shù)據(jù)data—in合并為dat—32(5),這樣,輸入兩組16位的數(shù)據(jù) data—in只會得到一組32位的數(shù)據(jù)dat一32,盡管這組數(shù)據(jù)還是屬于 clkl6時鐘域;最后由FIFO把這組數(shù)據(jù)^換為data—t卿(6),這已經(jīng)是 clk32的時鐘域了;在得到32位數(shù)據(jù)data—tmp以后,組合邏輯Combinational Logic 部分,根據(jù)新的生成多項式,結合當前的數(shù)據(jù)data—top和對應的時序 電路Register Device中儲存的已有CRC信息,以clk32為工作時鐘頻 率,經(jīng)過運算得到新的CRC數(shù)據(jù);由于發(fā)送方是使用16位寬的數(shù)據(jù)進 行處理的,所以接受方也要從得到的數(shù)據(jù)中處理得到16位寬的CRC校 驗碼,以傳回給發(fā)送方。
全文摘要
本發(fā)明涉及一種循環(huán)冗余校驗碼在不同寬度總線上的實現(xiàn)方法,該方法使用異步隊列改變將要處理的數(shù)據(jù)寬度,再用新數(shù)據(jù)寬度對應的初始種子數(shù)和生成多項式,得到對應的CRC校驗碼;從而實現(xiàn)在不同帶寬的發(fā)送方和接受方雙方使用不同的校驗碼生成電路,在不同的數(shù)據(jù)帶寬上,對相同的數(shù)據(jù)流得到同樣的校驗碼。本發(fā)明提供的方法解決了常規(guī)算法中難以在不同寬度的數(shù)據(jù)流實現(xiàn)處理的不良后果,能夠充分利用數(shù)據(jù)帶寬,在保證正常數(shù)據(jù)吞吐速率的同時,降低工作的時鐘頻率,而且在實際應用中還可以多路復用,進一步共享硬件資源。
文檔編號H04L1/00GK101212276SQ20061014806
公開日2008年7月2日 申請日期2006年12月27日 優(yōu)先權日2006年12月27日
發(fā)明者強 周, 林 李, 碧 王, 震 謝 申請人:智多微電子(上海)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1