RIFFAFPGA 加速器可重用集成框架是一个简单的框架用于通过 PCI Express 总线将数据从主机 CPU 传输到 FPGA。 该框架需要支持 PCIe 的工作站和带有 PCIe 连接器的板上的 FPGA。 RIFFA 支持 Windows 和 Linux、Altera 和 Xilinx并绑定了 C/C、Python、MATLAB 和 Java。 软件方面主要有两个功能数据发送和数据接收。 这些函数通过 C/C、Python、MATLAB 和 Java 中的用户库公开。 该驱动程序支持每个系统多个 FPGA最多 5 个。 该软件绑定可在 Linux 和 Windows 操作系统上运行。 用户只需编写几行代码即可与FPGA IP核进行通信。 在硬件方面用户访问具有独立发送和接收信号的接口。 这些信号通过 FIFO 接口提供事务握手和第一个字下降以读取/写入数据。 无需了解总线地址、缓冲区大小或 PCIe 数据包格式。 只需在 FIFO 接口上发送数据并在 FIFO 接口上接收数据即可。 RIFFA 不依赖 PCIe 桥因此不受桥实现的限制。 相反RIFFA 直接与 PCIe 端点配合使用并且运行速度足以使 PCIe 链路饱和。 软件和硬件接口都得到了极大的简化。 详细信息可以在硬件接口页面上找到。 RIFFA 使用直接内存访问 (DMA) 传输和中断信号传输数据。 这可通过 PCIe 链路实现高带宽。 在我们的测试中我们能够在所有测试中使链接饱和或接近饱和。 我们已在 AVNet Spartan LX150T、Xilinx ML605 和 Xilinx VC707 以及 Altera DE5-Net、DE4 和 DE2i 板上实现了 RIFFA。 RIFFA 发行版包含在上面列出的三个开发板上设置设计的示例和指南。 此外该网站还提供了如何从所有软件绑定访问您的设计的示例。 RIFFA 已在 Fedora 13 和 1732/64 位版本以及 Ubuntu Desktop 10.04 LTS 和 12.04 LTS32/64 位版本上进行了测试。 RIFFA 依赖于 Linux 内核 2.6.27 支持的自定义 Linux 内核驱动程序在 2.6.32 - 3.3.0 之间的版本上进行测试。 Windows 驱动程序受以下操作系统支持 Windows 7在 FPGA 开发的世界里RIFFAFPGA 加速器可重用集成框架就像是一把神奇的钥匙能让数据在主机 CPU 和 FPGA 之间通过 PCI Express 总线顺畅传输。今天咱们就来好好聊聊这个有趣的框架。基本情况RIFFA 是个简单的框架不过功能可不小。它需要支持 PCIe 的工作站和带有 PCIe 连接器的板上的 FPGA 才能发挥作用。而且它的兼容性超棒既支持 Windows 和 Linux 系统又兼容 Altera 和 Xilinx 的设备还绑定了 C/C、Python、MATLAB 和 Java 这些常用的编程语言。软件功能软件方面RIFFA 主要有数据发送和数据接收这两个功能。这些功能通过 C/C、Python、MATLAB 和 Java 中的用户库公开。下面咱们看看用 Python 写的一个简单的数据发送示例代码import riffa # 初始化设备 device riffa.RiffaDevice(0) # 要发送的数据 data_to_send [1, 2, 3, 4, 5] # 发送数据 device.send(data_to_send) print(Data sent successfully!)代码分析首先导入riffa库这是 RIFFA 提供的 Python 绑定库。然后初始化一个RiffaDevice对象这里的0表示第一个 FPGA 设备因为驱动程序支持每个系统最多 5 个 FPGA。接着创建一个要发送的数据列表最后调用send方法发送数据。你看就这么几行代码就能轻松和 FPGA IP 核进行通信是不是很简单硬件方面在硬件方面用户访问具有独立发送和接收信号的接口。这些信号通过 FIFO 接口提供事务握手和第一个字下降以读取/写入数据。这意味着咱们不需要了解总线地址、缓冲区大小或 PCIe 数据包格式只需在 FIFO 接口上发送数据并在 FIFO 接口上接收数据即可。比如下面是一段 Verilog 代码示例展示了如何在 FIFO 接口上进行数据发送module fifo_sender ( input wire clk, input wire rst, input wire [31:0] data_in, output reg wr_en, output reg [31:0] fifo_data ); always (posedge clk or posedge rst) begin if (rst) begin wr_en 1b0; fifo_data 32b0; end else begin wr_en 1b1; fifo_data data_in; end end endmodule代码分析这个模块实现了一个简单的 FIFO 数据发送器。在时钟上升沿或者复位信号有效时会进行相应的操作。复位时写使能信号wren置为 0FIFO 数据fifodata置为 0正常情况下写使能信号置为 1将输入的数据data_in送到 FIFO 数据线上。优势特点RIFFA 不依赖 PCIe 桥直接与 PCIe 端点配合使用运行速度足以使 PCIe 链路饱和。它使用直接内存访问 (DMA) 传输和中断信号传输数据能通过 PCIe 链路实现高带宽。在测试中它能让链接饱和或接近饱和。实现情况RIFFA 已经在很多开发板上实现了像 AVNet Spartan LX150T、Xilinx ML605 和 Xilinx VC707 以及 Altera DE5-Net、DE4 和 DE2i 板。它的发行版包含在这些开发板上设置设计的示例和指南网站上也提供了如何从所有软件绑定访问设计的示例。而且它在很多操作系统上都经过了测试像 Fedora 13 和 1732/64 位版本以及 Ubuntu Desktop 10.04 LTS 和 12.04 LTS32/64 位版本。不过要注意它依赖于 Linux 内核 2.6.27 支持的自定义 Linux 内核驱动程序在 2.6.32 - 3.3.0 之间的版本上进行测试Windows 驱动程序受 Windows 7 支持。RIFFAFPGA 加速器可重用集成框架是一个简单的框架用于通过 PCI Express 总线将数据从主机 CPU 传输到 FPGA。 该框架需要支持 PCIe 的工作站和带有 PCIe 连接器的板上的 FPGA。 RIFFA 支持 Windows 和 Linux、Altera 和 Xilinx并绑定了 C/C、Python、MATLAB 和 Java。 软件方面主要有两个功能数据发送和数据接收。 这些函数通过 C/C、Python、MATLAB 和 Java 中的用户库公开。 该驱动程序支持每个系统多个 FPGA最多 5 个。 该软件绑定可在 Linux 和 Windows 操作系统上运行。 用户只需编写几行代码即可与FPGA IP核进行通信。 在硬件方面用户访问具有独立发送和接收信号的接口。 这些信号通过 FIFO 接口提供事务握手和第一个字下降以读取/写入数据。 无需了解总线地址、缓冲区大小或 PCIe 数据包格式。 只需在 FIFO 接口上发送数据并在 FIFO 接口上接收数据即可。 RIFFA 不依赖 PCIe 桥因此不受桥实现的限制。 相反RIFFA 直接与 PCIe 端点配合使用并且运行速度足以使 PCIe 链路饱和。 软件和硬件接口都得到了极大的简化。 详细信息可以在硬件接口页面上找到。 RIFFA 使用直接内存访问 (DMA) 传输和中断信号传输数据。 这可通过 PCIe 链路实现高带宽。 在我们的测试中我们能够在所有测试中使链接饱和或接近饱和。 我们已在 AVNet Spartan LX150T、Xilinx ML605 和 Xilinx VC707 以及 Altera DE5-Net、DE4 和 DE2i 板上实现了 RIFFA。 RIFFA 发行版包含在上面列出的三个开发板上设置设计的示例和指南。 此外该网站还提供了如何从所有软件绑定访问您的设计的示例。 RIFFA 已在 Fedora 13 和 1732/64 位版本以及 Ubuntu Desktop 10.04 LTS 和 12.04 LTS32/64 位版本上进行了测试。 RIFFA 依赖于 Linux 内核 2.6.27 支持的自定义 Linux 内核驱动程序在 2.6.32 - 3.3.0 之间的版本上进行测试。 Windows 驱动程序受以下操作系统支持 Windows 7总的来说RIFFA 极大地简化了软件和硬件接口为 FPGA 开发带来了很多便利是个值得深入研究和使用的框架。
探索 RIFFA:FPGA 加速器可重用集成框架
RIFFAFPGA 加速器可重用集成框架是一个简单的框架用于通过 PCI Express 总线将数据从主机 CPU 传输到 FPGA。 该框架需要支持 PCIe 的工作站和带有 PCIe 连接器的板上的 FPGA。 RIFFA 支持 Windows 和 Linux、Altera 和 Xilinx并绑定了 C/C、Python、MATLAB 和 Java。 软件方面主要有两个功能数据发送和数据接收。 这些函数通过 C/C、Python、MATLAB 和 Java 中的用户库公开。 该驱动程序支持每个系统多个 FPGA最多 5 个。 该软件绑定可在 Linux 和 Windows 操作系统上运行。 用户只需编写几行代码即可与FPGA IP核进行通信。 在硬件方面用户访问具有独立发送和接收信号的接口。 这些信号通过 FIFO 接口提供事务握手和第一个字下降以读取/写入数据。 无需了解总线地址、缓冲区大小或 PCIe 数据包格式。 只需在 FIFO 接口上发送数据并在 FIFO 接口上接收数据即可。 RIFFA 不依赖 PCIe 桥因此不受桥实现的限制。 相反RIFFA 直接与 PCIe 端点配合使用并且运行速度足以使 PCIe 链路饱和。 软件和硬件接口都得到了极大的简化。 详细信息可以在硬件接口页面上找到。 RIFFA 使用直接内存访问 (DMA) 传输和中断信号传输数据。 这可通过 PCIe 链路实现高带宽。 在我们的测试中我们能够在所有测试中使链接饱和或接近饱和。 我们已在 AVNet Spartan LX150T、Xilinx ML605 和 Xilinx VC707 以及 Altera DE5-Net、DE4 和 DE2i 板上实现了 RIFFA。 RIFFA 发行版包含在上面列出的三个开发板上设置设计的示例和指南。 此外该网站还提供了如何从所有软件绑定访问您的设计的示例。 RIFFA 已在 Fedora 13 和 1732/64 位版本以及 Ubuntu Desktop 10.04 LTS 和 12.04 LTS32/64 位版本上进行了测试。 RIFFA 依赖于 Linux 内核 2.6.27 支持的自定义 Linux 内核驱动程序在 2.6.32 - 3.3.0 之间的版本上进行测试。 Windows 驱动程序受以下操作系统支持 Windows 7在 FPGA 开发的世界里RIFFAFPGA 加速器可重用集成框架就像是一把神奇的钥匙能让数据在主机 CPU 和 FPGA 之间通过 PCI Express 总线顺畅传输。今天咱们就来好好聊聊这个有趣的框架。基本情况RIFFA 是个简单的框架不过功能可不小。它需要支持 PCIe 的工作站和带有 PCIe 连接器的板上的 FPGA 才能发挥作用。而且它的兼容性超棒既支持 Windows 和 Linux 系统又兼容 Altera 和 Xilinx 的设备还绑定了 C/C、Python、MATLAB 和 Java 这些常用的编程语言。软件功能软件方面RIFFA 主要有数据发送和数据接收这两个功能。这些功能通过 C/C、Python、MATLAB 和 Java 中的用户库公开。下面咱们看看用 Python 写的一个简单的数据发送示例代码import riffa # 初始化设备 device riffa.RiffaDevice(0) # 要发送的数据 data_to_send [1, 2, 3, 4, 5] # 发送数据 device.send(data_to_send) print(Data sent successfully!)代码分析首先导入riffa库这是 RIFFA 提供的 Python 绑定库。然后初始化一个RiffaDevice对象这里的0表示第一个 FPGA 设备因为驱动程序支持每个系统最多 5 个 FPGA。接着创建一个要发送的数据列表最后调用send方法发送数据。你看就这么几行代码就能轻松和 FPGA IP 核进行通信是不是很简单硬件方面在硬件方面用户访问具有独立发送和接收信号的接口。这些信号通过 FIFO 接口提供事务握手和第一个字下降以读取/写入数据。这意味着咱们不需要了解总线地址、缓冲区大小或 PCIe 数据包格式只需在 FIFO 接口上发送数据并在 FIFO 接口上接收数据即可。比如下面是一段 Verilog 代码示例展示了如何在 FIFO 接口上进行数据发送module fifo_sender ( input wire clk, input wire rst, input wire [31:0] data_in, output reg wr_en, output reg [31:0] fifo_data ); always (posedge clk or posedge rst) begin if (rst) begin wr_en 1b0; fifo_data 32b0; end else begin wr_en 1b1; fifo_data data_in; end end endmodule代码分析这个模块实现了一个简单的 FIFO 数据发送器。在时钟上升沿或者复位信号有效时会进行相应的操作。复位时写使能信号wren置为 0FIFO 数据fifodata置为 0正常情况下写使能信号置为 1将输入的数据data_in送到 FIFO 数据线上。优势特点RIFFA 不依赖 PCIe 桥直接与 PCIe 端点配合使用运行速度足以使 PCIe 链路饱和。它使用直接内存访问 (DMA) 传输和中断信号传输数据能通过 PCIe 链路实现高带宽。在测试中它能让链接饱和或接近饱和。实现情况RIFFA 已经在很多开发板上实现了像 AVNet Spartan LX150T、Xilinx ML605 和 Xilinx VC707 以及 Altera DE5-Net、DE4 和 DE2i 板。它的发行版包含在这些开发板上设置设计的示例和指南网站上也提供了如何从所有软件绑定访问设计的示例。而且它在很多操作系统上都经过了测试像 Fedora 13 和 1732/64 位版本以及 Ubuntu Desktop 10.04 LTS 和 12.04 LTS32/64 位版本。不过要注意它依赖于 Linux 内核 2.6.27 支持的自定义 Linux 内核驱动程序在 2.6.32 - 3.3.0 之间的版本上进行测试Windows 驱动程序受 Windows 7 支持。RIFFAFPGA 加速器可重用集成框架是一个简单的框架用于通过 PCI Express 总线将数据从主机 CPU 传输到 FPGA。 该框架需要支持 PCIe 的工作站和带有 PCIe 连接器的板上的 FPGA。 RIFFA 支持 Windows 和 Linux、Altera 和 Xilinx并绑定了 C/C、Python、MATLAB 和 Java。 软件方面主要有两个功能数据发送和数据接收。 这些函数通过 C/C、Python、MATLAB 和 Java 中的用户库公开。 该驱动程序支持每个系统多个 FPGA最多 5 个。 该软件绑定可在 Linux 和 Windows 操作系统上运行。 用户只需编写几行代码即可与FPGA IP核进行通信。 在硬件方面用户访问具有独立发送和接收信号的接口。 这些信号通过 FIFO 接口提供事务握手和第一个字下降以读取/写入数据。 无需了解总线地址、缓冲区大小或 PCIe 数据包格式。 只需在 FIFO 接口上发送数据并在 FIFO 接口上接收数据即可。 RIFFA 不依赖 PCIe 桥因此不受桥实现的限制。 相反RIFFA 直接与 PCIe 端点配合使用并且运行速度足以使 PCIe 链路饱和。 软件和硬件接口都得到了极大的简化。 详细信息可以在硬件接口页面上找到。 RIFFA 使用直接内存访问 (DMA) 传输和中断信号传输数据。 这可通过 PCIe 链路实现高带宽。 在我们的测试中我们能够在所有测试中使链接饱和或接近饱和。 我们已在 AVNet Spartan LX150T、Xilinx ML605 和 Xilinx VC707 以及 Altera DE5-Net、DE4 和 DE2i 板上实现了 RIFFA。 RIFFA 发行版包含在上面列出的三个开发板上设置设计的示例和指南。 此外该网站还提供了如何从所有软件绑定访问您的设计的示例。 RIFFA 已在 Fedora 13 和 1732/64 位版本以及 Ubuntu Desktop 10.04 LTS 和 12.04 LTS32/64 位版本上进行了测试。 RIFFA 依赖于 Linux 内核 2.6.27 支持的自定义 Linux 内核驱动程序在 2.6.32 - 3.3.0 之间的版本上进行测试。 Windows 驱动程序受以下操作系统支持 Windows 7总的来说RIFFA 极大地简化了软件和硬件接口为 FPGA 开发带来了很多便利是个值得深入研究和使用的框架。