新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于FPGA和IP Core的定制緩沖管理的實現

        基于FPGA和IP Core的定制緩沖管理的實現

        作者: 時間:2010-11-05 來源:網絡 收藏

          在PRAM中存在兩種鏈表形式,PQ List代表已經存儲的數據包鏈表。為方便數據讀出,PQ List需要記錄數據包的第一個數據塊地址,即首指針Pq_Hptr,為方便新的數據寫入,PQ List需要記錄數據包的最后一個數據塊地址,即尾指針Pq_Tptr。PQ List同時需要記錄該鏈表的長度作為調度模塊進行調度的權值計算使用。

          Free List代表空閑的地址隊列。為方便地辨識、管理空閑的地址,避免地址沖突,在BM中將所有空閑的地址使用一個鏈表進行管理。這個鏈表就是空閑地址隊列。空閑地址隊列依據系統需求的不同有著不同的形式,一般空閑地址隊列的構成和PQ List相似,由空閑地址首指針Free_Hptr和空閑地址尾指針Free_Tptr構成。BM模塊的所有操作都圍繞著空閑的地址隊列Free List進行。

          基于BM模塊的數據流結構,BM模塊一般分為Write CONtrol模塊、Free List control模塊、Read Control模塊、PRAM Control模塊、BRAM Control模塊。BM的結構如圖3所示。

        圖3.jpg


        圖3 BM結構圖

          Write Control模塊從Free List模塊處得到空閑地址,向BRAM Control模塊提出寫請求,同時更新PRAM中的內容。Free List control模塊負責管理空閑地址列表,提供Write Control模塊的寫BRAM地址及PRAM地址,回收經Read Control模塊讀出數據塊后釋放的地址。Read Control模塊根據調度器的調度結果,通過BRAM Control模塊讀出需要發送的數據單元,同時將釋放的緩沖單元地址寫入空閑地址列表。PRAM Control模塊為外部SSRAM的控制模塊,可直接使用參考設計完成。BRAM Control模塊為外部DRAM控制模塊,一般分為Datapath與Controler兩個子模塊。Datapath模塊專門負責數據接口部分,完成DRAM接口的DQ、DQS處理以及相應的延時調整,Controler模塊負責完成DRAM的控制需求。

          在BM模塊中,BRAM的帶寬與PRAM的帶寬一般為TM的瓶頸。PRAM的帶寬主要受限于訪問的次數,而BRAM的帶寬受限于接口帶寬。例如對于一個10G的TM,BRAM的有效帶寬必須保證20G,以接口利用率最差只能達到65%計算(考慮SEG模塊切分信元出現的N+1問題),需要保證接口帶寬達到30G。使用64位的DRAM接口,接口速率不能低于500MB/s,這樣對Datapath模塊的設計提出了更高的要求。在實際系統中,BRAM主要使用DDR SDRAM、DDR II SDRAM。

          當使用Stratix II ,BRAM使用DDR II SDRAM時,測試表明DDR II SDRAM接口速率可達到800MB/s。在常規使用的情況下,DDR II SDRAM接口速率可保證達到667MB/s。對于一個64位的DRAM接口,接口速率可達到42.7GB/s,完全可以滿足一個10G的TM系統。

          BM模塊作為緩沖管理模塊,緩沖的基本單元為BCELL,基于對BCELL的管理,對于BM的操作都牽涉到空閑地址隊列的操作以及鏈表的操作。最基本的操作就是寫入操作和讀出操作。BM模塊的寫入操作由Write Control模塊發起。

          對于Write Control模塊,有數據單元需要寫入,首先向Free List模塊申請空閑地址,Free List將首指針a給Write Control模塊,作為該數據塊的寫地址,同時讀出首指針a對應在PRAM中的內容,得到下一跳地址b,將下一跳地址b作為新的空閑地址首指針。



        關鍵詞: FPGA Core 定制

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 金华市| 隆昌县| 抚州市| 通州区| 搜索| 东丰县| 鹤庆县| 上杭县| 绥宁县| 历史| 清徐县| 乌审旗| 马鞍山市| 海口市| 阳东县| 平顶山市| 凤山县| 广宁县| 江陵县| 漳州市| 河西区| 宽城| 玉林市| 雷州市| 松溪县| 怀柔区| 西平县| 屏东县| 沐川县| 锡林浩特市| 泗水县| 桐梓县| 安达市| 珠海市| 法库县| 浦城县| 永福县| 潼关县| 南投市| 会宁县| 鄂托克旗|