我们正在考虑一个新项目的方法。我们的目标是开发图像处理算法并在fpga上实现它们。
Matlab HDL Coder将Matlab代码转换为HDL代码,Xilinx Vitis HLS将C/c++/SystemC合成为HDL代码。
我们可以快速判断,使用Matlab进行算法开发比使用C/c++/SystemC等低级编程语言要轻松得多。
关于这些工具还有什么我们应该知道的吗?
提前谢谢你。
Vitis HLS pro
Vitis HLS可提供:
- 已经为您打包的IP,无需进一步修改
- 生成的代码可能会使用原语和结构来帮助合成器生成网列表。
- AXI接口(Stream, Lite, Full)准备集成到您的块设计中。
- 很好的RTL/C联合模拟来检测早期的bug。
所以如果您的目标是Xilinx设备我建议使用c++ HLS + Vitis。
HLS挑战
请注意,HLS很难掌握,这是因为c++的过程性本质与HDLs根本不同。这使得条件分支的生成不清晰。注意不要在代码中使用太多的分支。
尽量保持"数据流"风格,其中数据以流方式输入,输出以清晰的、流水线的、流方式产生。
还要注意整个系统的内存访问和延迟,有时瓶颈并不在您认为的地方。
备选项
最后,一个关于使用HLS的建议。FPGA中已经完成了许多库(例如这里),它们使用本机FPGA HDL,但为计算机视觉的基本块提供加速器。在您的软件中使用。你可能只是想使用它们,而不需要重新发明轮子。
我希望它有帮助!