Zynq UltraScale+ MPSoC智能视频平台5:HLS实现Bayer转RGB

  HLS是Xilinx的高级开发工具,高级的地方不止体现在可以使用C语言写Verilog,而且还有点曲高和寡的意思,复杂的语法逻辑让初学者摸不着头脑,学习曲线非常的陡,水也非常的深。一方面惊叹于当时开发这套工具的人有多NB,另一方面又替这门技术担忧,简单易用的编程逻辑永远是编程语言传播的第一要义,如果HLS做到可以和Python语言那样,我也不会想着写一些HLS的博客,做一些HLS的教程。话说回来,难归难,这个工具用起来是真心好用。如果能够忍受HLS工具学习过程中的不确定性、所见非所得和莫名其妙的错误,那么它是你做FPGA逻辑的神器!尤其在现在各行各业都这么卷的环境下,卷什么都是卷,还不如卷一个准入门槛比较高的工具,绝对不会辜负你的时间。

  Xilinx的很多IP核尤其是图像领域,大量的使用HLS工具实现。图像是矩阵数据,非常适合HLS工具中的并行处理。HLS丰富的接口尤其是对AXI4协议的支持,可以轻松实现数据流、配置寄存器和读写DDR等操作。上节讲到的Sensor Demosaic就是使用HLS实现的,在完成底层FPGA逻辑的实现后,相应的驱动会集成在向Vitis提供的xsa驱动文件中,用户只用执行简单的几句调用语句就可以配置FPGA。只是Sensor Demosaic没有调试成功,出来的图像颜色不对,所以决定自己写一个。这个就是HLS工具带来的生产力,你如果觉得某个IP核不好或者不会用,那么可以立即自己做一个出来,在其他的一些图像算法上也一样,HLS的快速实现给了我们足够多的底气。

  ug902是HLS工具的官方文档,也是一开始学习HLS必看的手册,类似于教科书。教科书的特点是讲的特别全面,所有用到和涉及到的知识都会讲,缺点是光看这个手册有点云里雾里,发散性太强,没有重点,也没有足够多的实例Demo,而且其中的好多指令以及代码标准在实际中并不会用到,相信大家在学习其他编程语言看教科书的过程中也有相似的体会。如果单从设计一个图像处理IP核的角度出发,那就变得简单多了,不用操心根本用不到的优化指令,只用在三个方面把握好了,基本就没有问题:接口、II=1和仿真。

  接口

  如果大家有关注过Xilinx自己使用HLS实现的一些图像IP的话应该对于AXI4的接口不陌生,包括Axi Lite、Axi Full和Axi Stream,前边在讲标准接口时也提到这些AXI4的接口在Vivado中用的非常多,能做到即插即用,非常的好使。Verilog中可以按照例程手写出这些接口,那么在HLS中是怎么实现的呢?答案是interface的pragma命令。

void AxiStream_Bayer2RGB(stream<type_streamin> &DataIn, stream<type_streamout> &DataOut,
								unsigned short InputWidth, unsigned short InputHeight)
{
#pragma HLS INTERFACE axis register both port=DataIn
#pragma HLS INTERFACE axis register both port=DataOut
#pragma HLS INTERFACE s_axilite port=InputWidth
#pragma HLS INTERFACE s_axilite port=InputHeight
#pragma HLS INTERFACE s_axilite port=return

......
}

  上述命令的结果是DataIn和DataOut使用Axi Stream接口,InputWidth和InputHeight这两个参数使用Axi Lite接口,最后一句pragma代表这个IP核的启动、停止以及查询和使能IP核中断等操作使用Axi Lite接口控制,不受FPGA的信号控制,FPGA中也看不到这

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书是使用Zynq MPSoC开发人员的实用指南,同样也是希望熟悉器件及其相关设计方法的技术人员的有效参考。 Zynq MPSoC(多处理器片上系统)是Xilinx公司推出的第二代SoC系列产品,集成了复杂的处理系统,包括ARM Cortex-A53应用程序处理器和ARM Cortex-R5实时处理器,以及FPGA可编程逻辑。 来自苏格兰斯特拉斯克莱德大学(University of Strathclyde)的Louise Crockett团队基于这一平台的软件和硬件结构,撰写了Exploring Zynq MPSoC: With PYNQ and Machine Learning Applications,综合且全面地介绍了软件堆栈、多处理器处理系统以及可编程硬件阵列等问题。 程序员可以学会如何使用简单的软件界面和框架来快速实现他们的机器学习算法,系统设计师可以利用它来获取系统的最高性能。 内容导读 器件的架构 与Zynq7000相比,Zynq MPSoC 进一步整合了处理器系统中可选择的处理器数量和性能,最多可配备四个ARM Cortex-A53处理器内核和两个ARM Cortex-R5实时处理器内核。此外,该架构进一步拓展了可编程逻辑门阵列中的DSP切片和分布式存储器的规模。在开发当今新兴的AI应用程序时,全新的MPSoC架构将实现繁琐的算术计算和数据移动的过程变得十分轻松有趣。 设计工具和方法 SoC系统将包括硬件设计和软件设计两个方面。硬件设计会映射到SoC设备上的FPGA逻辑资源,而软件则运行在一个或多个系统内部署的处理器上。在此设计流程中,硬件和软件开发可以在很大程度上独立进行,然后整合。工程师使用他们选择的工具生成硬件系统的元素,并使用Xilinx Vivado开发环境实现系统集成和实现目标设备。软件开发人员可以使用Xilinx软件开发工具包(SDK)进行开发。这是传统的软硬件协同设计方法。 Xilinx的SDx开发环境则是一种更高级的开发方式。在Xilinx SDx工具中可以完全使用软件代码对整个系统进行描述,然后对各种计算进行资源分配(在用户指导下)。这使得面向软件的软硬件协同设计已经发生了相当大的变。本书的第4章中更详细地讨论了关于SDx设计方法。 更先进的应用实现 本书还讨论了Zynq上许多应用程序的实现,包括FINN-R开源框架的有效性神经网络的实现、基于Python的Zynq设备框架和机器学习应用程序。我们可以预见到一些基于Zynq的更为优秀的产品,包括高级驾驶员辅助系统(ADAS),计算机视觉,“大数据”分析等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值