【问题标题】:How can I write my C program in two functions?如何用两个函数编写我的 C 程序?
【发布时间】:2018-05-04 17:23:44
【问题描述】:

我想知道如何将我的 C 代码(只有一个带有几个不同函数的单个 .c)编写成两个带有输入和输出的函数。 我正在寻找这些,因为我要两个将我的部分代码放入 CPU 并将另一个留在 FPGA 中,它们可以通过 Zynq 家族板(例如 ZC706)中的接口相互通信。

在这方面,通过 Vivado HLS,我只需要一个可以翻译为例如的函数。通过 Vivado HLS 的 VHDL 和其他功能可以留在 CPU 中。

提前致谢,如果需要可以分享我的代码。

【问题讨论】:

  • 是的,需要,请以minimal reproducible example 的形式分享您的代码。 FPGA 不需要把所有东西都放在一个函数中。首先将您的代码重新排列成两个单独的部分,它们只能通过可以映射到所描述通道的接口进行通信。
  • 在 FPGA 上,您不会编写 C 意义上的函数,而是描述要合成的硬件。

标签: c function fpga vivado zynq


【解决方案1】:

一点也不!

FPGA 中没有 pthread 或函数。 你一定认为 FPGA 更像是一个电路。有物理连接,如电线。在内部,尤其是在 Zynq 系列中,您可以通过 RAM、DMA 控制器或通过寄存器进行通信。 有来自 Xilinx 的文档,您需要的是 AXI/AXI Stream。

但是您要做的是编写任何 C 代码并在 FPGA 区域中运行它们,就像在处理器中一样。而且这种方法并不乐观。

在 Vivado HLS 中,您可以使用 C/C++/OpenCL/SystemC 编写“函数”,但它只是一个将输入和输出翻译成硬件描述语言 (VHDL/Verilog) 的块。 您必须将其导出并添加到您的 Vivado 项目中才能使用它。 此时,您在 HLS 中创建的 IP 可能会执行您期望的操作,但是以正确的方式连接端口还有很多工作要做。

我的建议是熟悉 Zynq 系列,尤其是 AXI 协议。如果您熟悉 DMA/AXI4/AXI4S 以及如何从 ARM 和 Logic 访问它们,那么就开始使用 HLS。否则你将没有感觉如何编写 HLS 理解的代码。

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2014-11-18
    • 2016-11-11
    • 2023-03-19
    • 2022-09-27
    相关资源
    最近更新 更多