一種基於fpga的萬兆乙太網數據幀的填充校驗方法
2023-09-21 22:32:40
專利名稱:一種基於fpga的萬兆乙太網數據幀的填充校驗方法
技術領域:
本發明涉及萬兆乙太網高速數據通信協議的數據檢測,具體涉及一種基於FPGA 的萬兆乙太網數據幀的填充校驗方法。
背景技術:
在高速數據通訊系統中,由於數據流(包括有效負載和控制流)在線路上傳輸時 會因溫度、射線等外界的幹擾,在接收方收到的數據流與發送方發出的數據流出現不一致 的現象。為保證接收方能識別出錯誤的數據流並通知發送方線路上出現誤碼,則需要對通 信過程進行差錯控制。目前在線路上使用的差錯控制方法有ARQ(自動請求重傳方式)、 FEC (前向糾錯方式)和HEC (混合糾錯)。較多使用的是ARQ方式,此模式的差錯控制只需 要檢錯功能。CRC循環冗餘校驗碼(Cyclic Redundancy Check)是數據通信領域中最常用的一 種差錯校驗碼,其特徵是信息欄位和校驗欄位的長度可以任意選定。由於其誤碼監測能力 強,抗幹擾能力優異,被廣泛的用於線路的差錯控制。生成CRC碼的基本原理任意一個由二進位位串組成的代碼都可以和一個係數僅 為『0,和『1,取值的多項式一一對應。例如代碼1010111對應的多項式為x6+x4+x2+x+l, 而多項式為x5+x3+x2+x+l對應的代碼101111。CRC碼集選擇的原則若設碼字長度為N,信息欄位為K位,校驗欄位為R位(N = K+R),則對於CRC碼集中的任一碼字,存在且僅存在一個R次多項式g (χ),使得V (χ) = A (χ) g (χ) = xRm (χ)+r (χ);其中m(x)為K-I次信息多項式,r(x)為R-I次校驗多項式,g(x)稱為生成多項式g (x) = g°+glxl+g2x2+. · · +g(H)x(H) +gExE發送方通過指定的g(x)產生CRC碼字,接收方則通過該g(x)來驗證收到的CRC碼字。下面列出了一些標準的CRC和其多項式CRC-4 :Χ4+Χ+1CRC-12 :χ12+χη+χ3+χ+1CRC-16 :χ16+χ15+χ2+1CRC-ITU :χ16+χ12+χ5+1CRC-32 :x32+x26+x23+. . . +x2+x+lCRC-32c :x32+x28+x27+. . . +x8+x6+l
發明內容
本發明目的在於克服MAC層數據流可以線速10G/b發送並及時添加基於CRC-32 的FCS校驗信息。
一種基於FPGA的萬兆乙太網數據幀的填充校驗方法,包含以下步驟A、狀態機啟動由上遊發送請求進行觸發,數據被向前推進,進入第一次格式處 理;B、對有效數據進行bytes計算,大於或等於最小幀進入步驟D操作,否則,執行步 驟C;C、根據所需發送的有效數據流的幀長度補齊到最小幀長度;D、應用並行64位CRC-32電路和串行8位CRC-32電路對填充後的有效數據流或 原始數據流進行流水校驗,8位CRC-32電路流水校驗64位CRC-32電路和非完整周期的有 效數據流,校驗結果進行簡單編碼後形成FCS,填充到有效數據流結尾,將數據流推進到下 遊模塊發送;E、在等待ire個周期後,重新進入空閒狀態,重複這一過程。本發明的一種優選技術方案在於所述C步驟數據填充時採用7路並行流水數據、 採用一個64位CRC-32電路和一個8位CRC-32電路。本發明的再一種優選技術方案在於數據發送時採用桌球模式校驗MAC層發送方 的8條lane的有效數據流。藉助於本發明的技術方案,能夠生成並發送符合萬兆乙太網MAC層的數據幀,並 無延時的將校驗後的數據幀推進到下一總線或緩衝區。
圖1為MAC層填充及校驗的狀態機轉換過程;圖2為幀長小於7周期對幀進行填充方案;圖3為幀長等於8周期對幀進行填充方案;圖4為本發明的校驗部分的時序流程圖。
具體實施例方式下面結合附圖和具體實施方式
對本發明的方法進行說明。鏈路上由上遊驅動數據,中遊數據分析,再將數據流推進到下遊。在圖1中,狀態 機的啟動由上遊發送請求進行觸發,進入到第一次的數據處理即前導碼的填充。通過此狀 態後,就開始按照乙太網的幀格式要求,把數據幀以一個整體進行填充、校驗打包發送出 去,在等待ire個周期後,重新進入空閒狀態。等待狀態即主數據流流水級的充滿時間,通 過增加這個狀態,即可實現後續數據的持續發送。首先對通信埠中各個模塊的功能做詳 細說明。標準萬兆乙太網中,每一幀的幀長必須是大於等於64bytes,其中包括4bytes的 FCS校驗填充物;幀的定界由前導碼標識010101···0101011共8個bytes ;填充電路採用計 數器管理方式,pad_cnt[3:0]計數從幀前導碼開始,若接收周期小於等於7個周期,即圖2 方式,等於8個周期的需填充的情況只有三種,即圖3所示,將無效位置加入PADDING bytes 形成填充物,內容隨意,以上兩種填充情況的第8周期最後即4bytes為FCS。填充後的數據 流用7個64位寄存器對MAC幀8條lane的數據進行7次寄存複製,64位CRC-32電路對 除最後一周期的8個lane數據進行校驗,校驗對象是沒有複製的原始數據,即圖4的TDX_4fifo [63 0]寄存器;最後一周的8個lane數據可能有8中有效數據的情況,8個lane完全 有效則繼續採用64位CRC-32電路對其進行校驗;而其餘其中情況1-7個lane數據有效 則採用8位CRC-32電路串行校驗,每個周期出一個臨時校驗值,最多7個周期校驗完畢,校 驗對象是複製的第7份64位的寄存器值,這裡還需要一個移位寄存器,將有效lane的數據 沒周期移入8位CRC-32電路;在8位CRC-32電路對第N幀校驗的過程中,64位CRC-32電 路也可以同時進行校驗工作,對N+1幀除最後一周期的8個lane數據進行校驗,以此進行 桌球操作達到線速校驗相鄰兩幀的目的;最後一個64位CRC32和一個8位CRC32電路聯合 校驗的4B數據添加到MAC結尾形成FCS。
權利要求
1.一種基於FPGA的萬兆乙太網數據幀的填充校驗方法,其特徵在於包含以下步驟A、狀態機啟動由上遊發送請求進行觸發,數據被向前推進,進入第一次格式處理;B、對有效數據進行bytes計算,大於或等於最小幀進入步驟D操作,否則,執行步驟C;C、根據所需發送的有效數據流的幀長度補齊到最小幀長度;D、應用並行64位CRC-32電路和串行8位CRC-32電路對填充後的有效數據流或原始 數據流進行流水校驗,8位CRC-32電路流水校驗64位CRC-32電路和非完整周期的有效數 據流,校驗結果進行簡單編碼後形成FCS,填充到有效數據流結尾,將數據流推進到下遊模 塊發送;ε、在等待ire個周期後,重新進入空閒狀態,重複這一過程。
2.如權利要求1所述一種基於FPGA的萬兆乙太網數據幀的填充校驗方法,其特徵在 於所述C步驟數據填充時採用7路並行流水數據、採用一個64位CRC-32電路和一個8位 CRC-32 電路。
3.如權利要求1所述一種基於FPGA的萬兆乙太網數據幀的填充校驗方法,其特徵在 於數據發送時採用桌球模式校驗MAC層發送方的8條lane的有效數據流。
全文摘要
本發明提供了一種基於FPGA的萬兆乙太網數據幀的填充校驗方法。最小幀不足時填充,應用並行64位CRC-32電路和串行8位CRC-32電路對填充後的有效數據流或原始數據流進行流水校驗,8位CRC-32電路流水校驗64位CRC-32電路和非完整周期的有效數據流,校驗結果(4Bytes)進行簡單編碼後形成FCS,填充到有效數據流結尾,將數據流推進到下遊模塊發送。助於本發明的技術方案,能夠生成並發送符合萬兆乙太網MAC層的數據幀,並無延時的將校驗後的數據幀推進到下一總線或緩衝區。
文檔編號H04L1/00GK102055555SQ20101059807
公開日2011年5月11日 申請日期2010年12月17日 優先權日2010年12月17日
發明者張磊, 張英文, 李靜, 白宗元, 紀奎 申請人:天津曙光計算機產業有限公司