【HLS教程】HLS入门与精通

总纲
HLS和FPGA实现是怎么一回事
HLS已有库说明
HLS语法讲解与实例
HLS自定义模板
HLS实现OpenCV函数
前言
主要还是工作中用到,HLS毕竟还是小众模版库,就目前来看,连Verilog普及都没有,希望原厂能有的放矢,一蹴而就。学语言,是程序员的一把斧,需要熟练与精通。希望今天的付出值得。

HLS的出现提高了FPGA实现逻辑的复杂程度,但同时又带来一些不确定的结果,总的来说,提高了实现的效率。

内容
1-HLS和FPGA实现是怎么一回事
FPGA是一种集成电路IC,可以编写不同算法的介质。现代FPGA包含200万个逻辑单元,可以实现不同的算法。

使用HLS编译器,很重要的一点是知道FPGA使用资源、以及他们是如何在FPGA上执行的。

FPGA架构主要由几部分组成:LUT、FF、Wires、IO pads.

(待续)

2-HLS已有库说明
介绍
HLS视频库是通过Vivado HLS调用C/C++库加速机器视觉、图像处理在FPGA上实现。它包括通用的数据结构、OpenCV接口、AXI4-Stream接口和视频处理函数。视频库使用OpenCV库作为参考模型,大多数视频处理功能与相应的opencv函数有类似的界面和同等的功能。

简单来说,有两个头文件可以帮助我们进行HLS 视频库调用:

#include 
#include 
  • 视频库函数

1)OpenCV接口函数

OpenCV接口函数是保证重建的OpenCV可以在FPGA实现,满足一种以AXI4-Streaming流的数据处理方式。

IplImage2AXIvideo
AXIvideo2IplImage
cvMat2AXIvideo
AXIvideo2cvMat
CvMat2AXIvideo
AXIvideo2CvMat
IplImage2hlsMat
hlsMat2IplImage
cvMat2hlsMat
hlsMat2cvMat
CvMat2hlsMat
hlsMat2CvMat
CvMat2hlsWindow
hlsWindow2CvMat

2)AXI4-Stream接口函数

IO函数是将HLS::Mat格式转化为AXI4-Stream设计的。

hls::AXIvideo2Mat
hls::Mat2AXIvideo

3)视频处理函数

下面函数是根据OpenCV相同功能进行加速设计的库函数。

hls::AbsDiff
hls::AddS
hls::AddWeighted
hls::And
hls::Avg
hls::AvgSdv
hls::Cmp
hls::CmpS
hls::CornerHarris
hls::CvtColor
hls::Dilate
hls::Duplicate
hls::EqualizeHist
hls::Erode
hls::FASTX
hls::Filter2D
hls::GaussianBlur
hls::Harris
hls::HoughLines2
hls::Integral
hls::InitUndistortRectifyMap
hls::Max
hls::MaxS
hls::Mean
hls::Merge
hls::Min
hls::MinMaxLoc
hls::MinS
hls::Mul
hls::Not
hls::PaintMask
hls::Range
hls::Remap
hls::Reduce
hls::Resize
hls::Set
hls::Scale
hls::Sobel
hls::Split
hls::SubRS
hls::SubS
hls::Sum
hls::Threshold
hls::Zero

 

.............................


From: 【HLS教程】HLS入门与精通

你可能感兴趣的:(FPGA)