代码之家  ›  专栏  ›  技术社区  ›  ykpgrr

Verilog或Vivado HLS或Vivado SDSoC

  •  0
  • ykpgrr  · 技术社区  · 7 年前

    Vivado SDSoC公司 可以帮助将C++代码嵌入FPGA。或者我可以用 硬件描述语言

    5 回复  |  直到 7 年前
        1
  •  1
  •   Gyzuh    6 年前

    Verilog现在被认为是低级的。将其与软件实现的程序集进行比较。人们使用它只是为了获得在软件领域用高级语言(如C或Java)无法达到的性能。

    在硬件领域,C(用于Vivado HLS)或OpenCL被视为高级语言。OpenCL的开发考虑到了其他架构(如GPU和CPU)的可移植性。然而,与Vivado HLS相比,它在与FPGA通信方面的开销要大得多。

    SDSoC,不是“Vivado SDSoC”,顺便提一下,它还允许您用C编写整个实现(硬件和软件)。在后台,它将调用Vivado HLS来实现硬件模块。之后,该工具将负责在硬件和将运行该软件的机载ARM处理器之间实现接口。

    总之,我建议您使用SDSoC,除非您有充分的理由不使用它。然而,我要警告的是,分析Vivado HLS的合成结果要比分析Verilog或VHDL的Vivado输出困难得多。因此,我始终建议首先确保您的代码作为软件实现工作。只要付出最小的努力,您就应该能够在中编译任何代码 gcc

        2
  •  0
  •   赵复阳    7 年前

    SDSoc更好更简单,HLS就像一个黑盒子,甚至UG902也有这么多页面。

        3
  •  0
  •   zane    7 年前

    看看 Xilinx XAPP1167 HLS Video Library Wiki

    appnote有几年的历史(比SDSoC工具旧),但有一个参考设计,用于使用HLS加速Zynq中的OpenCV应用程序。

    我不能与SDSoC对话,但我强烈建议从HLS开始,而不是在Verilog中重写。听起来您对HLS有一个明确的预期用例:在FPGA中实现现有的C++应用程序。它的缺点是(1)您可能需要稍微修改代码,因为HLS不支持所有C++功能,(2)性能可能不如纯Verilog实现。

        4
  •  0
  •   My Name    6 年前

    开始使用OpenCL SDAccel或Intel SDK。OpenCL有详细且定义良好的API,这是一件好事。这很容易学习,您可以像Verilog/VHDL的多模块实例一样执行并行代码。OpenCl与HLS的优势在于不需要重新发明整个系统来管理数据、I/O和管道。等等,在OpenCL BSP(Intel)或shell(XILINX)中可以获得相当多的辅助逻辑。是的,开始阅读这些长指南。

        5
  •  0
  •   Tianhao Zhou    5 年前

    我建议使用SDAccel,因为它对C++“软件”用户友好得多。同时,请不要引用我的话,但我认为他们提供了一个现成的OpenCV实现,这意味着您可能只需要按摩非OpenCV代码即可实现所需的性能。