新聞中心

        EEPW首頁 > 網絡與存儲 > 設計應用 > Vivado HLS推動協議處理系統蓬勃發展(下)

        Vivado HLS推動協議處理系統蓬勃發展(下)

        作者:KimonKarras JamesHrica 時間:2015-04-29 來源:電子產品世界 收藏

          7 用多級層級創建系統

        本文引用地址:http://www.104case.com/article/273295.htm

          上文討論了如何使用 HLS實現簡單的三級流水線。但是一般的包處理系統可能會包含分布在層級結構中多個層面的多個模塊。圖2即是這種系統的示例。在本例中,層級結構的第一層由兩個模塊組成,每個模塊下面包括三個子模塊。這個示例中的頂層模塊與前面介紹的簡單系統中頂層模塊相似。但包含有三個子模塊的較低層模塊使用INLINE編譯指令來解析函數,將其子模塊推送到頂層,如例6所示。

          例6: HLS中的中間模塊

          1 void module2 (stream < axiWord > &inData,
          stream&outData) {
          2 #pragma HLS INLINE
          3
          4 ………

          因此在 HLS完成綜合后,系統基本如圖3所示。這樣Vivado HLS就能正確地根據這些模塊創建數據流架構,完成模塊的流水線化,然后同步執行。在嵌入該函數后,各模塊和信號保持原來的名稱不變。

          8 使用高級語言結構

          高層次綜合的主要優勢之一在于可以使用高級語言結構來表達復雜對象,與傳統RTL設計相比,顯著提高了抽象水平。下面的例子是描述一個小型查找表。

          例7中的代碼用于內容可尋址(CAM)類定義,它使用類對象創建一個表,供存儲和恢復上述原型系統的ARP數據。該類有一個私有成員,這個私有成員是一個由“noOfArpTableEntries”條“arpTableEntry”類型記錄組成的陣列。這種類型屬于一種數據結構,包括MAC地址、對應的IP地址和用于說明該條記錄是否包含有效數據的一個數位。

          例7:CAM類定義

          1 class cam {
          2 private:
          3 arpTableEntry filterEntries[noOfArpTableEntries];
          4 public:
          5 cam();
          6 bool write(arpTableEntry writeEntry);
          7 bool clear(ap_uint<32> clearAddress);
          8 arpTableEntry compare(ap_uint<32>
          searchAddress);
          9 };

          這個類也包括四種在這個表上運算方法(其中一個是構造器)。其中的一個,即比較法,用于實現真正的查找功能。本例通過提供IP地址來返回相應的MAC地址。處理的方法是使用“for”循環查找表中的每一條記錄,搜索有相同IP地址的有效記錄。然后完整地返回這條記錄。如果沒有找到,就返回無效記錄。為讓設計實現II=1的目標,必須完全展開這個循環。

          例8:用于CAM類的比較法

          1 arpTableEntry cam::compare(ap_uint<32> searchAddress)
          {
          2 for (uint8_t i=0; i
          3 if (this->filterEntries[i].valid == 1 &&
          searchAddress == this->filterEntries[i].ipAddress)
          4 return this->filterEntries[i];
          5 }
          6 arpTableEntry temp = {0, 0, 0};
          7 return temp;
          8 }

          上述經驗和示例明確說明,用戶可以使用Vivado HLS充分發揮高級編程結構的作用,用類似軟件的方法描述包處理系統。采用RTL是難以實現的。

          9 10GBps速率下的協議處理

          與傳統RTL相比,Vivado HLS可使用在FPGA上迅速方便地實現協議處理設計,充分發揮高級語言帶來的效率提升優勢。另外還具有下列優點:使用C函數輕松完成系統構建;數據通過流交換,提供類似的標準化接口;靈活的流控制和HLS編譯指令,便于使用該工具實現需要的架構。借助這些功能,用戶無需重寫源代碼就能夠迅速判研多種不同設計方案的利弊。

          出于解釋這類設計的基本概念的目的,上文討論了一種能夠應答ping和ARP請求,解析IP地址查詢的簡單ARP服務器。結果證明用Vivado HLS設計的模塊能夠以10Gbp乃至更高的線速完成協議處理。

        c++相關文章:c++教程



        上一頁 1 2 3 下一頁

        關鍵詞: Vivado FIFO 存儲器 RAM C/C++

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 太康县| 镇雄县| 定安县| 五寨县| 石柱| 宜章县| 屏东市| 承德县| 万全县| 淮滨县| 分宜县| 上虞市| 石城县| 中阳县| 都安| 华亭县| 贺兰县| 双流县| 宜兴市| 大同县| 萨迦县| 龙泉市| 秀山| 岳阳市| 乐东| 郎溪县| 岚皋县| 桦甸市| 宾川县| 岢岚县| 桃源县| 措勤县| 中超| 本溪市| 沛县| 普陀区| 榆树市| 教育| 凉山| 九龙县| 湘阴县|