本實(shí)驗(yàn)練習(xí)使用的設(shè)計(jì)是實(shí)驗(yàn)1并對(duì)它進(jìn)行優(yōu)化。
步驟1:創(chuàng)建新項(xià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.變更到lab3路徑:cdc:\Vivado_HLS_Tutorial\Introduction\lab3.
3.在命令提示符窗口中,鍵入:vivado_hls -f run_hls.tcl建立工程
4.在命令提示符窗口中,鍵入:vivado_hls -p fir_prj在vivado用戶界面打開工程,Vivado HLS打開,如下圖所示。方案1的綜合已經(jīng)完成
如前面所述,本設(shè)計(jì)的目標(biāo)是:
?為這個(gè)設(shè)計(jì)創(chuàng)建一個(gè)的最高吞吐量的版本
?最終的設(shè)計(jì)應(yīng)該能夠處理一個(gè)伴隨輸入有效信號(hào)的輸入數(shù)據(jù)。
?伴隨著一個(gè)輸出有效信號(hào)的輸出數(shù)據(jù)。
?為了FIR設(shè)計(jì),此濾波器系數(shù)存儲(chǔ)在外部的一個(gè)單端口的ram中。
步驟2:優(yōu)化I/O接口
因?yàn)樵O(shè)計(jì)規(guī)范中包含了I/O協(xié)議,所以首先你對(duì)創(chuàng)建正確的I/O協(xié)議和端口執(zhí)行優(yōu)化。I/O協(xié)議類型的選擇可能會(huì)影響設(shè)計(jì)優(yōu)化的可能性。如果有I / O協(xié)議的規(guī)定,應(yīng)在設(shè)計(jì)周期的早期設(shè)置I/O協(xié)議。
在lab1中,查看一下設(shè)計(jì)中的I/O協(xié)議,您可以通過(guò)導(dǎo)航找到在solution1\syn文件夾下的報(bào)告文件夾中綜合報(bào)告,可以重看一遍綜合報(bào)告,會(huì)發(fā)現(xiàn)I/O要求是:
?端口C必須有一個(gè)單端口的RAM訪問(wèn)
?端口X必須有一個(gè)指示輸入數(shù)據(jù)是有效的信號(hào)
?端口Y必須有一個(gè)指示輸出數(shù)據(jù)是有效的信號(hào)
(重看了綜合報(bào)告,看見了Interface里面x,y,c等RTL 端口,但是這樣的具體要求不知道在什么地方體現(xiàn)出來(lái),就是I/O協(xié)議方面的要求,應(yīng)該是下面紅色的圈起來(lái)的)
端口C已經(jīng)是一個(gè)單端口RAM的訪問(wèn)。但是,如果你沒(méi)有明確指定的RAM訪問(wèn)類型,高層次綜合可能會(huì)使用雙端口接口的RAM。HLS如果為了創(chuàng)建一個(gè)具有更高的吞吐量設(shè)計(jì)可以這樣做。如果要求是單端口的,你應(yīng)該明確地添加要求到設(shè)計(jì)的I / O協(xié)議中,要求使用單端口RAM。
輸入端口x在默認(rèn)情況下是一個(gè)簡(jiǎn)單的32位數(shù)據(jù)口。您可以通過(guò)指定的I / O協(xié)議ap_vld實(shí)現(xiàn)它與相關(guān)的數(shù)據(jù)有效信號(hào)的輸入數(shù)據(jù)端口。
輸出Y口已經(jīng)有一個(gè)相關(guān)聯(lián)的輸出有效信號(hào)。這是默認(rèn)的指針參數(shù)。你沒(méi)有對(duì)這個(gè)端口指定明確的端口協(xié)議,因此就按照默認(rèn)要求去實(shí)現(xiàn),但如果要求了,那就按照要求去實(shí)現(xiàn)。
為了保存已經(jīng)存在的結(jié)果,創(chuàng)建一個(gè)新的解決方案,命名為solution2
1. 點(diǎn)擊New Solution工具欄按鈕,創(chuàng)建一個(gè)新的解決方案
2. 保存默認(rèn)的solution2名字,不要更改任何技術(shù)或時(shí)鐘設(shè)定
3. 點(diǎn)擊完成
創(chuàng)建solution2,并將其設(shè)置為默認(rèn)的解決方案 - 確認(rèn)solution2是在資源管理器窗格中突出顯示,表示它是當(dāng)前的解決方案。
要添加優(yōu)化指令來(lái)定義所需的I / O接口的解決方案,請(qǐng)執(zhí)行以下步驟。
4. 在資源管理器窗口中,打開Source包含項(xiàng)(見圖22)
5. 雙擊fir.c ,在信息窗口中打開文件
6. 激活輔助窗格中的指令選項(xiàng)卡(Directives tab),選擇頂層函數(shù)中fir跳轉(zhuǎn)到源代碼視圖中fir函數(shù)的頂部(圖22)。
指令選項(xiàng)卡在圖22右邊展示,列出了在設(shè)計(jì)中的所有可以被優(yōu)化的對(duì)象。在指令選項(xiàng)卡中,你可以為設(shè)計(jì)添加優(yōu)化指令。只有當(dāng)源代碼是在信息窗格中打開時(shí)您才可以查看指令選項(xiàng)卡。
7. 在指令選項(xiàng)卡中,選擇C的參數(shù)/端口(綠點(diǎn))。
8. 右擊并選擇插入指令(Insert Directives)
9. 實(shí)現(xiàn)單端口ram接口須按以下操作
a. 從該指令的下拉菜單中選擇源(RESOURCE)(為什么要選擇RESOURCE,這個(gè)下拉框中其他選項(xiàng)有什么意義,在什么情況下用,有待研究)
b. 點(diǎn)擊core框
c. 選擇RAM_1P_BRAM, 如圖23所示(這個(gè)下拉菜單中也有很多選項(xiàng),每個(gè)選項(xiàng)在什么情況下用有待研究,不知道從什么地方可以找到相關(guān)資料)
上述步驟指定數(shù)組c是使用單端口塊RAM資源來(lái)實(shí)現(xiàn)。由于數(shù)組c是函數(shù)的參數(shù)列表,因此是函數(shù)之外。自動(dòng)創(chuàng)建一組數(shù)據(jù)端口來(lái)訪問(wèn)單端口RAM塊的RTL實(shí)現(xiàn)之外。
由于I / O協(xié)議是不可能改變的,你可以將這些指令優(yōu)化添加到源代碼里,作為編譯指示,以確保正確的I/ O協(xié)議嵌入到設(shè)計(jì)中。
10. 在指令編輯器(Directive Editor)中的Destination中選擇源文件(source file)。
11. 要應(yīng)用指令,單擊OK。
提示:如果你想改變?nèi)魏沃噶畹哪康?,就在指令選項(xiàng)卡中的指令雙擊并修改目標(biāo)。
12. 接下來(lái),指定端口X要有相關(guān)的有效信號(hào)/端口
a. 在指令選項(xiàng)卡中,選擇輸入端口x(綠色點(diǎn))
b. 右擊,并選擇Insert Directives
c. 從指令編譯下拉菜單中選擇接口(Interface )
d. 從對(duì)話框的Destination中選擇Source File
e. 在mode中選擇ap_vld模式
f. 單擊OK應(yīng)用指令
13. 最后,明確指定端口Y,有一個(gè)相關(guān)聯(lián)的有效信號(hào)/端口。
a. 在指令(Directive)選項(xiàng)卡中,選擇輸入端口y(綠色點(diǎn))
b. 右擊,并選擇Insert Directives
c. 從指令編譯下拉菜單中選擇接口(Interface )
d. 從對(duì)話框的Destination中選擇Source File
e. 選擇ap_vld的模式
f. 單擊確定應(yīng)用指令
評(píng)論