版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、學習Vivado第4章lab1接口綜合概述接口綜合是將RTL接口添加到C設計的過程。另外還把物理接口添加到RTL設計中,接口綜合包括了相關(guān)聯(lián)的I/O協(xié)議,容許數(shù)據(jù)通過接口傳輸并自動與內(nèi)部優(yōu)化的邏輯同步。本教程由4實驗練習組成涵蓋的主要功能和接口綜合。Lab1: 查看函數(shù)的返回和塊級協(xié)議Lab2: 理解默認端口的I/O協(xié)議,并學會怎么選擇I/O協(xié)議Lab3: 查看一下數(shù)組端口實現(xiàn),可以進行分區(qū)。Lab4: 為設計創(chuàng)建一個優(yōu)化的實現(xiàn)并添加AXI4接口教程設計描述從xilinx網(wǎng)站下載教程的設計文件,參考信息中獲取教程設計。本教程使用教程目錄中的設計文件Vivado_HLS_Tutorial Int
2、erface_Synthesis。關(guān)于實驗使用前兩個實驗室在本教程中的示例的設計很簡單,這有助于將焦點保持在接口。最后兩個實驗練習使用多通道累加器。本教程介紹如何實現(xiàn)采用高層次綜合實現(xiàn)I/O端口和協(xié)議。在實驗4中,創(chuàng)建一個在Lab3中使用最優(yōu)實現(xiàn)的設計接口綜合 lab1:塊級I/O協(xié)議概述這個實驗解釋了什么是塊級I/O協(xié)議,并控制它們重點:在本教程中的圖片和命令假定了教程數(shù)據(jù)目錄Vivado_HLS_Tutorial被解壓并放置在c:vivado_HLS_Tutorial如果教程數(shù)據(jù)路徑解壓到不同的位置,或者在linux系統(tǒng)上,調(diào)整路徑名稱指向你選擇放置Vivado_HLS_Tutorial目
3、錄位置。步驟1:創(chuàng)建并打開工程1.打開Vivado HLS 命令提示符a.在windows系統(tǒng)中,采用StartAll ProgramsXilinx Design ToolsVivado2014.2Vivado HLSVivado HLS 2014.2 Command Prompt,如下圖b.在linux系統(tǒng)下,打開新的shell,2. 用命令提示符窗口,如圖55,把接口綜合教程的路徑變?yōu)閘ab13. 執(zhí)行TCL并建立vivado HLS Project,采用的是vivado_hlsf run_hls.tcl如圖55所示4. 當vivado HLS 完成,在用戶界面里打開工程。用vivado_
4、hlsp vivado_hlsp adders_prj命令打開,如圖56步驟2:創(chuàng)建和查看默認的塊級I/O協(xié)議1 在源文件夾中雙擊adders.c,打開源代碼,并查看如圖57這個例子用了一個簡單的設計,把焦點集中在I/O實現(xiàn)上(在設計中沒有邏輯)這段代碼的重要點如下:編譯格式的指令被添加到源代碼中,為了防止任何I/O協(xié)議被綜合成為一些數(shù)據(jù)結(jié)構(gòu)(inA,inB,和inC),I / O端口的協(xié)議將在接下來的實驗練習中復習。這個函數(shù)返回一個值并且從這個函數(shù)中只有唯一的輸出。正如在后面的練習,不是所有的函數(shù)都返回一個值。在本實驗練習中討論該函數(shù)返回創(chuàng)建的端口。2 用工具欄中的按鈕執(zhí)行Run C Syn
5、thesis命令,或Solution菜單當綜合完成,綜合報告會自動打開3 查看RTL接口,滾動到綜合報告摘要的結(jié)尾處。接口摘要和Outline選項卡如圖58有三種類型的端口可以查看設計完成花費超過一個時鐘周期,因此時鐘和復位已經(jīng)添加到設計中:ap_clk和ap_rst.這兩個信號都是一位輸入。塊級I/O協(xié)議為了控制RTL設計已經(jīng)添加端口:ap_start,ap_done,ap_idle和ap_ready。這些端口隨后會被詳細說明設計還有4個數(shù)據(jù)端口輸入端口In1,In2和In3,都是32位輸入,和指定I/O協(xié)議的ap_done(如在圖58中指定的指令)該設計還具有對函數(shù)返回一個32位的輸出端口
6、,ap_return。塊級I / O協(xié)議允許通過附加的端口、獨立數(shù)據(jù)I / O端口對RTL設計進行控制。但此I / O協(xié)議是與函數(shù)本身相關(guān)聯(lián),不與任何數(shù)據(jù)端口相關(guān)聯(lián)。默認的塊級I/O協(xié)議被稱為ap_ctrl_hs。圖58顯示了這個協(xié)議是與函數(shù)的返回值相關(guān)聯(lián)(即 使函數(shù)中的代碼沒有指定返回值這也可以)表1概括了用于塊級I / O協(xié)議ap_ctrl_hs的信號的行為。注:解釋一下使用術(shù)語“交易”。在高層次綜合的情況下,一個事務是相當于一個執(zhí)行C函數(shù)(或在綜合RTL設計中的等效操作)應用 描述 ap_start該信號控制模塊執(zhí)行,邏輯為1時設計開始運行。 它應保持邏輯1直到相應的輸出握手ap_rea
7、dy被置位。當ap_ready變高時,決定了是否繼續(xù)保持ap_start置位并執(zhí)行其他事物或設置ap_start為邏輯0,當前事務的結(jié)束時允許設計暫停,。 如果在ap_ready為邏輯1 之前ap_start被置為低,設計有可能沒有把所有輸入端口讀完,并可能拖延下一個輸入讀取操作。 ap_ready這個輸出信號表明設計已經(jīng)準備好接受新數(shù)據(jù) 當準備好接受新的輸入時,ap_ready信號設置為邏輯1。表明所有為這次事物的輸入讀已經(jīng)完成。 如果設計不是流水線操作,直到下一次事物才開始執(zhí)行新的讀。 這個信號是用來決定何時在端口上用新的值,決定是否用一個ap_start輸入信號來啟動一個新的事務。 如果
8、ap_start信號沒有被設置為高,當設計在當前事務完成中所有的操作,這個信號變?yōu)榈碗娖健?ap_done這個信號表明設計在當前的事務中完成所有的操作。輸出邏輯1表明設計已經(jīng)完成了這個事務的所有操作。因為在事務結(jié)束時,該信號為邏輯1還表示ap_return端口上的數(shù)據(jù)是有效的。 不是所有的函數(shù)都有函數(shù)返回值,因此并非所有的RTL設計都有一個ap_return端口 ap_idle這個信號表示設計正在操作或閑置狀態(tài)(無操作)。 輸出端口上用邏輯1表明是空閑狀態(tài)。一旦設計開始運行,該信號為低電平。 該信號為高電平時,設計完成操作,未進行任何進一步的操作。 您可以通過查看由RTL協(xié)同仿真生成的跟蹤文件
9、,觀察這些信號的行為。這是在教程的RTL驗證所討論的,但圖59示出了用于當前合成的結(jié)果的波形。圖59的波形圖,表現(xiàn)了塊級I/O信號的行為設計直到ap_start設置為邏輯1才開始啟動。通過設置端口ap_idle為低,表明設計不再空閑展示了五個事務,首先3個輸入值(10,20,和30)被各自用在端口in1,in2和in3.輸出信號ap_ready變?yōu)楦弑砻髟O計準備好在下個時鐘下接受新輸入。輸出信號ap_done表明設計結(jié)束,輸出端口ap_return的值是有效(首先輸出值 60,是三個輸入的和)因為ap_start保持高電平,下一次事務開始于下一個時鐘周期。注意:在RTL的協(xié)同仿真,所有的設計和
10、端口輸入控制信號始終處于啟用狀態(tài)。例如,在圖59的信號ap_start始終是高的。在第二個事務,觀察ap_return端口,在這個端口上第一個輸出的值是70,直到ap_done信號為高電平這個結(jié)果才有效。步驟3:改變塊級I/O協(xié)議默認的塊級I/O協(xié)議是ap_ctrl_hs協(xié)議(控制握手協(xié)議),在這一步中,您可以創(chuàng)建新的解決方案和改變這個協(xié)議。1. 從工具欄或者工程菜單選擇新解決方案(New Solution)來創(chuàng)建一個新的解決方案。2. 保持所有新解決方案對話框所有設定,這些設定都是默認的,點擊完成3. 在信息窗口中選擇C源代碼標簽(或如果C源代碼關(guān)閉重新打開)4. 激活指令選項卡(Direc
11、tives tab),選擇頂層函數(shù),如圖60所示因為塊級I/O協(xié)議與函數(shù)相關(guān)聯(lián),您必須通過選定頂層函數(shù)來指定他們。5. 在指令選項卡中,鼠標移到頂層函數(shù)adders上,右鍵單擊,然后選擇插入指令I(lǐng)nsert Directives。打開指令編輯器對話框。圖61展示的對話框,對話框中的下拉菜單為了激活接口模式。下來菜單為塊級接口協(xié)議展示了三種選擇 ap_ctrl_none: 沒有塊級I/O控制協(xié)議 ap_ctrl_hs: 塊級I/O控制握手協(xié)議,我們已經(jīng)采用的 ap_ctrl_chain: 塊級I/O協(xié)議的控制鏈。這個I/O協(xié)議主要是用于把流水線塊鏈接在一起。塊級I/O協(xié)議ap_ctrl_chai
12、n不包含在這個教程中。這個協(xié)議與ap_ctrl_hs協(xié)議類似,但增加了額外的輸入信 號,ap_continue,它必須為高,當ap_done為了繼續(xù)下次事務被置位時。這允許下游模塊在系統(tǒng)上施加回壓,并進一步停止處理,這是不能接受 新的數(shù)據(jù)。6. 在Directives Editor對話框中的DestinationEditor部分中,選擇Source File默認情況下,指令被放置在directives.tcl文件。在這個例子中,該指令被放置在現(xiàn)有的I / O指令的源文件中。7. 從下拉菜單中選擇ap_ctrl_none8. 點擊OK源文件現(xiàn)在有新的指令,在源文件代碼和指令選項卡中都是高亮的。如
13、圖62新指令表示與函數(shù)參數(shù)/接口相關(guān)聯(lián)被稱為返回。所有接口指令與函數(shù)參數(shù)相連接。對于塊級I/O協(xié)議,返回參數(shù)被用于具體的塊級接口。如果函數(shù)在源代碼里沒有返回參數(shù)也是可能的。Figure 62: Block-Level Interface Directive ap_ctrl_none在工具欄里點擊Run C Synthesis按鈕,或者用菜單SolutionRun C Synthesis來綜合設計。在源文件中添加的指令改變的源文件。圖62所示源文件名為*adders.c。這個標記表明文件已經(jīng)更改,但沒有保存。10. 點擊YES 來接受對源文件的更改。當報告打開時,接口概述出現(xiàn),如圖63Figur
14、e 63: Interface summary for ap_ctrl_none當接口協(xié)議ap_ctrl_none被采用時,沒有塊級接口協(xié)議被添加到設計中。僅有諸如clock、reset和data端口。注意,也沒有ap_done信號,consumer模塊接收來自ap_return的數(shù)據(jù),當數(shù)據(jù)有效時,ap_return端口現(xiàn)在不能表明另外,RTL協(xié)同仿真的功能需要一個塊級I/O協(xié)議,為了自動協(xié)同仿真安排測試平臺和RTL設計。任何試圖用RTL協(xié)同仿真的結(jié)果在下面的錯誤信息中,停止RTL協(xié)同仿真(理解上有誤差)E SIM-345 Cosim only supports the following
15、ap_ctrl_none designs: (1) combinational designs; (2) pipelined design with task interval of 1; (3) designs with array streaming or hls_stream ports.E SIM-4 * C/RTL co-simulation finished: FAIL *退出vivado HLS GUI返回命令提示框?qū)W習Vivado第4章lab2接口I/O協(xié)議概述這個實驗解釋了怎么指定具體的端口I/O協(xié)議。1. 在lab1中用Vivado HLS命令提示符,更改為lab2目錄,如
16、圖642. 鍵入vivado_hls -f run_hls.tcl來創(chuàng)建新的Vivado HLS工程Figure 64: Setup for Interface Synthesis Lab 23. 鍵入vivado_hls -p adders_io_prj 來打開vivado HLS 用戶界面工程4. 打開源代碼如圖65Figure 65: C Code for Interface Synthesis Lab 2 本練習的源代碼是與lab1類似。出于同樣的原因使用簡單的代碼,它有助于聚焦在接口的行為,而不是核心邏輯。這一次,代碼沒有一個函數(shù)的返回,取代函數(shù)輸出的是通過指針參數(shù)* in_out1
17、輸出。這也提供了機會,探索雙向(輸入輸出)端口的接口選項。 I / O協(xié)議的類型,你可以通過接口綜合添加到C函數(shù)的參數(shù)取決于參數(shù)類型。這些選項在Vivado高層次綜合用戶指南(UG902)有完整描述。在本實施例中的指針參數(shù)既是輸入和輸出的功能。在RTL設計中,該參數(shù)被實現(xiàn)為單獨的輸入和輸出端口。對于圖65所示的代碼,每個函數(shù)參數(shù)可能的選項在下表中被描述函數(shù)參數(shù) I/O協(xié)議選擇 In1 和 In2按值傳遞的參數(shù)都可以用下面的I / O協(xié)議來實現(xiàn) Ap_none:沒有I/O協(xié)議,這個是默認的輸入 Ap_stable:無I/O協(xié)議 Ap_ack:實現(xiàn)與相關(guān)的輸出端口確認 Ap_val:實現(xiàn)與相關(guān)的輸
18、入有效端口 Ap_hs:實現(xiàn)了兩個輸入有效和輸出端口確認。 In_out1按引用傳遞的輸出可以用下面的I/O協(xié)議實現(xiàn) Ap_none:沒有I/O協(xié)議,這個是默認的輸入 Ap_stable:無I/O協(xié)議 Ap_ack:實現(xiàn)與相關(guān)的輸出端口確認 Ap_val:實現(xiàn)與相關(guān)輸出的有效端口,這個是默認的輸出 ap_ovld:實現(xiàn)與相關(guān)輸出有效端口,(任何INOUT端口的輸入部分沒有有效的端口) ap_hs:實現(xiàn)所有輸入有效端口和輸出響應端口 ap_fifo:FIFO接口與相關(guān)輸出寫入,輸入FIFO滿端口 ap_bus:Vivado HLS總線接口協(xié)議 在實驗1中應用的端口指令實際上不是必需的,因為AP_
19、NONE是使用這些C參數(shù)的默認I/ O協(xié)議。在這個練習中給出了指令,以避免處理任何默認或不是默認的I / O端口協(xié)議的行為。 在本練習中,您將實現(xiàn)一系列的I / O協(xié)議。步驟2:端口具體的I/O協(xié)議1. 保證能在信息窗口中看見C源代碼2. 激活指令選項卡(Directives tab)并選擇輸入?yún)?shù)in1(input argument in1),如圖66Figure 66: Adding Port I/O Protocols3. 右擊并選擇插入指令(Insert Directives)4. 當指令編輯窗口打開,使指令下來框為INTERFACEa. 保持目標是默認值,這次,指令被存儲在direc
20、tives.tcl文件中。b. 從模式下來菜單選擇ap_valc. 點擊OK5. 選擇參數(shù) in2 ,添加一個接口指令指定I/O協(xié)議為ap_ack6. 選擇參數(shù)in_out1并添加一個接口指令I(lǐng)/0協(xié)議為ap_hs7. 在資源管理器窗口中,擴展約束文件夾,并雙擊打開directives.tcl文件,如圖67Figure 67: Directives for Lab 28. 綜合設計9. 當文件打開時,查看接口概述,如圖68Figure 68: Interface summary for Lab 2 設計有時鐘和復位 默認塊級I/O協(xié)議信號是存在的 端口 in1被以數(shù)據(jù)端口而實現(xiàn),并伴隨輸入有效
21、信號 數(shù)據(jù)在in1端口上,僅讀。當端口in1_ap_vld為有效高 端口 in2被綜合為數(shù)據(jù)端口,并與輸出響應信號相關(guān)聯(lián) 當端口in2被讀時,端口 in2_ap_ack將被置高 inout_i定義為inout1參數(shù)的輸入部分,與輸入有效端口inout1_i_ap_val相關(guān)聯(lián),并且輸出響應端口inout1_i_ap_ack inout1參數(shù)輸出部分定義為inout_o,與輸出有效端口inout1_o_ap_val相關(guān)聯(lián),并輸入響應端口inout1_o_ap_ack.10. 退出vivado HLS GUI 并且返回命令提示口學習Vivado第4章lab3實現(xiàn)數(shù)組的RTL接口概述 這個練習說明了
22、在函數(shù)中的數(shù)組參數(shù),你可以實現(xiàn)不同種類的RTL端口步驟1:創(chuàng)建和打開工程 1.在先前的lab中用Vivado HLS命令提示符,更改為lab3目錄2.鍵入vivado_hls -f run_hls.tcl來創(chuàng)建新的Vivado HLS工程3.鍵入vivado_hls p array_io_prj 來打開vivado HLS 用戶界面工程4.打開源代碼如圖69此設計具有一個輸入數(shù)組和一個輸出數(shù)組。在C源代碼中的注釋說明了輸入數(shù)組中的數(shù)據(jù)是如何有序作為一個通道和通道是怎么被計算的。理解設計,您還可以查看試驗平臺和文件result.golden.dat的輸入和輸出數(shù)據(jù)。Figure 69: C Co
23、de for Interface Synthesis Lab 3步驟2:綜合函數(shù)參數(shù)數(shù)組為RAM端口 在這一步中,查看數(shù)組端口是怎么綜合成RAM端口的。1綜合設計,當報告打開時查看接口簡介。接口簡介表明了在C 源代碼中的數(shù)組參數(shù)是怎么綜合成默認的RAM端口的。設計有時鐘,復位和默認的塊級I/O協(xié)議ap_ctrl_hs(注意在報告中的時鐘) d_o參數(shù)已經(jīng)綜合成RAM端口(I/O協(xié)議ap_memory)數(shù)據(jù)端口(d_o_d0)地址端口(d_o_address0)芯片使能控制端口(d_o_ce0)和寫使能端口(do_we0) d_i參數(shù)已經(jīng)被綜合成類似RAM接口,但有輸入數(shù)據(jù)端口(d_i_q0)沒
24、有寫使能端口,因為接口僅讀數(shù)據(jù)。在這兩種情況下,數(shù)據(jù)端寬度是在C源代碼中的數(shù)據(jù)值的寬度(在這種情況下的16位整數(shù)),并且地址端口的寬度已被自動調(diào)整大小匹配到的地址必須被存取的次數(shù)(5位的為32個地址)。把數(shù)組綜合成RAM端口是默認的,您可以控制這些端口怎么用一些其他的選擇去實現(xiàn)。在實驗3中的其余步驟演示這些選項: 采用單端口RAM和雙端口RAM接口 采用FIFO接口 分割成離散的端口步驟3:采用雙端口RAM和FIFO接口 高層次綜合讓你可以指定RAM接口為單端口還是雙端口。如果你不做出這樣的選擇,Vivado HLS 會自動分析設計和選擇端口的數(shù)量,以便產(chǎn)生最大的數(shù)據(jù)速率。第二步用的單端口RA
25、M接口,因為在源代碼中的for循環(huán)是默認的保持不展開,該循環(huán)每次迭代依次執(zhí)行: 讀輸入端口 從內(nèi)部RAM中讀累計的結(jié)果 和累計并且新數(shù)據(jù)寫入到內(nèi)部RAM中 把結(jié)果寫到輸出端口 重復循環(huán)的下一次迭代這確保單一輸入讀和輸出寫入以往需要。即使采用多個輸入和輸出時,內(nèi)部邏輯可以不采用額外端口。注意:如果你指定了雙端口RAM并且Vivado HLS 能確定必須只能用單端口,會使用單端口覆蓋雙端口規(guī)范。在這個設計,如果你想用多RTL端口實現(xiàn)數(shù)組參數(shù),首先得事情你必須展開for循環(huán),并容許內(nèi)部操作是并行的,否則多端口沒有好處:沒有展開的for循環(huán)可以確保在每次讀時有一個數(shù)據(jù)被讀。1 從工具欄中選擇New S
26、olution或者從工程菜單來創(chuàng)建新的解決方案2 設置默認,點擊Finish3 保證C源代碼在信息窗口中可見4 在指令選項卡中,選擇for循環(huán),在for循環(huán)上并右擊打開Directives Editor對話框。a. 在指令編輯對話框中激活指令下來菜單在上部并選擇展開b. 指令編輯如圖71,點擊OK下次,為輸入讀指定雙端口RAM,資源指令指示RAM連接到接口的類型。5 在指令選項卡中,選擇port d_i并右擊打開指令編輯對話框a. 在指令編輯中在上部激活指令下拉菜單并選擇RESOURCE(in Dirctive)b. 點擊 core options 框并選擇RAM_2P_BRAMc. 確認在指
27、令編輯對話框中的設定,如圖72,點擊OK使用FIFO接口實現(xiàn)輸出端口6 在指令選項卡(Directive)中,選擇d_o,并右擊打開Directives Editor對話框a. 在指令編輯對話框中,保持指令為Interface(接口)b. 從模式下拉菜單中,選擇ap_fifo.c. 點擊OK在Directive 標簽展示了指令已經(jīng)應用到設計中如圖737 綜合設計當報告在信息窗口中打開時,接口摘要如圖74 設計有標準的時鐘、復位、和塊級I/O端口 數(shù)組參數(shù)d_o已經(jīng)綜合成16位寬數(shù)據(jù)接口的FIFO接口(d_o_din),并且有相關(guān)聯(lián)的輸出寫(d_o_write)和輸入FIFO滿(d_o_full
28、)端口 參數(shù)d_i 已經(jīng)實現(xiàn)為雙端口RAM接口根據(jù)使用的雙端口RAM接口,設計能接受兩倍于原始設計輸入數(shù)據(jù)的速率。但采用單端口FIFO接口的輸出數(shù)據(jù)速率和先前的一樣。步驟:分區(qū)RAM和FIFO陣列接口 在這步中,您可以學習到分區(qū)數(shù)組接口如何劃分為任意接口數(shù)量1. 從工具欄中選擇New Solution或者從工程菜單來創(chuàng)建新的解決方案2. 設置默認,點擊Finish3. 保證C源代碼在信息窗口中可見4. 在指令標簽中,選擇d_o并右擊打開Directives Editor對話框a. 在指令標簽對話框上部激活指令下拉菜單,并選擇ARRAY_PARTITIONb. 點擊類型下拉菜單,并選擇塊,為了將
29、分布式數(shù)組綜合成塊c. 在Factor對話框中,輸入值d. 指令編輯如圖所示,點擊現(xiàn)在,輸入數(shù)組分為兩大塊(不是個)在指令標簽中,選擇d_i并重復前面的步驟,但這次分區(qū)端口factor用指令標簽展示了現(xiàn)在應用在設計中的指令綜合設計當報告在信息窗口中打開,接口摘要如圖顯示 設計有標準的時鐘、復位、和塊級I/O端口 數(shù)組參數(shù)d_o已經(jīng)綜合成四個分離的FIFO接口 參數(shù)d_i 已經(jīng)實現(xiàn)為兩個分離RAM接口,每一個都是用雙端口,(如果你看到個分離RAM接口,確認分區(qū)因素d_i是2,而不是4)。如果輸入端口d_i被劃分為四個,僅需要為每個端口分配單端口RAM接口。因為輸出端口只能一次輸出四個值,一次讀個
30、輸入,沒有什么好處。在本教程中對數(shù)組的最后一步是完全分割的陣列。步驟:全分區(qū)數(shù)組接口 這一步向您展示了如何分割數(shù)組接口為單獨的端口. 從工具欄中選擇New Solution或者從工程菜單來創(chuàng)建新的解決方案. 設置默認,點擊Finish。包括從solution3拷貝現(xiàn)存的指令. 保證C源代碼在信息窗口中可見. 在指令標簽中,為d_o選擇已存在的分區(qū)指令. 右擊,并選擇Modify Directive在指令編輯對話框中a激活Type下拉菜單,改變分區(qū)格式為Completeb. 在因素(Factor)對話框中,你可以刪除,或保留。這個因素對這種分區(qū)類型沒有作用。c. 指令編輯如圖,點擊在指令標簽中,
31、選擇d_i并重復前面的步驟,完成對d_i的全分區(qū)或者,您可以刪除d_i指定資源的指令。如果陣列被劃分為單獨的元素,指定了一個內(nèi)存資源的資源指令將被忽略。指令標簽展示了應用在設計中的指令綜合設計當報告在信息窗口中打開,查看接口摘要,注意以下: 設計有標準的時鐘、復位、和塊級I/O端口 數(shù)組參數(shù)d_o已經(jīng)綜合成個分離的FIFO接口 用個分離的表口對參數(shù)d_i 的已經(jīng),因為為輸入默認接沒有I/O協(xié)議。他們有I/O協(xié)議ap_none盡管該教程的焦點在專門的I/O接口上,在這一點上是值得研究四種解決方案在性能上的差異。10. 從工具欄里選擇比較報告,或從工程菜單中打開方案的比較11在Solution S
32、election Dialog框中,為四種解決方案中每種添加選擇方案框如圖8112點擊OK打開解決方案的比較報告(圖82),它表明solution4,為每個陣列元素試用了唯一的端口,比以前的解決方案快得多。內(nèi)部邏輯可以盡可能快的獲得數(shù)據(jù),只要它需要訪問數(shù)據(jù)。(這里是因為端口的訪問沒有性能瓶頸。)鼠標滑輪往下滑查看比較報告(圖83),并注意與更多的I / O端口解決方案(解決方案2,3和4),允許更多的并行處理但也用相當多的資源在接下來的練習中,用端口和資源之間的最佳平衡,您將實現(xiàn)同樣的設計。除了實現(xiàn)這個優(yōu)化,接下來的練習中展示了如何把AXI4接口添加到設計中。13退出Vivado HLS界面并
33、返回到命令提示符。學習Vivado第4章lab4實現(xiàn)AXI4接口概述這個練習說明了在I/O端口中指定AXI4總線接口,這個練習除了增加AXI4接口外還展示了如何創(chuàng)建一個用接口和邏輯指令一起優(yōu)化的設計。步驟1:創(chuàng)建和打開工程1.在先前的lab中用Vivado HLS命令提示符,更改為lab4目錄2.鍵入vivado_hls -f run_hls.tcl來創(chuàng)建新的Vivado HLS工程3.鍵入vivado_hls -p axi_interfaces_prj 來打開vivado HLS 用戶界面工程4.打開源代碼如圖84此設計用的是和Lab3一樣的源代碼,并在設計重命名axi_interfaces
34、步驟2:創(chuàng)建采用AXI4 流接口的一個優(yōu)化設計在這種設計最佳性能實現(xiàn)中,每個通道的數(shù)據(jù)將進行并行處理,每個通道以專用硬件實現(xiàn)。理解的關(guān)鍵是如何最好地執(zhí)行這種優(yōu)化,是要認識到在輸入和輸出數(shù)組中的通道讓他們自己成為循環(huán)分區(qū)。循環(huán)分區(qū)是Vivado HLS用戶指南中有全面的解釋(UG902,但基本上意味著每個數(shù)組元素,又存儲在不同分區(qū)中。)在本練習中,您指定的數(shù)組參數(shù),以實現(xiàn)為AXI4流接口。如果該數(shù)組被劃分成多個通道,你可以通過在并行設計中為每個端口元素實現(xiàn)相同的流接口。最后,如果在I / O端口被配置為提供和利用通道數(shù)據(jù)時,for循環(huán)的局部展開可以為每個通道確保專用硬件處理。首先,分區(qū)陣列:1:
35、保證C源代碼在信息窗口中打開2:在指令標簽中,選擇d_o并右擊打開指令編輯對話框。a. 選擇上部Directives中的下拉菜單,并選擇ARRAY_PARTITIONb. 點擊Type的下拉菜單,并指定為cyclic分區(qū)c. 在Factor對話框中,輸入8,創(chuàng)建8個分區(qū)(這個結(jié)果在8個端口中)d. 在指令編輯對話框中填充如圖85,點擊OK3:在指令標簽中,選擇d_o并右擊打開Directives Editor對話框a. 激活上部Directives下拉菜單,選擇INTERFACEb. 點擊Mode下拉菜單,指定axis接口c. 點擊OK4:在指令標簽中,選擇d_i并重復上述步驟2和步驟3。a.
36、 應用cyclic分區(qū)并且Factor為8b. 應用axis接口5:下一步,對for循環(huán)進行局部展開和流水線操作。a. 在指令標簽中,選擇For_Loop并且右擊打開Directives Editor對話框b. 激活上部的Directives下拉菜單,選擇UNROLLI 選擇因素8(factor 8)部分展開for循環(huán),這等同于重寫C代碼以每一次循環(huán)迭代中執(zhí)行8個循環(huán)體的復制(其中,新的循環(huán)僅在總執(zhí)行用于四次迭代,而不是32)。II 點擊OKc. 在指令標簽中,選擇For_loop并右擊打開Directives Editor對話框。I 激活上部的Directives下拉菜單,并選擇PIPELINEII 保持間隔空白,讓他默認為1III 選擇enable loop rewinding(使能重復循環(huán))IV 點擊OK當設計頂層是循環(huán),你可以用選擇流水線重復,這個通知vivado HLS 在RTL實現(xiàn)中,這個循環(huán)連續(xù)運行(與功能和功能重新啟動周期沒有結(jié)束
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫州肯恩大學《媒體寫作與運營》2023-2024學年第一學期期末試卷
- 2024零售商資金墊付協(xié)議樣本版B版
- 二零二五年度抖音與體育賽事合作合同6篇
- 二零二五版德漢翻譯及多語言本地化服務協(xié)議3篇
- 2024版樁基工程分包商合同2篇
- 2024版私營企業(yè)工廠勞務外包協(xié)議樣本一
- 銅陵職業(yè)技術(shù)學院《軟件測試與質(zhì)量保證》2023-2024學年第一學期期末試卷
- 天津美術(shù)學院《公益廣告策劃與創(chuàng)作》2023-2024學年第一學期期末試卷
- 二零二五年綠色能源項目合作開發(fā)合同范本3篇
- 四川希望汽車職業(yè)學院《化學工程基礎(chǔ)2》2023-2024學年第一學期期末試卷
- GB/T 24474.1-2020乘運質(zhì)量測量第1部分:電梯
- GB/T 12684-2006工業(yè)硼化物分析方法
- 定崗定編定員實施方案(一)
- 高血壓患者用藥的注意事項講義課件
- 特種作業(yè)安全監(jiān)護人員培訓課件
- (完整)第15章-合成生物學ppt
- 太平洋戰(zhàn)爭課件
- 封條模板A4打印版
- T∕CGCC 7-2017 焙烤食品用糖漿
- 貨代操作流程及規(guī)范
- 常暗之廂(7規(guī)則-簡體修正)
評論
0/150
提交評論