




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué)習(xí)Vivado第4章lab1接口綜合概述接口綜合是將RTL接口添加到C設(shè)計的過程。另外還把物理接口添加到RTL設(shè)計中,接口綜合包括了相關(guān)聯(lián)的I/O協(xié)議,容許數(shù)據(jù)通過接口傳輸并自動與內(nèi)部優(yōu)化的邏輯同步。本教程由4實驗練習(xí)組成涵蓋的主要功能和接口綜合。Lab1: 查看函數(shù)的返回和塊級協(xié)議Lab2: 理解默認(rèn)端口的I/O協(xié)議,并學(xué)會怎么選擇I/O協(xié)議Lab3: 查看一下數(shù)組端口實現(xiàn),可以進(jìn)行分區(qū)。Lab4: 為設(shè)計創(chuàng)建一個優(yōu)化的實現(xiàn)并添加AXI4接口教程設(shè)計描述從xilinx網(wǎng)站下載教程的設(shè)計文件,參考信息中獲取教程設(shè)計。本教程使用教程目錄中的設(shè)計文件Vivado_HLS_Tutorial Int
2、erface_Synthesis。關(guān)于實驗使用前兩個實驗室在本教程中的示例的設(shè)計很簡單,這有助于將焦點保持在接口。最后兩個實驗練習(xí)使用多通道累加器。本教程介紹如何實現(xiàn)采用高層次綜合實現(xiàn)I/O端口和協(xié)議。在實驗4中,創(chuàng)建一個在Lab3中使用最優(yōu)實現(xiàn)的設(shè)計接口綜合 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)中,采用Start>All Programs>Xilinx Design Tools>Vivado2014.2>Vivado HLS>Vivado 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. 當(dāng)vivado HLS 完成
4、,在用戶界面里打開工程。用vivado_hlsp vivado_hlsp adders_prj命令打開,如圖56步驟2:創(chuàng)建和查看默認(rèn)的塊級I/O協(xié)議1 在源文件夾中雙擊adders.c,打開源代碼,并查看如圖57這個例子用了一個簡單的設(shè)計,把焦點集中在I/O實現(xiàn)上(在設(shè)計中沒有邏輯)這段代碼的重要點如下:編譯格式的指令被添加到源代碼中,為了防止任何I/O協(xié)議被綜合成為一些數(shù)據(jù)結(jié)構(gòu)(inA,inB,和inC),I / O端口的協(xié)議將在接下來的實驗練習(xí)中復(fù)習(xí)。這個函數(shù)返回一個值并且從這個函數(shù)中只有唯一的輸出。正如在后面的練習(xí),不是所有的函數(shù)都返回一個值。在本實驗練習(xí)中討論該函數(shù)返回創(chuàng)建的端口。2
5、 用工具欄中的按鈕執(zhí)行Run C Synthesis命令,或Solution菜單當(dāng)綜合完成,綜合報告會自動打開3 查看RTL接口,滾動到綜合報告摘要的結(jié)尾處。接口摘要和Outline選項卡如圖58有三種類型的端口可以查看設(shè)計完成花費超過一個時鐘周期,因此時鐘和復(fù)位已經(jīng)添加到設(shè)計中:ap_clk和ap_rst.這兩個信號都是一位輸入。塊級I/O協(xié)議為了控制RTL設(shè)計已經(jīng)添加端口:ap_start,ap_done,ap_idle和ap_ready。這些端口隨后會被詳細(xì)說明設(shè)計還有4個數(shù)據(jù)端口輸入端口In1,In2和In3,都是32位輸入,和指定I/O協(xié)議的ap_done(如在圖58中指定的指令)該
6、設(shè)計還具有對函數(shù)返回一個32位的輸出端口,ap_return。塊級I / O協(xié)議允許通過附加的端口、獨立數(shù)據(jù)I / O端口對RTL設(shè)計進(jìn)行控制。但此I / O協(xié)議是與函數(shù)本身相關(guān)聯(lián),不與任何數(shù)據(jù)端口相關(guān)聯(lián)。默認(rèn)的塊級I/O協(xié)議被稱為ap_ctrl_hs。圖58顯示了這個協(xié)議是與函數(shù)的返回值相關(guān)聯(lián)(即 使函數(shù)中的代碼沒有指定返回值這也可以)表1概括了用于塊級I / O協(xié)議ap_ctrl_hs的信號的行為。注:解釋一下使用術(shù)語“交易”。在高層次綜合的情況下,一個事務(wù)是相當(dāng)于一個執(zhí)行C函數(shù)(或在綜合RTL設(shè)計中的等效操作)應(yīng)用 描述 ap_start該信號控制模塊執(zhí)行,邏輯為1時設(shè)計開始運行。 它應(yīng)
7、保持邏輯1直到相應(yīng)的輸出握手ap_ready被置位。當(dāng)ap_ready變高時,決定了是否繼續(xù)保持ap_start置位并執(zhí)行其他事物或設(shè)置ap_start為邏輯0,當(dāng)前事務(wù)的結(jié)束時允許設(shè)計暫停,。 如果在ap_ready為邏輯1 之前ap_start被置為低,設(shè)計有可能沒有把所有輸入端口讀完,并可能拖延下一個輸入讀取操作。 ap_ready這個輸出信號表明設(shè)計已經(jīng)準(zhǔn)備好接受新數(shù)據(jù) 當(dāng)準(zhǔn)備好接受新的輸入時,ap_ready信號設(shè)置為邏輯1。表明所有為這次事物的輸入讀已經(jīng)完成。 如果設(shè)計不是流水線操作,直到下一次事物才開始執(zhí)行新的讀。 這個信號是用來決定何時在端口上用新的值,決定是否用一個ap_st
8、art輸入信號來啟動一個新的事務(wù)。 如果ap_start信號沒有被設(shè)置為高,當(dāng)設(shè)計在當(dāng)前事務(wù)完成中所有的操作,這個信號變?yōu)榈碗娖健?ap_done這個信號表明設(shè)計在當(dāng)前的事務(wù)中完成所有的操作。輸出邏輯1表明設(shè)計已經(jīng)完成了這個事務(wù)的所有操作。因為在事務(wù)結(jié)束時,該信號為邏輯1還表示ap_return端口上的數(shù)據(jù)是有效的。 不是所有的函數(shù)都有函數(shù)返回值,因此并非所有的RTL設(shè)計都有一個ap_return端口 ap_idle這個信號表示設(shè)計正在操作或閑置狀態(tài)(無操作)。 輸出端口上用邏輯1表明是空閑狀態(tài)。一旦設(shè)計開始運行,該信號為低電平。 該信號為高電平時,設(shè)計完成操作,未進(jìn)行任何進(jìn)一步的操作。 您可
9、以通過查看由RTL協(xié)同仿真生成的跟蹤文件,觀察這些信號的行為。這是在教程的RTL驗證所討論的,但圖59示出了用于當(dāng)前合成的結(jié)果的波形。圖59的波形圖,表現(xiàn)了塊級I/O信號的行為設(shè)計直到ap_start設(shè)置為邏輯1才開始啟動。通過設(shè)置端口ap_idle為低,表明設(shè)計不再空閑展示了五個事務(wù),首先3個輸入值(10,20,和30)被各自用在端口in1,in2和in3.輸出信號ap_ready變?yōu)楦弑砻髟O(shè)計準(zhǔn)備好在下個時鐘下接受新輸入。輸出信號ap_done表明設(shè)計結(jié)束,輸出端口ap_return的值是有效(首先輸出值 60,是三個輸入的和)因為ap_start保持高電平,下一次事務(wù)開始于下一個時鐘周期
10、。注意:在RTL的協(xié)同仿真,所有的設(shè)計和端口輸入控制信號始終處于啟用狀態(tài)。例如,在圖59的信號ap_start始終是高的。在第二個事務(wù),觀察ap_return端口,在這個端口上第一個輸出的值是70,直到ap_done信號為高電平這個結(jié)果才有效。步驟3:改變塊級I/O協(xié)議默認(rèn)的塊級I/O協(xié)議是ap_ctrl_hs協(xié)議(控制握手協(xié)議),在這一步中,您可以創(chuàng)建新的解決方案和改變這個協(xié)議。1. 從工具欄或者工程菜單選擇新解決方案(New Solution)來創(chuàng)建一個新的解決方案。2. 保持所有新解決方案對話框所有設(shè)定,這些設(shè)定都是默認(rèn)的,點擊完成3. 在信息窗口中選擇C源代碼標(biāo)簽(或如果C源代碼關(guān)閉重
11、新打開)4. 激活指令選項卡(Directives tab),選擇頂層函數(shù),如圖60所示因為塊級I/O協(xié)議與函數(shù)相關(guān)聯(lián),您必須通過選定頂層函數(shù)來指定他們。5. 在指令選項卡中,鼠標(biāo)移到頂層函數(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/
12、O協(xié)議主要是用于把流水線塊鏈接在一起。塊級I/O協(xié)議ap_ctrl_chain不包含在這個教程中。這個協(xié)議與ap_ctrl_hs協(xié)議類似,但增加了額外的輸入信 號,ap_continue,它必須為高,當(dāng)ap_done為了繼續(xù)下次事務(wù)被置位時。這允許下游模塊在系統(tǒng)上施加回壓,并進(jìn)一步停止處理,這是不能接受 新的數(shù)據(jù)。6. 在Directives Editor對話框中的DestinationEditor部分中,選擇Source File默認(rèn)情況下,指令被放置在directives.tcl文件。在這個例子中,該指令被放置在現(xiàn)有的I / O指令的源文件中。7. 從下拉菜單中選擇ap_ctrl_none
13、8. 點擊OK源文件現(xiàn)在有新的指令,在源文件代碼和指令選項卡中都是高亮的。如圖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按鈕,或者用菜單Solution>Run C Synthesis來綜合設(shè)計。在源文件中添加的指令改變的源文件。圖62所示源文件名為*adders.c。這個標(biāo)記表明文件已經(jīng)更改,但沒有保存。10
14、. 點擊YES 來接受對源文件的更改。當(dāng)報告打開時,接口概述出現(xiàn),如圖63Figure 63: Interface summary for ap_ctrl_none當(dāng)接口協(xié)議ap_ctrl_none被采用時,沒有塊級接口協(xié)議被添加到設(shè)計中。僅有諸如clock、reset和data端口。注意,也沒有ap_done信號,consumer模塊接收來自ap_return的數(shù)據(jù),當(dāng)數(shù)據(jù)有效時,ap_return端口現(xiàn)在不能表明另外,RTL協(xié)同仿真的功能需要一個塊級I/O協(xié)議,為了自動協(xié)同仿真安排測試平臺和RTL設(shè)計。任何試圖用RTL協(xié)同仿真的結(jié)果在下面的錯誤信息中,停止RTL協(xié)同仿真(理解上有誤差)E
15、SIM-345 Cosim only supports the following '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習(xí)Vivado第4章lab2接口I/O協(xié)議概述這個實驗解釋了
16、怎么指定具體的端口I/O協(xié)議。1. 在lab1中用Vivado HLS命令提示符,更改為lab2目錄,如圖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 本練習(xí)的源代碼是與lab1類似。出于同樣的原因使用簡單的代碼,它有助于聚焦在接
17、口的行為,而不是核心邏輯。這一次,代碼沒有一個函數(shù)的返回,取代函數(shù)輸出的是通過指針參數(shù)* in_out1輸出。這也提供了機(jī)會,探索雙向(輸入輸出)端口的接口選項。 I / O協(xié)議的類型,你可以通過接口綜合添加到C函數(shù)的參數(shù)取決于參數(shù)類型。這些選項在Vivado高層次綜合用戶指南(UG902)有完整描述。在本實施例中的指針參數(shù)既是輸入和輸出的功能。在RTL設(shè)計中,該參數(shù)被實現(xiàn)為單獨的輸入和輸出端口。對于圖65所示的代碼,每個函數(shù)參數(shù)可能的選項在下表中被描述函數(shù)參數(shù) I/O協(xié)議選擇 In1 和 In2按值傳遞的參數(shù)都可以用下面的I / O協(xié)議來實現(xiàn) Ap_none:沒有I/O協(xié)議,這個是默認(rèn)的輸入
18、 Ap_stable:無I/O協(xié)議 Ap_ack:實現(xiàn)與相關(guān)的輸出端口確認(rèn) Ap_val:實現(xiàn)與相關(guān)的輸入有效端口 Ap_hs:實現(xiàn)了兩個輸入有效和輸出端口確認(rèn)。 In_out1按引用傳遞的輸出可以用下面的I/O協(xié)議實現(xiàn) Ap_none:沒有I/O協(xié)議,這個是默認(rèn)的輸入 Ap_stable:無I/O協(xié)議 Ap_ack:實現(xiàn)與相關(guān)的輸出端口確認(rèn) Ap_val:實現(xiàn)與相關(guān)輸出的有效端口,這個是默認(rèn)的輸出 ap_ovld:實現(xiàn)與相關(guān)輸出有效端口,(任何INOUT端口的輸入部分沒有有效的端口) ap_hs:實現(xiàn)所有輸入有效端口和輸出響應(yīng)端口 ap_fifo:FIFO接口與相關(guān)輸出寫入,輸入FIFO滿端
19、口 ap_bus:Vivado HLS總線接口協(xié)議 在實驗1中應(yīng)用的端口指令實際上不是必需的,因為AP_NONE是使用這些C參數(shù)的默認(rèn)I/ O協(xié)議。在這個練習(xí)中給出了指令,以避免處理任何默認(rèn)或不是默認(rèn)的I / O端口協(xié)議的行為。 在本練習(xí)中,您將實現(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.
20、當(dāng)指令編輯窗口打開,使指令下來框為INTERFACEa. 保持目標(biāo)是默認(rèn)值,這次,指令被存儲在directives.tcl文件中。b. 從模式下來菜單選擇ap_valc. 點擊OK5. 選擇參數(shù) in2 ,添加一個接口指令指定I/O協(xié)議為ap_ack6. 選擇參數(shù)in_out1并添加一個接口指令I(lǐng)/0協(xié)議為ap_hs7. 在資源管理器窗口中,擴(kuò)展約束文件夾,并雙擊打開directives.tcl文件,如圖67Figure 67: Directives for Lab 28. 綜合設(shè)計9. 當(dāng)文件打開時,查看接口概述,如圖68Figure 68: Interface summary for La
21、b 2· 設(shè)計有時鐘和復(fù)位· 默認(rèn)塊級I/O協(xié)議信號是存在的· 端口 in1被以數(shù)據(jù)端口而實現(xiàn),并伴隨輸入有效信號· 數(shù)據(jù)在in1端口上,僅讀。當(dāng)端口in1_ap_vld為有效高· 端口 in2被綜合為數(shù)據(jù)端口,并與輸出響應(yīng)信號相關(guān)聯(lián)· 當(dāng)端口in2被讀時,端口 in2_ap_ack將被置高· inout_i定義為inout1參數(shù)的輸入部分,與輸入有效端口inout1_i_ap_val相關(guān)聯(lián),并且輸出響應(yīng)端口inout1_i_ap_ack· inout1參數(shù)輸出部分定義為inout_o,與輸出有效端口inout1_
22、o_ap_val相關(guān)聯(lián),并輸入響應(yīng)端口inout1_o_ap_ack.10. 退出vivado HLS GUI 并且返回命令提示口學(xué)習(xí)Vivado第4章lab3實現(xiàn)數(shù)組的RTL接口概述 這個練習(xí)說明了在函數(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ù)組和一個輸出數(shù)組。在
23、C源代碼中的注釋說明了輸入數(shù)組中的數(shù)據(jù)是如何有序作為一個通道和通道是怎么被計算的。理解設(shè)計,您還可以查看試驗平臺和文件result.golden.dat的輸入和輸出數(shù)據(jù)。Figure 69: C Code for Interface Synthesis Lab 3步驟2:綜合函數(shù)參數(shù)數(shù)組為RAM端口 在這一步中,查看數(shù)組端口是怎么綜合成RAM端口的。1綜合設(shè)計,當(dāng)報告打開時查看接口簡介。接口簡介表明了在C 源代碼中的數(shù)組參數(shù)是怎么綜合成默認(rèn)的RAM端口的。設(shè)計有時鐘,復(fù)位和默認(rèn)的塊級I/O協(xié)議ap_ctrl_hs(注意在報告中的時鐘) d_o參數(shù)已經(jīng)綜合成RAM端口(I/O協(xié)議ap_memor
24、y)數(shù)據(jù)端口(d_o_d0)地址端口(d_o_address0)芯片使能控制端口(d_o_ce0)和寫使能端口(do_we0) d_i參數(shù)已經(jīng)被綜合成類似RAM接口,但有輸入數(shù)據(jù)端口(d_i_q0)沒有寫使能端口,因為接口僅讀數(shù)據(jù)。在這兩種情況下,數(shù)據(jù)端寬度是在C源代碼中的數(shù)據(jù)值的寬度(在這種情況下的16位整數(shù)),并且地址端口的寬度已被自動調(diào)整大小匹配到的地址必須被存取的次數(shù)(5位的為32個地址)。把數(shù)組綜合成RAM端口是默認(rèn)的,您可以控制這些端口怎么用一些其他的選擇去實現(xiàn)。在實驗3中的其余步驟演示這些選項: 采用單端口RAM和雙端口RAM接口 采用FIFO接口 分割成離散的端口步驟3:采用雙
25、端口RAM和FIFO接口 高層次綜合讓你可以指定RAM接口為單端口還是雙端口。如果你不做出這樣的選擇,Vivado HLS 會自動分析設(shè)計和選擇端口的數(shù)量,以便產(chǎn)生最大的數(shù)據(jù)速率。第二步用的單端口RAM接口,因為在源代碼中的for循環(huán)是默認(rèn)的保持不展開,該循環(huán)每次迭代依次執(zhí)行: 讀輸入端口 從內(nèi)部RAM中讀累計的結(jié)果 和累計并且新數(shù)據(jù)寫入到內(nèi)部RAM中 把結(jié)果寫到輸出端口 重復(fù)循環(huán)的下一次迭代這確保單一輸入讀和輸出寫入以往需要。即使采用多個輸入和輸出時,內(nèi)部邏輯可以不采用額外端口。注意:如果你指定了雙端口RAM并且Vivado HLS 能確定必須只能用單端口,會使用單端口覆蓋雙端口規(guī)范。在這個
26、設(shè)計,如果你想用多RTL端口實現(xiàn)數(shù)組參數(shù),首先得事情你必須展開for循環(huán),并容許內(nèi)部操作是并行的,否則多端口沒有好處:沒有展開的for循環(huán)可以確保在每次讀時有一個數(shù)據(jù)被讀。1 從工具欄中選擇New Solution或者從工程菜單來創(chuàng)建新的解決方案2 設(shè)置默認(rèn),點擊Finish3 保證C源代碼在信息窗口中可見4 在指令選項卡中,選擇for循環(huán),在for循環(huán)上并右擊打開Directives Editor對話框。a. 在指令編輯對話框中激活指令下來菜單在上部并選擇展開b. 指令編輯如圖71,點擊OK下次,為輸入讀指定雙端口RAM,資源指令指示RAM連接到接口的類型。5 在指令選項卡中,選擇port
27、d_i并右擊打開指令編輯對話框a. 在指令編輯中在上部激活指令下拉菜單并選擇RESOURCE(in Dirctive)b. 點擊 core options 框并選擇RAM_2P_BRAMc. 確認(rèn)在指令編輯對話框中的設(shè)定,如圖72,點擊OK使用FIFO接口實現(xiàn)輸出端口6 在指令選項卡(Directive)中,選擇d_o,并右擊打開Directives Editor對話框a. 在指令編輯對話框中,保持指令為Interface(接口)b. 從模式下拉菜單中,選擇ap_fifo.c. 點擊OK在Directive 標(biāo)簽展示了指令已經(jīng)應(yīng)用到設(shè)計中如圖737 綜合設(shè)計當(dāng)報告在信息窗口中打開時,接口摘要如
28、圖74 設(shè)計有標(biāo)準(zhǔn)的時鐘、復(fù)位、和塊級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)端口 參數(shù)d_i 已經(jīng)實現(xiàn)為雙端口RAM接口根據(jù)使用的雙端口RAM接口,設(shè)計能接受兩倍于原始設(shè)計輸入數(shù)據(jù)的速率。但采用單端口FIFO接口的輸出數(shù)據(jù)速率和先前的一樣。步驟:分區(qū)RAM和FIFO陣列接口 在這步中,您可以學(xué)習(xí)到分區(qū)數(shù)組接口如何劃分為任意接口數(shù)量1. 從工具欄中選擇New Solution或者從工程菜單來創(chuàng)建新的解決方案2. 設(shè)置默認(rèn),點擊Finish3. 保證C源代碼在信息窗口中可見
29、4. 在指令標(biāo)簽中,選擇d_o并右擊打開Directives Editor對話框a. 在指令標(biāo)簽對話框上部激活指令下拉菜單,并選擇ARRAY_PARTITIONb. 點擊類型下拉菜單,并選擇塊,為了將分布式數(shù)組綜合成塊c. 在Factor對話框中,輸入值d. 指令編輯如圖所示,點擊現(xiàn)在,輸入數(shù)組分為兩大塊(不是個)在指令標(biāo)簽中,選擇d_i并重復(fù)前面的步驟,但這次分區(qū)端口factor用指令標(biāo)簽展示了現(xiàn)在應(yīng)用在設(shè)計中的指令綜合設(shè)計當(dāng)報告在信息窗口中打開,接口摘要如圖顯示 設(shè)計有標(biāo)準(zhǔn)的時鐘、復(fù)位、和塊級I/O端口 數(shù)組參數(shù)d_o已經(jīng)綜合成四個分離的FIFO接口 參數(shù)d_i 已經(jīng)實現(xiàn)為兩個分離RAM接
30、口,每一個都是用雙端口,(如果你看到個分離RAM接口,確認(rèn)分區(qū)因素d_i是2,而不是4)。如果輸入端口d_i被劃分為四個,僅需要為每個端口分配單端口RAM接口。因為輸出端口只能一次輸出四個值,一次讀個輸入,沒有什么好處。在本教程中對數(shù)組的最后一步是完全分割的陣列。步驟:全分區(qū)數(shù)組接口 這一步向您展示了如何分割數(shù)組接口為單獨的端口. 從工具欄中選擇New Solution或者從工程菜單來創(chuàng)建新的解決方案. 設(shè)置默認(rèn),點擊Finish。包括從solution3拷貝現(xiàn)存的指令. 保證C源代碼在信息窗口中可見. 在指令標(biāo)簽中,為d_o選擇已存在的分區(qū)指令. 右擊,并選擇Modify Directive
31、在指令編輯對話框中a激活Type下拉菜單,改變分區(qū)格式為Completeb. 在因素(Factor)對話框中,你可以刪除,或保留。這個因素對這種分區(qū)類型沒有作用。c. 指令編輯如圖,點擊在指令標(biāo)簽中,選擇d_i并重復(fù)前面的步驟,完成對d_i的全分區(qū)或者,您可以刪除d_i指定資源的指令。如果陣列被劃分為單獨的元素,指定了一個內(nèi)存資源的資源指令將被忽略。指令標(biāo)簽展示了應(yīng)用在設(shè)計中的指令綜合設(shè)計當(dāng)報告在信息窗口中打開,查看接口摘要,注意以下: 設(shè)計有標(biāo)準(zhǔn)的時鐘、復(fù)位、和塊級I/O端口 數(shù)組參數(shù)d_o已經(jīng)綜合成個分離的FIFO接口 用個分離的表口對參數(shù)d_i 的已經(jīng),因為為輸入默認(rèn)接沒有I/O協(xié)議。他
32、們有I/O協(xié)議ap_none盡管該教程的焦點在專門的I/O接口上,在這一點上是值得研究四種解決方案在性能上的差異。10. 從工具欄里選擇比較報告,或從工程菜單中打開方案的比較11在Solution Selection Dialog框中,為四種解決方案中每種添加選擇方案框如圖8112點擊OK打開解決方案的比較報告(圖82),它表明solution4,為每個陣列元素試用了唯一的端口,比以前的解決方案快得多。內(nèi)部邏輯可以盡可能快的獲得數(shù)據(jù),只要它需要訪問數(shù)據(jù)。(這里是因為端口的訪問沒有性能瓶頸。)鼠標(biāo)滑輪往下滑查看比較報告(圖83),并注意與更多的I / O端口解決方案(解決方案2,3和4),允許更
33、多的并行處理但也用相當(dāng)多的資源在接下來的練習(xí)中,用端口和資源之間的最佳平衡,您將實現(xiàn)同樣的設(shè)計。除了實現(xiàn)這個優(yōu)化,接下來的練習(xí)中展示了如何把AXI4接口添加到設(shè)計中。13退出Vivado HLS界面并返回到命令提示符。學(xué)習(xí)Vivado第4章lab4實現(xiàn)AXI4接口概述這個練習(xí)說明了在I/O端口中指定AXI4總線接口,這個練習(xí)除了增加AXI4接口外還展示了如何創(chuàng)建一個用接口和邏輯指令一起優(yōu)化的設(shè)計。步驟1:創(chuàng)建和打開工程1.在先前的lab中用Vivado HLS命令提示符,更改為lab4目錄2.鍵入vivado_hls -f run_hls.tcl來創(chuàng)建新的Vivado HLS工程3.鍵入viv
34、ado_hls -p axi_interfaces_prj 來打開vivado HLS 用戶界面工程4.打開源代碼如圖84此設(shè)計用的是和Lab3一樣的源代碼,并在設(shè)計重命名axi_interfaces步驟2:創(chuàng)建采用AXI4 流接口的一個優(yōu)化設(shè)計在這種設(shè)計最佳性能實現(xiàn)中,每個通道的數(shù)據(jù)將進(jìn)行并行處理,每個通道以專用硬件實現(xiàn)。理解的關(guān)鍵是如何最好地執(zhí)行這種優(yōu)化,是要認(rèn)識到在輸入和輸出數(shù)組中的通道讓他們自己成為循環(huán)分區(qū)。循環(huán)分區(qū)是Vivado HLS用戶指南中有全面的解釋(UG902,但基本上意味著每個數(shù)組元素,又存儲在不同分區(qū)中。)在本練習(xí)中,您指定的數(shù)組參數(shù),以實現(xiàn)為AXI4流接口。如果該數(shù)組
35、被劃分成多個通道,你可以通過在并行設(shè)計中為每個端口元素實現(xiàn)相同的流接口。最后,如果在I / O端口被配置為提供和利用通道數(shù)據(jù)時,for循環(huán)的局部展開可以為每個通道確保專用硬件處理。首先,分區(qū)陣列:1:保證C源代碼在信息窗口中打開2:在指令標(biāo)簽中,選擇d_o并右擊打開指令編輯對話框。a. 選擇上部Directives中的下拉菜單,并選擇ARRAY_PARTITIONb. 點擊Type的下拉菜單,并指定為cyclic分區(qū)c. 在Factor對話框中,輸入8,創(chuàng)建8個分區(qū)(這個結(jié)果在8個端口中)d. 在指令編輯對話框中填充如圖85,點擊OK3:在指令標(biāo)簽中,選擇d_o并右擊打開Directives
36、Editor對話框a. 激活上部Directives下拉菜單,選擇INTERFACEb. 點擊Mode下拉菜單,指定axis接口c. 點擊OK4:在指令標(biāo)簽中,選擇d_i并重復(fù)上述步驟2和步驟3。a. 應(yīng)用cyclic分區(qū)并且Factor為8b. 應(yīng)用axis接口5:下一步,對for循環(huán)進(jìn)行局部展開和流水線操作。a. 在指令標(biāo)簽中,選擇For_Loop并且右擊打開Directives Editor對話框b. 激活上部的Directives下拉菜單,選擇UNROLLI 選擇因素8(factor 8)部分展開for循環(huán),這等同于重寫C代碼以每一次循環(huán)迭代中執(zhí)行8個循環(huán)體的復(fù)制(其中,新的循環(huán)僅在總執(zhí)行用于四次迭代,而不是32)。II 點擊OKc. 在指令標(biāo)簽中,選擇For_loop并右擊打開Directives Editor對話框。I 激活上部的Directives下拉菜單,并選擇PIPELINEII 保持間隔空白,讓他默認(rèn)為1III 選擇enable loop rewinding(使能重復(fù)循環(huán))IV 點擊OK當(dāng)設(shè)計頂層是循環(huán),你可以用選擇流水線重復(fù),這個通知vivado HLS 在RTL實現(xiàn)中,這個循環(huán)連續(xù)運行(與功能和功能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024天津軌道交通集團(tuán)有限公司開展競爭性選聘軌道服務(wù)公司副總經(jīng)理崗位1人筆試參考題庫附帶答案詳解
- 電工高級工試題庫+答案
- 第二章 電磁感應(yīng) 概述 教學(xué)設(shè)計-2023-2024學(xué)年高二下學(xué)期物理人教版(2019)選擇性必修第二冊
- 2024中國建材集團(tuán)有限公司招聘6人筆試參考題庫附帶答案詳解
- 2025年貴州航天職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫審定版
- 第八篇 選擇性必修下冊 第四單元-高中語文單元教學(xué)設(shè)計
- 2025年金屬氫化物-鎳(MHNI)蓄電池合作協(xié)議書
- 2025年船用動力堆及配套產(chǎn)品項目建議書
- 2025年廣東理工職業(yè)學(xué)院單招職業(yè)技能測試題庫完整版
- 新型儲能在電力系統(tǒng)中的應(yīng)用
- 年“春節(jié)”前后安全自查系列用表完整
- 小學(xué)利潤問題應(yīng)用題100道附答案(完整版)
- 青島版三年級下冊口算題大全(全冊)
- 醫(yī)院智能化系統(tǒng)內(nèi)網(wǎng)、外網(wǎng)及設(shè)備網(wǎng)系統(tǒng)拓?fù)鋱D-可編輯課件
- 2024年南京科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- DB52-T 1780-2024 醬香型白酒安全生產(chǎn)規(guī)范
- 2024年皖西衛(wèi)生職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及參考答案
- 【信息技術(shù)】信息技術(shù)及其應(yīng)用教學(xué)課件 2023-2024學(xué)年人教-中圖版(2019)高中信息技術(shù)必修二
- (正式版)JTT 1502-2024 直升機(jī)救生員搜救作業(yè)手勢信號要求
- 2024年社區(qū)工作者考試必背1000題題庫附答案(滿分必刷)
- 線蟲病疫木及異??菟浪蓸涮幹猛稑?biāo)方案(技術(shù)方案技術(shù)標(biāo))
評論
0/150
提交評論