模塊化且可擴展的循環(huán)冗余校驗計算電路的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明大體上涉及用于對高數(shù)據(jù)速率下的數(shù)據(jù)包執(zhí)行循環(huán)冗余校驗計算的裝置(例如,現(xiàn)場可編程門陣列等集成電路)以及方法。
【背景技術(shù)】
[0002]循環(huán)冗余碼(CRCs)廣泛應(yīng)用于電信和網(wǎng)絡(luò)中以確保數(shù)據(jù)完整性。例如,用附加的CRC-32碼(32位CRC碼)傳輸每個以太網(wǎng)數(shù)據(jù)包。已經(jīng)使用移位寄存器串聯(lián)地實施用于執(zhí)行循環(huán)冗余檢驗的電路。然而,此方法不足以跟上現(xiàn)行的數(shù)據(jù)速率。另外,雖然對于多達100Gb/s的數(shù)據(jù)速率存在若干CRC電路設(shè)計,但是這些設(shè)計通常包括使用相對狹窄的數(shù)據(jù)總線,其具有不超過512位的輸入寬度。
【發(fā)明內(nèi)容】
[0003]在一個實施例中,揭示一種用于執(zhí)行循環(huán)冗余校驗的裝置。例如,所述裝置包括用于將數(shù)據(jù)字分解成多個路徑的分解器。所述裝置還包括多個循環(huán)冗余校驗單元。所述單元中的每個單元用于處理所述路徑中的相應(yīng)一個路徑。另外,所述單元中的每個單元包括用于輸出在所述單元內(nèi)結(jié)束的數(shù)據(jù)包的循環(huán)冗余校驗值的第一輸出端口以及用于輸出在所述單元內(nèi)起始或持續(xù)的數(shù)據(jù)包的循環(huán)冗余校驗值的第二輸出端口。
[0004]在各種實施例中:通過多個循環(huán)冗余校驗單元處理的數(shù)據(jù)包的大小是路徑中的每個路徑的至少路徑大小;所述裝置進一步包括至少一個合并器,其用于合并在多個循環(huán)冗余校驗單元中的第一單元內(nèi)起始或持續(xù)的數(shù)據(jù)包的第一循環(huán)冗余校驗值與在多個循環(huán)冗余校驗單元中的第二單元內(nèi)結(jié)束的數(shù)據(jù)包的第二循環(huán)冗余校驗值;所述至少一個合并器用于對第一循環(huán)冗余校驗值和第二循環(huán)冗余校驗值執(zhí)行異或運算;在多個循環(huán)冗余校驗單元中的第一單元內(nèi)起始或持續(xù)的數(shù)據(jù)包和在多個循環(huán)冗余校驗單元中的第二單元內(nèi)結(jié)束的數(shù)據(jù)包是同一數(shù)據(jù)包;所述裝置進一步包括至少一個校驗電路,其用于校驗通過多個循環(huán)冗余校驗單元中的至少兩個單元處理的至少一個數(shù)據(jù)包是否在多個循環(huán)冗余校驗單元中的所述至少兩個單元之間連續(xù);當在與所述兩個單元中的第一單元相關(guān)聯(lián)的第一路徑中存在數(shù)據(jù)包起始信號或數(shù)據(jù)包在第一路徑中持續(xù)時,以及當在與所述兩個單元中的第二單元相關(guān)聯(lián)的第二路徑中存在數(shù)據(jù)包結(jié)束信號時,校驗電路確定數(shù)據(jù)包在所述兩個單元之間連續(xù);循環(huán)冗余校驗單元中的每個單元進一步包括用于將路徑中的一個路徑分解成多個通路的分解器以及用于計算多個通路中的相應(yīng)一個通路的位的部分循環(huán)冗余校驗值的循環(huán)冗余校驗?zāi)K;M個循環(huán)冗余校驗單元中的每個單元進一步包括選擇模塊,其用于選擇循環(huán)冗余校驗值以用于作為在循環(huán)冗余校驗單元內(nèi)結(jié)束的數(shù)據(jù)包的循環(huán)冗余校驗值來輸出;選擇單元用于根據(jù)通路中的一個通路中的數(shù)據(jù)包結(jié)束信號或若在所述通路中的任何通路中不存在數(shù)據(jù)包結(jié)束信號則根據(jù)默認條件選擇中間循環(huán)冗余校驗值,以用于作為在循環(huán)冗余校驗單元內(nèi)結(jié)束的數(shù)據(jù)包的循環(huán)冗余校驗值來輸出;循環(huán)冗余校驗單元中的每個單元進一步包括選擇模塊,其用于選擇循環(huán)冗余校驗值以用于作為在循環(huán)冗余校驗單元內(nèi)起始或持續(xù)的數(shù)據(jù)包的循環(huán)冗余校驗值來輸出;所述選擇模塊用于根據(jù)通路中的一個通路中的數(shù)據(jù)包起始信號或若在所述通路中的任何通路中不存在數(shù)據(jù)包起始信號則根據(jù)默認條件選擇循環(huán)冗余校驗值,以用于作為在循環(huán)冗余校驗單元內(nèi)起始或持續(xù)的數(shù)據(jù)包的循環(huán)冗余校驗值來輸出;循環(huán)冗余校驗單元中的每個單元進一步包括至少一個合并器,其用于合并來自至少第一循環(huán)冗余校驗?zāi)K的部分循環(huán)冗余校驗值與來自至少第二循環(huán)冗余校驗?zāi)K的部分循環(huán)冗余校驗值,以輸出與第二循環(huán)冗余校驗?zāi)K相關(guān)聯(lián)的通路中的相應(yīng)一個通路的循環(huán)冗余校驗值;循環(huán)冗余校驗單元中的每個單元進一步包括至少一個推進單元,其用于根據(jù)在至少一個推進單元的通路與目的地通路之間的位的數(shù)目對至少一個部分循環(huán)冗余校驗值進行位推進;所述裝置進一步包括用于接收來自前一數(shù)據(jù)字的累計循環(huán)冗余校驗值的輸入端口和/或用于輸出累計循環(huán)冗余校驗值以用于下一數(shù)據(jù)字的輸出端口 ;所述裝置進一步包括至少一個合并器,其用于合并累計循環(huán)冗余校驗值與在循環(huán)冗余校驗單元中的至少一個單元內(nèi)結(jié)束的數(shù)據(jù)包的至少一個循環(huán)冗余校驗值;所述裝置進一步包括至少一個推進單元,其用于根據(jù)在至少一個推進單元的路徑與目的地路徑之間的位的數(shù)目對至少一個部分循環(huán)冗余校驗值進行位推進;所述裝置進一步包括至少一個展開單元,其用于根據(jù)在數(shù)據(jù)包的結(jié)尾與通路的結(jié)尾之間或在數(shù)據(jù)包的結(jié)尾與路徑的結(jié)尾之間的空位數(shù)展開至少一個循環(huán)冗余校驗值。
[0005]在另一實施例中,揭示用于執(zhí)行循環(huán)冗余校驗的另一裝置。例如,所述裝置包括用于處理數(shù)據(jù)字的多個循環(huán)冗余校驗單元。在一個實施例中,所述循環(huán)冗余校驗單元中的每個單元用于處理數(shù)據(jù)字的一部分且用于輸出相應(yīng)循環(huán)冗余校驗值。所述裝置還包含選擇單元,其用于選擇多個相應(yīng)循環(huán)冗余校驗值以用于作為相應(yīng)多個數(shù)據(jù)包的最終循環(huán)冗余校驗值來輸出。數(shù)據(jù)字大于最小數(shù)據(jù)包大小。
[0006]在另一實施例中,揭示一種用于執(zhí)行循環(huán)冗余校驗的方法。例如,所述方法包括將數(shù)據(jù)字分解成多個路徑以及處理所述路徑中的每個路徑。在一個實施例中,對于所述路徑中的每個路徑,所述處理包括計算在路徑內(nèi)結(jié)束的數(shù)據(jù)包的循環(huán)冗余校驗值以及計算在路徑內(nèi)起始或持續(xù)的數(shù)據(jù)包的循環(huán)冗余校驗值。
【附圖說明】
[0007]附圖示出根據(jù)本發(fā)明的一個或多個方面的示例性實施例;然而,附圖不應(yīng)被視作限制所示出的實施例的揭示內(nèi)容,而是僅用于說明和理解。
[0008]圖1示出了 CRC電路/裝置實施方案的方塊圖;
[0009]圖2示出了 CRC單元的方塊圖;
[0010]圖3示出了 CRC單元的替代實施例的方塊圖;
[0011]圖4示出了在路徑上和/或通過CRC單元處理的位的示例性情境的時序圖;
[0012]圖5示出了用于校驗數(shù)據(jù)包是否在兩個CRC單元之間連續(xù)的校驗電路的方塊圖;
[0013]圖6示出了在路徑上和/或通過CRC單元處理的位的其它示例性情境的時序圖;
[0014]圖7示出了用于執(zhí)行循環(huán)冗余校驗的方法的方塊圖;以及
[0015]圖8示出了適用于執(zhí)行本文中所描述的功能的通用計算機或計算裝置的高階方塊圖。
【具體實施方式】
[0016]本發(fā)明大體上涉及用于執(zhí)行循環(huán)冗余校驗的裝置以及方法。例如,本發(fā)明可以在集成電路(IC)內(nèi)實施,例如,可編程邏輯裝置(PLD)、專用1C、現(xiàn)場可編程門陣列(FPGA)等,從而對在高位速率下以及在寬數(shù)據(jù)總線上接收到的數(shù)據(jù)包執(zhí)行循環(huán)冗余校驗運算。本發(fā)明的實施例可以使用具有包含1024位以及超過1024位的輸入寬度的寬數(shù)據(jù)總線支持超過100Gb/S的數(shù)據(jù)傳輸速率,例如,從400Gb/s往上。電路架構(gòu)是模塊化且可擴展的,從而允許提供資源性能的權(quán)衡。
[0017]循環(huán)冗余碼(CRC)廣泛應(yīng)用于電信和網(wǎng)絡(luò)以及許多其它應(yīng)用中以確保數(shù)據(jù)完整性。例如,用也稱為幀校驗序列(FCS)的附加的CRC-32碼(32位CRC碼)傳輸以太網(wǎng)數(shù)據(jù)包。已經(jīng)使用移位寄存器串聯(lián)地實施用于執(zhí)行循環(huán)冗余檢驗的電路。然而,此方法不足以跟上現(xiàn)行的數(shù)據(jù)速率。另外,雖然對于多達100Gb/S的數(shù)據(jù)速率存在若干CRC電路設(shè)計,但是這些設(shè)計通常包括使用具有不超過512位的輸入寬度/字長的相對狹窄的數(shù)據(jù)總線。這限制了未來的吞吐量擴展,因為變得更難以獲得時脈頻率的顯著提高。為了實現(xiàn)更高的吞吐量,例如400Gb/s,可以使用更寬的數(shù)據(jù)總線,例如,CRC電路可用來處理每時鐘周期超過1024位的更寬的數(shù)據(jù)總線。然而,因為網(wǎng)絡(luò)數(shù)據(jù)包/以太網(wǎng)幀的最小大小是512位,所以在此寬數(shù)據(jù)總線上可以同時呈現(xiàn)多個數(shù)據(jù)包。數(shù)據(jù)包可以在數(shù)據(jù)總線內(nèi)的任何位置處起始和結(jié)束。因此,隨著每字的數(shù)據(jù)包的數(shù)目增加,由此考慮到不同數(shù)據(jù)包位置來說變得更復(fù)雜。
[0018]因此,本發(fā)明的實施例描述可擴展的CRC架構(gòu),例如,在512位CRC單元上建構(gòu)的可擴展的CRC架構(gòu),例如,優(yōu)化為512位輸入數(shù)據(jù)寬度的可擴展的CRC架構(gòu)。本發(fā)明的實施例提供隨著吞吐量增加時的資源使用的線性擴展,而傳統(tǒng)的方法包括超線性擴展。應(yīng)注意,盡管本發(fā)明的實施例結(jié)合512位的倍數(shù)和分數(shù)來描述,但是本發(fā)明不因此而受限制。S卩,示例性架構(gòu)以512位路徑大小/CRC單元大小為特征,所述大小對應(yīng)于現(xiàn)行的最小以太網(wǎng)幀大小,且因此較適用于說明性目的。然而,所屬領(lǐng)域的技術(shù)人員將了解,可以根據(jù)本發(fā)明采用其它數(shù)據(jù)總線寬度、幀大小、路徑大小和行大小。因此,本發(fā)明的其它實施例可以適應(yīng)不同通信技術(shù)、針對不同網(wǎng)絡(luò)層優(yōu)化、以及針對不同數(shù)據(jù)包/單元大小調(diào)整,例如,幀、數(shù)據(jù)包、數(shù)據(jù)段、數(shù)據(jù)報、協(xié)議數(shù)據(jù)單元(PDU)、傳輸數(shù)據(jù)單元(TDU)、會話數(shù)據(jù)單元(SDU)等。
[0019]循環(huán)冗余校驗是在數(shù)據(jù)傳輸應(yīng)用中廣泛使用的根據(jù)奇偶校驗位的差錯檢測方案且根據(jù)多頂式算法。將被傳輸?shù)臄?shù)據(jù)的位是多頂式的系數(shù)。作為實例,位流1101011011具有10位,表示10項多頂式:
[0020]M(x) = I.χ9+1.x8+0.x7+l.x6+0.x5+l.x4+l.x3+0.x2+l.χ:+1.x0= x 9+x8+x^x^x^x1+! o
[0021]為了計算消息的CRC,選擇稱為生成多頂式的另一多頂式G(x)。G(X)應(yīng)具有大于零的次數(shù)且在x°項中具有非零系數(shù)。這產(chǎn)生了生成多頂式的若干可能選項,因此需要標準化。CRC-16是一種此類標準,其使用以下生成多頂式:
[0022]G(x) = x16+x15+x2+l。
[0023]CRC-16檢測所有單一和雙重差錯、具有奇數(shù)位數(shù)的所有差錯、長度16或更短的所有突發(fā)差錯、以及針對更長突發(fā)的大多數(shù)差錯。另一標準CRC是CRC-32,其使用以下生成多頂式:
[0024]G(x) = x32+x26+x23+x22+x16+x12+xn+x10+xs+x7+x5+x4+x2+x+l。
[0025]—般來說,通過將數(shù)據(jù)流表示為多頂式M(X),將M(X)乘以Xn(其中η是多頂式G(x)的次數(shù)),并且將結(jié)果除以生成多頂式G(X)來計算η位CRC。所產(chǎn)生的余數(shù)被附加到數(shù)據(jù)流并進行傳輸。接著將完整的所傳輸多頂式除以在接收器端的同一生成多頂式。如果此除法運算的結(jié)果沒有余數(shù),則不存在傳輸差錯。在數(shù)學上,這可以表示為:
[0026]CRC= [(M(X).xn)/G (X)]的余數(shù)。
[002