關於ZYNQ HLS圖像處理加速總結的分享

2021-01-09 電子發燒友

HLS工具

以個人的理解,xilinx將HLS(高層次綜合)定位於更方便的將複雜算法轉化為硬體語言,通過添加某些配置條件HLS工具可以把可並行化的C/C++的代碼轉化為vhdl或verilog,相比於純人工使用vhdl實現圖像算法,該工具綜合出的代碼的硬體資源佔用可能較多,但並沒有相差太大(見論文:基於HLS的 SURF特徵提取硬體加速單元設計與實現),而純人工用硬體描述語言實現一個複雜的圖像處理算法要求十分深厚的FPGA功底,下面簡單總結下好早之前做的一個在zybo開發板上的HLS圖像處理通路。

硬體工程概述
demo工程是在xilinx公司實習的同學給的,現在在github上也有zynq_example?
工程裡已經有了xdma的通路和一個hls矩陣運算的例子,但hls矩陣運算例子裡沒用axi-stream總線。圖像數據要通過axi-stream總線在各IP之間進行傳輸,而且這裡需要vdma進行數據搬運,相對於xdma的配置更為複雜。然後在參考了」zynq base TRD」各個版本的例子的基礎上修改了Block Design。vdma IP的配置和軟體驅動參考的這個xilinx-video-capture(可能要翻牆)。經過數次漫長的綜合最後完成了整個硬體的搭建和軟體測試。。。

FPGA部分

HLS IP生成
之前寫過的一篇HLS代碼分析的代碼用來生成IP核,設置器件xc7z010clg400-1,頻率設置為150M
下面是 C testbench部分函數 top function為」image_filter」
void hls_sobel(IplImage *_src, IplImage *_dst)
{
Mat src(_src);
Mat dst(_dst);
AXI_STREAM src_axi, dst_axi;
cvMat2AXIvideo(src, src_axi);
image_filter(src_axi, dst_axi, src.rows, src.cols,
1, 0, -1, 2, 0, -2, 1, 0, -1,
1, 2, 1, 0, 0, 0, -1, -2, -1,
HLS_SOBEL_HIGH_THRESH_VAL,
HLS_SOBEL_LOW_THRESH_VAL,
HLS_SOBEL_INVERT_VAL);
AXIvideo2cvMat(dst_axi, dst);
}

參見xapp1167的例子
int main (int argc, char** argv)
{
Mat src_rgb = imread(INPUT_IMAGE);
Mat src_yuv(src_rgb.rows, src_rgb.cols, CV_8UC2);
Mat dst_yuv(src_rgb.rows, src_rgb.cols, CV_8UC2);
Mat dst_rgb(src_rgb.rows, src_rgb.cols, CV_8UC3);

cvtcolor_rgb2yuv422(src_rgb, src_yuv);

IplImage src = src_yuv;
IplImage dst = dst_yuv;

hls_sobel(&src, &dst);

cvtColor(dst_yuv, dst_rgb, CV_YUV2BGR_YUYV);
imwrite(OUTPUT_IMAGE, dst_rgb);

opencv_sobel_init();
opencv_sobel(&src, &dst);
cvtColor(dst_yuv, dst_rgb, CV_YUV2BGR_YUYV);
imwrite(OUTPUT_IMAGE_GOLDEN, dst_rgb);

return image_compare(OUTPUT_IMAGE, OUTPUT_IMAGE_GOLDEN);
}

仿真沒問題,綜合後看Timing報告是滿足要求的,然後把IP導到vivado工程中

Block Design

整個工程

僅供參考,裡面有好多其他的外設。借鑑官方TRD工程,TRD硬體是zc702板子的+FMC。這個工程裡連linux上的Qt demo也給出了(如其名」Targeted Reference Design」),不過後來的版本ps跑的是petalinux。
PS低速接口GP0用來接各個外設,M_AXI接口從PS出來後接一個S-M轉化(這裡主要是把AXI3總線轉為AXI-Lite總線)接到AXI interconnect上,然後通過AXI-Lite總線接外設。
PS高速接口HP0接DDR和圖像通路的VDMA,也可以把VDMA接到ACP接口上。

圖像通路

時鐘
圖像通路的時鐘為150M,其他外設給的100M。這裡要注意HLS生成的IP核控制、VDMA的控制走的還是100M的axi-lite總線在設置reset信號的時候不要接錯。不同頻率的復位信號要單獨由一個reset核產生

vdma配置

數據位寬與hls設計相對應,具體的配置說明參考pg020文檔。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 使用教程分享連載:在Zynq AP SoC設計中高效使用HLS IP(二)
    使用教程分享連載:在Zynq AP SoC設計中高效使用HLS IP(二) 佚名 發表於 2017-02-07 18:13:35 概述 對於硬體加速模塊來說,這些硬體加速模塊會消耗源於
  • Xilinx Zynq使用HLS實現OpenCV的開發流程
    摘要:首先介紹OpenCV中圖像類型和函數處理方法,之後通過設計實例描述在VivadoHLS中調用OpenCV庫函數實現圖像處理的幾個基本步驟,闡述從OpenCV設計到RTL轉換綜合的開發流程。Xilinx VivadoHLS高層次綜合工具能夠使用C/C++ 編寫的代碼直接創建RTL硬體,顯著提高設計生產力,同時,Xilinx Zynq全可編程SOC系列器件嵌入雙核ARM Cortex-A9處理器將軟體可編程能力與FPGA的硬體可編程能力實現完美結合,以低功耗和低成本等系統優勢實現單晶片無以倫比的系統性能、靈活性、可擴展性,加速圖形處理產品設計上市時間。
  • Xilinx FPGA/Zynq設計中使用HLS實現OpenCV的開發流程
    Xilinx VivadoHLS高層次綜合工具能夠使用C/C++ 編寫的代碼直接創建RTL硬體,顯著提高設計生產力,同時,Xilinx Zynq全可編程SoC系列器件嵌入雙核ARM Cortex-A9處理器將軟體可編程能力與FPGA的硬體可編程能力實現完美結合,以低功耗和低成本等系統優勢實現單晶片高的系統性能、靈活性、可擴展性,加速圖形處理產品設計上市時間。
  • 基於ZYNQ的CameraLink圖像採集與邊緣檢測開發詳解
    (1) PL端接入CameraLink相機,通過Base模式採集圖像(1280*1024),然後通過VDMA緩存到PS端DDR。(2) 使用AXI4-Stream Switch IP核將圖像復分成兩路,一路用於邊緣檢測處理(Sobel算法),另一路直接回顯。
  • 基於Zynq平臺硬體加速的體感遊戲
    它集成ARM Cortex A9雙核和FPGA晶片,為兩者協同處理提供了可能。以圖像處理為例,使用FPGA+ARM協同處理比單純使用ARM處理器進行直方圖均衡化、Sobel邊緣檢測和3×3中值濾波分別提高了5.5倍、2.4倍和10.9倍[2]。可見,ARM+FPGA的處理架構在圖像處理上有很大的潛力。
  • 抖音hls是什麼意思?Helens可樂桶調酒配方與你分享
    抖音hls是什麼意思?Helens可樂桶調酒配方與你分享時間:2020-12-06 15:00   來源:手遊之家   責任編輯:沫朵 川北在線核心提示:原標題:抖音hls是什麼意思?Helens可樂桶調酒配方與你分享 抖音hls是很多人都聽到的一個詞語,很多人都不知道這個是什麼意思,其實這個就是一種特殊的酒,主要是威士忌和可樂,對於很多人來說都是非常有意思的,作為一種雞尾酒飲品是比較符合大眾的口味的,下面小編帶   原標題: 抖音hls是什麼意思?
  • 《抖音》上火的hls可樂桶是什麼
    抖音上火的hls可樂桶是什麼?最近刷《抖音》的小夥伴相信都看到了一些關於hls可樂桶的視頻,視頻除搞笑之外,還有很多小夥伴都在想這個hls可樂桶是什麼意思,那麼今天小編就給大家介紹一下抖音上火的hls可樂桶的相關含義。
  • 《抖音》hls可樂桶介紹
    《抖音》上面最近出現了一個非常奇怪的詞,這一個詞就是「hls可樂桶」,聽上去是不是非常像KFC新出的套餐呢?不過,真實的意思可遠遠不是這樣的。接下來小編就給各位玩家小夥伴詳細的講解一下《抖音》hls可樂桶介紹,一起來看看吧。
  • 手把手配置HLS流媒體伺服器
    /objs/nginx/html;}stats { network 0; disk sda sdb xvda xvdb;}vhost __defaultVhost__ { #hls antonio hls{ enabled on; hls_path .
  • 抖音hls可樂桶是什麼意思 hls可樂桶怎麼調
    在抖音上最近出現了一種叫做hls可樂桶的酒,這種酒的味道比較特別,被很多用戶關注到,那麼這種酒是怎麼調出來的呢,這裡我們來看下hls可樂桶調兌的方法介紹。
  • Zynq知識 – 關於Zynq ARM Cortex-A9 CPU超頻的問題
    那麼該如何克服軟體界面的限制,強制CPU超頻呢?
  • FPGA Xilinx Zynq 系列(一)
    可以看一下圖 1.1,這是關於板上系統和片上系統的簡單圖形化比較。動機 很明顯:如果對於一個清晰的設計輸入,設計師用較低的設計需要就能高效地創造出系統來,同時還支持穩健的測試過程,那這一定能大大加速設計的過程。
  • 機器視覺——數字圖像處理知識點總結
    數字圖像處理知識點總結第一章 導論1.圖像處理三個層次:狹義圖像處理、圖像分析和圖像理解。5. 圖像處理五個模塊:採集、顯示、存儲、通信、處理和分析。第二章 數字圖像處理的基本概念6.圖像處理的幾種具體算法:1) 局部處理:移動平均平滑、空間域銳化。2) 點處理:圖像對比度增強、圖像二值化。3) 大局處理:傅立葉變換。4) 迭代處理:細化。
  • ZYNQ Linux作業系統移植四個部分說明文檔
    其中uboot類似於bios,負責對設備進行簡單的初始化,devicetree以樹的形式對zynq相連的硬體設備進行描述,kernel是加載的作業系統內核,ramdisk是作業系統啟動之後掛載的文件系統。
  • 詳細解讀Zynq的三種啟動方式(JTAG,SD,QSPI)
    本文介紹zynq上三種方式啟動文件的生成和注意事項,包括只用片上RAM(OCM)和使用DDR3兩種情況。這裡不用FSBL來加載PL部分的.bit文件和第二階段啟動程序(裸機程序),而直接用BootROM加載裸機程序到OCM,即將裸機程序當做FSBL來運行,當然還要以下處理才可以:包含進頭文件:#include 「ps7_init.h」在裸機程序main函數開始處調用:ps7_init()從design_1_wrapper_hw_platform_1目錄複製ps7_init.c和
  • 全可編程異構多處理SoC——Zynq UltraScale+MPSoC詳細評測
    、自動駕駛及物聯網等新興應用的發展,圖像處理、AI算法加速、軟體無線電等複雜多任務設計越來越挑戰嵌入式平臺的處理能力。 Mali-400 MP2 GPU與 APU 直接綁定,還可在幀緩存中加速視頻圖形渲染,從而實現顯示器輸出。GPU 可通過獨立的並行引擎進行像素渲染,速度遠高於依靠 CPU 來處理圖形,而且與需要設計人員添加片外 GPU 引擎的解決方案相比,成本與功耗均更低。
  • 「正點原子FPGA連載」第二十章另一種方式編譯ZYNQ鏡像
    圖 31.4.1 U-Boot源碼目錄在前面給大家講過,使用&34;命令可以對U-Boot進行配置、使用&34;命令可以編譯u-boot,那麼這些方法都是使用petalinux工具時的做法,這裡教大家如何在U-Boot源碼目錄下配置、編譯而不通過petalinux-xxx命令;關於
  • 抖音hls可樂桶是什麼梗
    抖音hls可樂桶是什麼梗?抖音上最近一個hls可樂桶很火,很多網友都在學習做和研究怎麼兌和怎麼調,那麼大家知道抖音hls可樂桶是什麼梗要怎麼調嗎? 抖音hls可樂桶是什麼梗 hls可樂桶是一種可樂和威士忌的新喝發,就是簡單的威士忌混可樂,但是真的不要隨便嘗試哦。
  • GPU很有用 Musemage圖像處理軟體解析
    Musemage顛覆了以往以CPU進行圖像處理計算的傳統,充分利用GPU進行圖像處理加速,大大提高了複雜圖像處理的速度。這款軟體最大的意義在於這是全球首個實現完全採用GPU處理流程加速圖片軟體。這款軟體基於GLSL語言編寫,能夠將GPU抽象為通用處理器來加速圖像處理。
  • 從ZYNQ晶片架構談談其為何如此誘人|fpga|處理器|控制器|arm_網易...
    ZYNQ主要由兩大部分組成:    ZYNQ處理系統端PS所有的外設都連接在AMBA(Advanced Microcontroller Bus Architecture)總線,以這樣的方式提升了設計抽象層級,加上重用預先測試和驗證過的部件,開發將被加速,而成本則可以降低。就像常說的:「 為什麼要重新發明輪子呢?」。  Vivado內置了大量的IP可供使用,比如數學計算IP,信號處理IP、圖像視頻處理IP,通信互連(乙太網、DDS、調製、軟體無線電、錯誤校驗)、處理器IP(MicroBlaze等)、甚至人工智慧算法IP。