<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 網(wǎng)絡(luò )與存儲 > 設計應用 > Vivado HLS推動(dòng)協(xié)議處理系統蓬勃發(fā)展(上)

Vivado HLS推動(dòng)協(xié)議處理系統蓬勃發(fā)展(上)

作者:KimonKarras JamesHrica 時(shí)間:2015-04-28 來(lái)源:電子產(chǎn)品世界 收藏

  4 #pragma INTERFACE axis port=inData

本文引用地址:http://dyxdggzs.com/article/273294.htm

  5 #pragma INTERFACE axis port=outData

  6

  7 static stream> modOne2modTwo;

  8 static stream> modTwo2modThree;

  9

  10 moduleOne(inData, modOne2modTwo);

  11 moduleTwo(modOne2modTwo, modTwo2modThree);

  12 moduleThree(modTwo2modThree, outData);

  13 }

  例1中的代碼用于創(chuàng )建頂層模塊函數,供調用所有其它子函數使用。頂層模塊函數使用兩個(gè)參數,均屬于“流”(stream)類(lèi)( HLS庫中提供的模塊類(lèi)之一)。流是一種HLS建模架構,代表準備以流方式交換的數據通過(guò)的接口。流可以實(shí)現為隊列或內存,也可以是一種能夠配合任何C++架構使用的模板類(lèi)。在本例中,我們定義了一種稱(chēng)為axiWord的數據結構(Struct),如例2所示。

  例2:定義流接口使用的C++ 結構

  struct axiWord {
  ap_uint<64> data;
  ap_uint<8> strb;
  ap_uint<1> last;
  };

  該struct用于定義AXI4-Stream接口的部分字段。 HLS能自動(dòng)支持此類(lèi)接口,使用編譯指令(pragma)語(yǔ)句即可完成設定。編譯指令是對高層次綜合工具的指令,用于指導工具實(shí)現要求的結果。例1中第4行和第5行的編譯指令用于告知 HLS這兩個(gè)指令(具體是頂層模塊的輸入和輸出端口)將使用AXI4-Stream接口。AXI4-Stream I/F包含兩個(gè)必備信號,分別是有效信號和就緒信號,但它們沒(méi)有包含在聲明的數據結構中。這是由于Vivado HLS AX4 I/F會(huì )在內部處理這些信號,也就是說(shuō)它們對用戶(hù)邏輯而言是透明的。如前文所述,在使用AXI4-Stream I/F時(shí),從用戶(hù)處抽象流控制完全由Vivado HLS完成。

  當然未必一定使用AXI4-Stream接口。Vivado HLS提供有豐富的總線(xiàn)接口。這里選擇AXI4-Stream作為常見(jiàn)標準接口的示例,供用戶(hù)進(jìn)行包處理。

  實(shí)現我們的設計的下一項工作是確保我們的三個(gè)模塊彼此互聯(lián)。這項工作也通過(guò)流完成,不過(guò)這次它們是位于頂層模塊的內部。第7行和第8行用于聲明實(shí)現這一目標的兩個(gè)流。這兩個(gè)流使用了另一種Vivado HLS結構ap_uint。這是一種無(wú)符號一維位陣列,隨后將按此對其操作。同時(shí)這也是又一種模板類(lèi),因此必須設定這個(gè)陣列的寬度。在本例中使用64位,與頂層模塊輸入輸出I/F的數據成員寬帶匹配。還有一點(diǎn)需要詳細說(shuō)明的是這些流全部聲明為靜態(tài)變量。靜態(tài)變量是指其值不隨函數調用變化的一種變量。由于在作為順序程序執行時(shí)頂層模塊(以及全部的子模塊)每個(gè)時(shí)鐘周期會(huì )被調用一次,所以任何需要保持其值不隨時(shí)鐘周期變化的變量都需要聲明為靜態(tài)變量。

  3 創(chuàng )建流水線(xiàn)設計

  將要討論的最后也是最重要的一個(gè)是編譯指令。第2行中的數據流編譯指令指示Vivado HLS盡量以并行方式安排執行該函數的所有子函數。“internal”參數用于設置該模塊的初始化間隔(II)。初始化間隔(II)告知Vivado HLS該模塊必須具備的處理新輸入數據字的頻次,故決定了設計的吞吐量。不過(guò)這并不妨礙模塊內部的流水線(xiàn)化和擁有>1的時(shí)延。當II=2時(shí),該模塊將用兩個(gè)周期完成數據字的處理,然后再讀入新的數據字。以這種方式Vivado HLS可以簡(jiǎn)化模塊最終的RTL。也就是說(shuō),在一個(gè)典型的協(xié)議處理應用中,設計必須具備每個(gè)時(shí)鐘周期處理一個(gè)數據字的能力,故從現在起我們令I(lǐng)I=1。

  初始化間隔(II)告知Vivado HLS該模塊必須具備的處理新輸入數據字的頻次,故決定了設計的吞吐量。

  最后要解決的問(wèn)題是函數調用本身。在Vivado HLS中,這個(gè)過(guò)程對應的是模塊的實(shí)例化。傳遞給每個(gè)模塊的參數實(shí)質(zhì)上定義了模塊的通信端口。在本例中,通過(guò)將輸入連接到第一個(gè)模塊,然后用 modOne2modTwo流把第一個(gè)模塊連接到第二個(gè)模塊,依次類(lèi)推,將三個(gè)模塊鏈接起來(lái)。(未完待續)

c語(yǔ)言相關(guān)文章:c語(yǔ)言教程


c++相關(guān)文章:c++教程



上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Vivado FIFO 存儲器 RAM C/C++

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>