问题标签 [vivado-hls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
137 浏览

vhdl - vhdl 中的无限循环

我正在尝试从 std_logic_vector 中获取两位数。我知道......这不是一种专业的方式(我制作的方式),但我正在学习。我真正的问题是'while'循环。我无法弄清楚为什么它是一个无限循环。有谁能帮忙吗?在测试台中,d 的值为“10010”;这是错误和代码:

第 30 行是while aux>noua loop. 我正在合成并想在那之后进行模拟

0 投票
0 回答
437 浏览

vhdl - VHDL:[Place 30-574] IO 引脚和 BUFG 之间的布线布局不佳

我正在尝试在 Nexys4 DDR 上设计秒表并收到以下错误:

这是我的代码:

我不明白为什么我会遇到这个问题,因为在我以前的实现中,我以完全相同的方式使用时钟。有人可以帮助我吗?

以下是引用时钟的约束文件中的代码:

0 投票
0 回答
52 浏览

arrays - 如何在 vivado hls 中编写采用二维数组并返回二维数组的函数?

嗨,我最近一直在研究 CNN 网络,我已经准备好他们的 C 代码,但是现在我想使用 vivado-hls,我真的很困惑如何声明将二维数组作为输入并将二维数组作为输出的函数......我知道我不能在 Vivado hls 中使用 malloc 和 free 函数,所以如果有人可以帮助我,我真的很感激......例如,我想在 Vivado-hls 中将它作为一个函数:

另外,我的相机在 FPGA 上准备好了,有自己的 VGA 有什么建议可以将它附加到我的 Vivado hls 代码吗?这意味着我想提供来自我的相机的 vivado-hls 图像,以便在经过一些处理后给出相应的类。我的相机有叉骨 b4 接口我必须使用 axi4-stream 吗?

相机:OV7670

板子:Nexys4 DDR

0 投票
1 回答
78 浏览

xilinx - HLS:由于指针选择,无法应用数组转换杂注/指令

我正在使用 Vitis HLS 编写一些代码。代码如下:

NDATA输入文件中定义为 64 的位置。这可以正常工作并且可以正常合成。当我尝试使用#pragmas 来优化它时,问题就开始了。主要要求之一是将代码流水线化。我尝试使用以下两个:

可以理解的是,这不能单独工作,考虑到它无法足够快地读取输入,我使用了推荐的修复方法,即使用将输入拆分为单独的寄存器

这就是问题所在:Vitis 无法合成它,而是给出以下错误:

我还没有在任何地方找到任何文档。有谁知道是什么原因造成的,或者我该如何解决?

0 投票
1 回答
64 浏览

c++ - 具有模板方法 ID 的模板类

我正在尝试为我的方法创建一个标识符。这个标识符对我的工作很重要,因为它实际上是硬件综合。

我有以下模板类:

这是我的函数调用

我得到编译错误:

0 投票
1 回答
223 浏览

fpga - HLS:如何分离 AXI4 信号

我正在尝试编写一个使用 AXI4 流协议与上一个和下一个模块进行通信的模块。模块使用以下通信信号:

  1. TDATA,即 16 位,
  2. TKEEP,即 2 位,
  3. TUSER,即 1 位,
  4. TVALID,即 1 位,
  5. TREADY,1 位,指向前一个模块,以及
  6. TLAST,即 1 位。

这些都需要是单独的信号。我尝试使用以下代码实现它:

头文件在哪里

问题是这并没有分离信号。当我合成它并在联合仿真中运行它时(给它从 0 到 9 的值),即使结果是我所期望的,产生的波形也是这样的: 在此图像中,您可以看到输入(底部三个信号)和输出(顶部三个信号)。 不要以为 TREADY 正朝着相反的方向发展。

我们可以看到 TREADY、TVALID 和 TDATA 存在,但其他 3 不存在。此外,查看 TDATA 的内容(由于某种原因是 64 位),我们注意到它们包含所有信号。它们是:

从中我们可以看出,位置 12 中的 3 可能是 TKEEP,位置 8 中仅出现在最后一种情况下的 1 可能是 TUSER,最后 4 位是应该的是 TDATA 等。此外,程序在未准备好接收数据时丢弃 TREADY,这是 TREADY 的本意,但我没有将它编程为以这种方式工作,这意味着它是自动生成的,并且可能有与我告诉它拥有的 TREADY 无关。

所以我的问题是:如何制作一个模块,为我们正在使用的 AXI4 协议版本发出正确的 6 个独立信号?

0 投票
1 回答
39 浏览

vivado-hls - SDSoC:仅使用数组的一部分作为 HLS 函数中的顺序输入

这个问题涉及 Xilinx SDSoC 和 HLS 中的数据移动。

我的主函数中有一个大型一维数组,它是使用 sds_alloc 分配的。它基本上是一个二维数组(N 行和 M 列)转换为 N*M 元素的一维数组。

我还有一个函数,它在 PL 部分接受两个大小为 N 的数组作为输入。

我希望这个函数处理原始二维数组的两列 - 因此,N 个元素的两部分顺序存储在一维数组中,该数组已在主函数中使用 sds_alloc 分配。

有没有一种有效的方法可以在加速函数中顺序访问数组的这两个部分作为流?

0 投票
1 回答
142 浏览

python - 为什么在将 HLS4ML 与 Vivado HLS 一起使用时出现错误,未找到 Vivado 安装

我已经在运行 Ubuntu 20.04.3 LTS 的计算机上安装了 Vivado 2019.2。我已经在 Google colab 上安装了 hls4ml。

我还指定了 Vivado 安装路径

我在这里按照教程:hls4ml github教程/我运行的代码

https://github.com/fastmachinelearning/hls4ml

但是,当我运行命令时: hls_model.build() 我得到以下输出

0 投票
0 回答
68 浏览

c++ - C++ Simulation 一直在编译

我正在使用 Vitis HLS 为我的项目运行 C++ 模拟。我的程序是为信号处理中的似然计算进行矩阵计算。我写了我的矩阵库,因为它应该是静态数组的定点。Vitis HLS 编译器(MingGW 64 位)一直在编译代码,这很奇怪。下面是导致我的程序问题的代码。

目前,我有 2 种数据类型,Mat并且Mat_S. Mat是一个13x2048定点元素数组(32 位),Mat_S是一个13x13定点元素数组。我的大部分函数都用于Mat_S计算,除了getColMat_L2S,它返回一个选定的输入列Mat particles并将其保存到Mat_S temp_X.

我很确定我的函数 , getColMat_L2S, ObsJacobian,GISobs_modelGISPzx, 都经过了很好的测试,它们应该没有问题。我有我的功能show_matshowmat_S用于打印出矩阵内的所有元素。

当我在循环内部评论所有内容时show_matshowmat_S编译器在它应该在循环结束时打印一些值时花了很长时间进行编译。取消注释其中一个show_matshowmat_S功能后。这次模拟打印矩阵值和最终值。但是,它最多只能打印超过 2048 个值的 118 个。然后模拟再次永远运行(我已经测试过,即使在 1 小时后,也没有发生任何事情!)

show_mat当我评论和取消评论或showmat_S函数时,我确实使用调试器检查是否有任何事情发生。但是,在 10 次迭代期间,它在这两种情况下都运行良好。唯一的问题是它不会在控制台上打印任何内容。我认为这可能是 Vitis HLS 调试器的错误。

你对这个错误可能来自哪里有任何想法吗?这一刻我非常绝望。

0 投票
0 回答
71 浏览

fpga - 如何将图像存储在 FPGA 中进行实时视频处理?

我正在实时实施一个来自HDMI输入的视频处理项目。视频输入将具有绿色背景,它将被存储在其中的图像替换,FPGA以生成具有不同背景的新视频。我正在使用PYNQ-Z2板。

到目前为止,我已经尝试了以下方法:

  1. 无法存储整个图像,BRAM因为没有足够的空间

  2. 为图像使用第二个流,然后尝试混合 2 个流(视频 + 图像)。无法同步 2 个流。

  3. 将图像存储在 中,RAM并使用双缓冲方案将图像的一部分加载到BRAM. 第一个缓冲区用于处理图像的 1 行。第二个用于通过(由 控制)从DDR内存中加载下一行。当一行完成时,从到发送一个中断,以便可以从内存发送下一行。此外,我切换缓冲区以便开始加载新数据。此解决方案在传输过程中存在过多延迟,并且视频输出中的图像损坏。DMADMACPUFPGACPUDDRDMA