概述
高層次綜合設(shè)計最常見的的使用就是為CPU創(chuàng)建一個加速器,將在CPU中執(zhí)行的代碼移動到FPGA可編程邏輯去提高性能。本文展示了如何在Zynq AP SoC設(shè)計中使用HLS IP。
在Zynq器件應(yīng)用Vivado HLS IP
這里集成了HLS IP和由HLS創(chuàng)建的軟件驅(qū)動,目的是控制在Zynq器件上實現(xiàn)的IP設(shè)計。
Step 1: 創(chuàng)建Vivado HLS IP Block
?
腳本完成時,會生成vhls_prj文件,里面包含HLS IP,下面介紹Vivado HLS IP blocks如何被集成到使用IP Integrator的Zynq器件中。
Step 2: 創(chuàng)建 Vivado Zynq Project
1.打開vivado 2016.3,點擊Create New Project,選擇Using_IP_with_Zynqlab1路徑,下一步在Project Type頁面選擇RTL Project和Do not specify sources at this time
?
然后在Boards下選擇ZYNQ-7 ZC702 Evaluation Board,最后點擊Finish。
Step 3:將HLS IP 添加到 IP Catalog
在Flow Navigator窗口點擊IP Catalog,然后點擊IP Settings,在IP部分里Add Repository,選擇Using_IP_with_Zynqlab1hls_maccvhls_prjsolution1implip,這樣就把HLS_macc這個HLS IP添加進IP目錄中。
Step 4: 創(chuàng)建一個IP Integrator Block系統(tǒng)的設(shè)計
1.在Flow Navigator窗口點擊Create Block Design,將design name改為Zynq_Design,然后添加ZYNQ7 Processing System這個IP,然后雙擊ZYNQ IP打開Re-customize IP窗口,在Presets選擇ZC702,在Page Navigator窗口點擊MIO Configuration,展開Application Processor Unit,去掉Timer 0,最后在Page Navigator窗口點擊Interrupts,勾選并展開Fabric Interrupts,選擇IRQ_F2P[15:0]
?
2.點擊標(biāo)題上的Run Block Automation,選擇processing_system7_0,去掉Apply Board Presets,然后將hls_macc IP添加進設(shè)計,然后點擊Run Connection Automation,選擇/hls_macc_0/S_AXI_HLS_MACC_PERIPH_BUS,這樣HLS IP就自動連接到 Zynq器件上的M_AXI_GP0 接口,然后連接hls_macc_0的interrupt端口和PS7的IRQ_F2P[0:0]端口。
?
3.選擇Address Editor,確定hls_macc_0外部已經(jīng)分配到主地址范圍,如果沒有,就點擊Auto Assign Address
?
最后是Validate Design,成功通過后,save the Block Design。
Step 5: 實現(xiàn)系統(tǒng)
在進一步系統(tǒng)設(shè)計之前,必須生成一個source 和HDL wrapper來作為綜合和實現(xiàn)頂層函數(shù)。
1.Flow Navigator窗口里選擇Project Manager,在Zynq_Design右擊選擇Generate Output Products,然后選擇Generate去開始生成必要的source文件
?
2.在Zynq_Design右擊選擇Create HDL Wrapper,這里Design Sources的頂層變成Zynq_Design_wrapper.v文件,現(xiàn)在設(shè)計準(zhǔn)備去綜合和實現(xiàn),并且生成FPGA programming bitstream。
3.點擊Generate Bitstream,當(dāng)bitstream完成后,在彈出的對話框里選擇Open Implemented Design,并點擊OK。
Step 6:軟件開發(fā)和在Zynq系統(tǒng)運行
現(xiàn)在我們準(zhǔn)備將設(shè)計導(dǎo)入到Xilinx SDK,在SDK中,你將創(chuàng)建運行在zc702板上的軟件(如果有)。HLS block的驅(qū)動產(chǎn)生在HLS導(dǎo)出到Vivado IP封裝期間。該驅(qū)動程序必須在SDK里可以使用,以便于PS7軟件可以與block進行交流。
1.在Vivado File菜單里選擇Export > Export Hardware,并勾選Include Bitstream,然后在Vivado File菜單里選擇Launch SDK。
2.在SDK File目錄里選擇New > Application Project,在project name里輸入Zynq_Design_Test,點擊next,選擇Hello World,點擊finish。在這里給zc702板通電并且測試HelloWorld應(yīng)用,確保板子所有連接正確,在FPGA器件上去下載位流文件,并且可以看到zc702開發(fā)板上的文檔。
?
3.選擇Xilinx Tools > Program FPGA,此時注意到Done LED亮了,然后底部窗口點擊SDK Terminal,選擇Connection to Serial port,Port選擇COM1,Baud Rate選擇115200,點擊OK
4.右擊Zynq_Design_Test選擇Run As > Launch on Hardware,最后在Terminal窗口驗證Hello World是否被接受。
?
總結(jié)
本文介紹了如何使用Tcl腳本創(chuàng)建Vivado HLS IP,并且將HLS IP設(shè)計IP導(dǎo)入IP Integrator,以及如何將HLS IP 連接到使用AXI4-Lite接口和AXI4-Stream接口的Zynq AP SoC。
評論
查看更多