主要内容

在多核处理器和FPGA上实现FFT

本例向您展示了如何通过图形化地对模型进行分区,利用具有FPGA加速的多核处理器目标。本例需要Simulink Coder™生成多线程代码,需要HDL Coder™生成HDL代码。不能在Macintosh系统上生成HDL代码。

简介

一些现代处理器包括与FPGA组件集成的多核处理器,以创建高性能应用程序。这需要多核和FPGA编程,包括并行线程编程、HDL编程和系统核心之间的通信接口编程。Simulink™允许您通过图形化地对算法进行分区,并将从这些分区生成的软件分配给处理器上的线程和FPGA上的模块,从而利用这些方法。该示例使用一个应用程序级模型生成一个可执行文件,由多个线程和HDL代码组成,以利用FPGA的硬件并行性。如下图所示。

示例模型

加载示例模型:

slexMulticoreFPGAExample

架构定义

该模型的所有并发执行设置都可以在并发执行对话框中访问(配置参数>求解器>配置任务)。

实现算法的第一步是定义目标体系结构的结构元素。这包括硬件的结构元素,例如处理节点(CPU、FPGA)和通信通道(AXI、PCI)的数量和类型。

这还包括模型的配置参数中的软件设置(例如,系统目标文件,硬件实现,数据传输设置)。在本例中,我们选择了预配置的目标体系结构‘Sample architecture’。这种体系结构使用桌面作为部署过程的替身。

模型的划分和映射

对模型进行分区,以决定哪些函数按顺序运行,哪些函数并发运行。

示例模型被显式划分,由MATLAB系统块、模型块、原子子系统和输出端口块组成。显式分区在模型的根级别基于这些块创建分区。另一方面,隐式分区根据块采样时间和其他调度约束创建分区。

对模型进行分区后,可以将分区映射到CPU任务和FPGA节点。您可以通过GUI或API更改设计空间探索的映射。在映射过程中,信号将自动映射到通道。

您可以在并发执行对话框中更改块映射到线程和FPGA的方式。有关更多信息,请参见在多核目标上优化和部署

生成多线程和HDL代码

双击“Generate Code and Profile Report”按钮以生成多线程代码。在本例中,主机将替换目标环境。C代码是为映射到处理器任务的块生成的。这段代码使用桌面计算机的本机线程进行组织。代码片段显示了如何创建线程。此外,为映射到硬件节点的块生成HDL代码。下面的代码片段说明了如何在VHDL中创建模块/实体。

close_system (“slexMulticoreFPGAExample”, 0);
Baidu
map