博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xilinx vivado HLS 小记
阅读量:4145 次
发布时间:2019-05-25

本文共 1108 字,大约阅读时间需要 3 分钟。

目前FPGA主要用于接口、通信等,HLS的出现使得opencv中的C代码通过综合直接部署到硬件。

HLS主要应用场景在与算法更密切的应用如DSP图像处理。
RTL:寄存器传输级 register transfer level

verilog中分级是:系统级,算法级,RTL级,门级,开关级(分为行为级、结构级)

verilog建模方式分为:行为级和结构级。
xilinx的高层次综合(High level Synthesis, HLS)HLS技术是将C/C++/System C 软件语言转换成verilog和VHDL硬件描述语言的技术。

HLS主要有以下功能:

1)从C语言到RTL级实现,关键在于综合约束
2)从C语言提取出控制和数据流
3)从默认和用户定义命令实现设计

高级综合工具的核心是调度(schedule)、绑定(binding)或分配(clllocation)。

设计中C代码关键属性:
1)函数:所有代码由函数组成,函数用于表示设计的层次,这对于硬件也是一样的。
2)参数:顶层函数的参数决定了硬件RTL的端口
3)数组:默认地数组用RAM实现(或FIFO)

目前HLS只存在vivado中,ISE无HLS;

HLS 能够快速生成可实现硬件算法加速器所需要的HDL代码,而且提供完整的AXI接口,能直接插入zynq SOC的PL。
下面说明opencv和hls中使用的opencv函数的区别和联系
opencv中图像类型有:IPImage CvMat Mat类型等,对应的vivoda的HLS中图像hls::mat类型。
opencv中常用与图像操作有关的数据容器有Mat,cvMat 和IpImage,均可代表和显示图像,但Mat类型侧重与计算,数学性较高,而CvMat和IpImage更侧重于图像,opencv对图像操作(缩放、单通道)进行优化。
opencv和hls:opencv的区别是:
1、opencv基于数据帧,很难用于高分辨率和高帧率;HLS基于数据流优化来实现;
2、HLS用定点运算而非浮点运算
3、片上行缓存,窗口缓存
开发中使用vivoda HLS实现Opencv的设计流程:
1)在计算机上开发opencv应用;
2)使用I/O函数抽取FPGA实现部分,用HLS库代替opencv函数;
3)运行HLS生成代码,在Xilinx的ISE或vivado做RTL集成和FPGA实现。

HLS实现opencv局限性:

1)必须用HLS视频库函数代替opencv调用
2)不支持opencv访问帧缓存
3)不支持opencv的随机访问
4)不支持opencv 的Ip-place更新

转载地址:http://hkcti.baihongyu.com/

你可能感兴趣的文章
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>
如何防止sql注入
查看>>
springmvc传值
查看>>
在Eclipse中查看Android源码
查看>>
Android使用webservice客户端实例
查看>>
[转]C语言printf
查看>>
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第十一章 - 直接内存
查看>>