我想把C++ (OpenCV)写的车道检测代码转换成FPGA。Vivado HLS或Vivado SDSoC可以帮助将C ++代码嵌入到FPGA中。或者我可以用verilog重写车道检测代码。问题是,这三种方法的优缺点是什么?我想用一种便宜的Zynq-7000 FPGA。
发布于 2018-05-11 12:17:33
维里罗格现在被认为是低级别的。将其与程序集进行软件实现比较。人们使用它只是为了获得软件领域的高级语言(如C或Java )无法达到的性能。
在硬件领域,C(用于Vivado HLS)或OpenCL被认为是高级语言.OpenCL的开发考虑到了GPU和CPU等其他体系结构的可移植性。然而,它在与FPGA通信方面的开销要比Vivado HLS大得多。
Vivado HLS本身只生产VHDL或Verilog的硬件模块,您仍然需要连接到FPGA引脚、ARM处理器等。它不负责与模块的通信。您仍然需要在Vivado块设计或顶级VHDL或Verilog实现中集成模块。
顺便说一句,SDSoC不是"Vivado SDSoC“,它还允许您用C编写整个实现(硬件和软件)。在此框架下,它将调用Vivado HLS来实现硬件模块。之后,该工具将负责实现您的硬件和运行软件的车载ARM处理器之间的接口。
总之,我建议使用SDSoC,除非您有充分的理由不使用它。不过,我要警告的是,分析Vivado HLS的合成结果比分析Verilog或VHDL的Vivado输出要困难得多。因此,我总是建议确保您的代码首先作为软件实现工作。只要付出最少的努力,您也应该能够在gcc或其他编译器中编译任何代码。不要使用综合结果来调试代码,而只是分析性能。
发布于 2017-09-07 02:32:56
SDSoc更好更容易,它就像一个黑匣子,甚至UG902也有这么多的页面。
只有我自己的意见。
发布于 2018-02-17 20:26:49
看看Xilinx XAPP1167和Xilinx HLS视频库Wiki。
该应用程序有几年的历史(比SDSoC工具更老),但是有一个参考设计,用于使用HLS加速Zynq中的OpenCV应用程序。
我不能和SDSoC说话,但我强烈建议从HLS开始,而不是在Verilog中重写。听起来您完全有一个用于HLS的预期用例:在FPGA中实现现有的C++应用程序。它的缺点是(1)您可能需要稍微修改代码,因为HLS不支持所有C++特性,(2)性能可能不如纯Verilog实现那么好。
即使您有硬件设计经验,手动将C++转换到Verilog也需要一些很大的努力。除非HLS或SDSoC没有提供所需的性能,否则我将避免这种方法。
https://stackoverflow.com/questions/45821532
复制相似问题