• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 汽車電子 > 設計應用 > 基于FPGA的IPV6數據包的拆裝實現

    基于FPGA的IPV6數據包的拆裝實現

    ——
    作者: 時間:2007-02-06 來源:電子技術應用 收藏

    基于實現
    王志遠, 杜詩武, 曲 晶
    (信息工程學院 信息技術研究所,河南 鄭州 450002)
     
      摘 要:介紹了一種運用的包頭和數據部分分離并重新封裝的方法。利用該方法,可以使處理速度達到2Gbit/s以上。
      關鍵詞: IPV6數據包

      筆者在參與國家“863”重大專題項目“高速密碼芯片及驗證平臺系統”的過程中,遇到了將IPV6數據包的包頭和數據部分拆開,然后把數據部分送密碼芯片進行加/解密處理,最后再將處理后的數據部分與包頭重新封裝為數據包的課題。以往對IP包進行拆裝多利用軟件實現,但本項目涉及到配合高速密碼芯片(處理速度在2Gbit/s以上)工作的問題,顯然利用軟件實現IP包的拆裝在速度上達不到要求。為此,筆者運用FPGA(型號為Xilinx公司的XC2VP20—FF896CGB0345)來實現IPV6數據包的拆裝。該FPGA內部邏輯框圖如圖1所示。

    圖1 FPGA內部邏輯框圖

      其工作流程為:2.5GHz的標準IPV6數據包串行差分信號通過ROCKETIO高速通道后轉換為16位125MHz并行信號,再經信號轉換模塊進一步轉換為66位62.5MHz并行信號后進入1緩存,然后對其輸出數據進行判斷,若是報頭則送入3緩存,若是數據部分則送入FIFO2緩存,最后將FIFO2數據送往密碼芯片進行處理;經密碼芯片處理的數據首先放入FIFO4進行緩存,然后控制FIFO3和FIFO4將一個數據包的頭和數據寫入FIFO5中,重新封裝成一個完整的數據包;重新封裝的IPV6數據包經過信號轉換模塊變為16位125MHz的并行信號,并通過ROCKETIO高速通道轉換為2.5GHz高速串行差分信號送出。
      可以看出,經過以上流程,實現了一個數據包的拆分和重新封裝。
    1 IPV6數據包的拆分
      用FPGA實現IPV6數據包的拆分,主要是通過控制幾個FIFO的數據輸入輸出來實現的。FPGA內部的拆分單元電路的物理連接如圖2所示,其中FIFO1的作用是緩存IPV6數據包,FIFO2的作用是緩存IPV6數據包的數據部分,FIFO3的作用是緩存IPV6數據包的包頭。

    圖2 拆分單元電路物理連接圖

      圖中的三個FIFO都是由Xilinx公司的開發工具ISE6.1自帶的Core IP生成的。其中FIFO1和FIFO3是同步FIFO,工作時鐘為頻率62.5MHz,輸入輸出數據寬度都是66bit;FIFO2是異步FIFO,輸入時鐘頻率為62.5MHz,輸出時鐘頻率為50MHz(密碼芯片的工作時鐘頻率為50MHz),輸入輸出數據寬度都是64bit。
      FIFO1的輸入數據為IPV6數據包,格式如表1所示??梢钥闯?該數據是以并行的66bit信號傳輸的,即每一時鐘周期并行傳送66bit數據。其中每個周期的高兩位(即65位和64位)為數據包的頭尾標志,這是IPV6路由器內部根據實際處理需要加上的,“10”表示一個完整數據包的第一周期,“11”表示數據包的中間內容,“01”表示一個完整數據包的最后一個周期。因為IPV6數據包的包頭是固定長度的,為40字節(等于5



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 琼结县| 阳新县| 海晏县| 岳阳市| 海南省| 岱山县| 赤壁市| 南涧| 盖州市| 益阳市| 招远市| 宝山区| 保康县| 寿光市| 门源| 长沙市| 兰西县| 九龙坡区| 延长县| 晋城| 宣武区| 徐汇区| 岳西县| 武冈市| 葫芦岛市| 金乡县| 武定县| 施秉县| 普陀区| 教育| 大宁县| 吉木乃县| 谷城县| 固镇县| 梁平县| 元朗区| 武乡县| 昌吉市| 甘孜县| 西贡区| 江达县|