- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
5年前关闭。
Improve this question
我正在学习vivadoHLS,教程u871已经介绍了如何使用HLS,并优化了我的C/C++代码。但我想知道如何将它们加载到我的板上 zynq 7020 中,让它在板上运行。
我要实现的是:主机(板载CPU)调用PL(FPGA)进行计算,并将参数发送给PL,然后PL将结果发送回CPU。
例如,C 中的一个函数:添加(int* a,int* b) ,这将分别添加 a[i] 和 b[i] 并返回一个数组 int* 结果。 ,通过HLS,我可以展开for循环,这样计算起来会更快。 CPU将a和b的地址发送给PL,PL计算,并将结果地址发送回CPU。
在本教程中,它只介绍了如何使用 HLS,没有解释如何通信 PL 和 CPU,或者如何将它加载到板上以便它可以在板上运行。
请推荐一个教程或告诉我在哪里学习它,非常感谢!!
最佳答案
这是一个相当复杂的主题,因为它们是解决方案的许多变体。这部分在 ug871 的第 2 章中有介绍,但不幸的是它使用了 EDK 而不是 Vivado。不过,Vivado HLS 概念是相同的。你也可以看看xapp890 .
基本上,Zynq 使用 AXI 端口连接到 PL。 AXI 端口是经典的地址+数据总线。 AXI 有 2 种类型,标准和精简版。 lite 版本不支持突发,专注于以性能为代价使用更少的区域,通常用于寄存器接口(interface)。标准 AXI 具有非常高的性能并支持突发,您通常使用它来连接 DDR 内存。
Zynq 有多个 AXI 端口,作为主端口和从端口。从端口允许您的 IP 读取/写入 Zynq 的内存空间。主端口允许 Zynq 读取/写入内核的内存空间。这几个端口有不同的性能,GP 应该用于低性能的 AXI-Lite,HP 到 IP 需要更直接地访问 Zynq DDR 内存。
连接 IP 的最简单方法是使用 AXI-lite。在 Vivado HLS 中,在地址 0 处定义寄存器 a,在地址 4 处定义寄存器 b,在地址 d 处定义寄存器 c(答案)。函数 add 看起来像:
int add(int a, int b)
{
volatile int *my_ipaddr = MY_IP_BASEADDR; // Address is configured in Vivado block design
*(my_ipaddr+0) = a;
*(my_ipaddr+1) = b;
return *(my_ipaddr+2);
}
void add(int *ab, int *c, unsigned int length)
{
XAxi_Dma_Start_Transfer((void *)ab, length, CHANNEL_MM2S); // Not actual function, MM2S stands for memory to stream
XAxi_Dma_Start_Transfer((void *)c, length, CHANNEL_S2MM); // S2MM = stream to memory
while(XAxi_Dma_Transfer_Done == 0) {} // Wait end of transfer
}
关于fpga - 如何在 zynq 7020 上使用 C/C++ 实现 FPGA 协处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158583/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我相信在大学时我用从 C 派生的语言为 FPGA 编写了一个程序。我了解 VHDL 和 verilog 等语言。但是,我不明白的是程序员在使用哪个方面有多少选择?它依赖于FPGA吗?我将使用 Xili
在设计 FPGA 系统时,我如何粗略估计给定任务所需的逻辑 block 数量? 有人对我对这些常见设备的期望有一个粗略的数量级吗? 串口 使用 CRC32 的数据包解帧器 8 微核 我看过 www.o
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是编程和 FPGA 的新手。我喜欢在我的 Windows 10 PC 上运行一个程序,并喜欢将输入发送到 FPGA,当处理完成后,我喜欢接收输出到同一个程序。是否可能以及如何实现。我需要一些指导才能
我有一个基本问题。我为一些媒体应用程序制作了一些 FPGA 图像和 现在我想在性能和面积方面将我的结果与相同算法的 ASIC 实现的结果进行比较。我听说这样的比较没有意义,因为它有点比较苹果和橘子。但
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我正在用一个小算法修改固件文件 (.jic) JTAG 间接配置文件,但更改文件内的数据使其无法使用,因为文件中某处有一个校验和必须更新。 我需要找到 .jic 文件中的校验和在哪里,并破译使用的算法
我想通过 Xilinx FPGA 的 MGT channel 发送信号(不管是什么类型的信号,只是随机二进制)。这是用于测试 PCB 上的 MGT 走线。我可以实现这一目标的最简单方法是什么?对于常规
我正在使用 Xilinx ISE 14.7 合成器。我能够使用 .coe 文件初始化我的 BRAM 并访问它。我也可以使用 data2mem 工具用新的 .mem 文件更新它并更新我的位文件。这里我已
我在使用 Lattice ICE5LP4K 的内部振荡器时遇到问题。根据 iCE40 振荡器使用指南附录,verilog 中的代码应如下所示: SB_HFOSC OSCInst0 (
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 12 个月
我正在尝试在 FPGA 和 x86_64 Linux 机器之间进行 DMA 传输。 在 PC 端,我正在做这个初始化: //driver probe ... pci_set_master(dev);
Xilinx FPGA 中的“切片寄存器”和“切片 LUT”有什么区别? 为什么在 Vertix 5 中切片寄存器的数量等于切片 LUT 的数量,但在 Vertix 6 和 Vertix 7 中切片寄
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
这是平行线: http://anycpu.org/forum/viewtopic.php?f=13&t=66 它有 64 个内核、1GB RAM、运行 Linux、以太网——每个人都在为它大喊大叫..
我正在设计一个基于 xilinx fpga 上的 microblaze 微处理器的微 Controller 。大部分硬件设置已完成。此时我正在更新的是要在 microblaze 上运行的 c 代码。在
在进行时钟域转换(速率匹配)时,我们通常将数据翻倍以避免亚稳态。双翻牌只会降低亚稳的概率。三重翻牌将进一步减少它。 如何计算亚稳定性和使用的时钟域触发器数量之间的概率/关系? 最佳答案 亚稳定性查询的
我知道在使用这些输入之前需要将所有输入同步到 FPGA 以避免亚稳态。我还意识到需要在单个 FPGA 中同步跨时钟域的信号。这个问题与跨越时钟域无关。 我的问题是定期注册 是否是个好主意?全部 的输入
我是一名优秀的程序员,十分优秀!