什么是FPGA编程?

现场可编程门阵列(FPGA)是一种电子设备,它包含数字逻辑电路,您可以编程来定制其功能。由于FPGA中的逻辑是专门为执行应用程序而编写的,因此与在通用应用程序处理器上运行的软件指令相比,它可以更快地执行此功能,而且功耗更低。在设备上也包含处理器的FPGA称为系统片上(system-on-chip)或SoC FPGA

如何编程FPGA?

如果你从MATLAB中的一个算法开始®或仿真金宝app软件®,首先需要根据刺激和分析对设计进行划分,定义硬件分区的输入和输出。

从用于硬件目标的算法中划分测试工作台的元素。

FPGA编程的主要步骤是:

  1. 硬件体系结构设计。在SoC FPGA的情况下,采用了SoC的软硬件架构。
  2. 设计。这是创建硬件逻辑本身的过程,通常是通过使用硬件描述语言(如VHDL)编写寄存器传输逻辑(RTL)®或Verilog®。目标是在连续数据流上操作时匹配算法的功能,使用定点操作提高效率。
  3. 验证。这一步确保了设计在FPGA编程之前按照预期工作。这可以像a一样简单VHDL或Verilog测试台;商业项目通常使用一种方法,例如通用验证方法(UVM)。
  4. 合成。该技术将RTL转换为数字逻辑门,并试图满足您的寄存器到寄存器时钟频率的目标,同时将FPGA上的资源的使用最小化。
  5. 集成。一个FPGA包含了大量的专用资源——引脚、时钟信号、输入/输出处理(如ADC),以及与芯片外存储器和主板上的其他设备的接口。一个SoC FPGA也有专用的寄存器,硬件和软件都可以用来彼此通信。你的设计将需要插入到这个“参考设计”。
  6. 实现。这是确定FPGA上的哪些物理资源要用哪些逻辑编程,以及如何连接(路由)它们的过程。这将产生加载到设备上用于FPGA编程的比特流。
  7. 实验室测试和调试。经过FPGA编程,您可以运行使用实际输入或测试输入。最初的几次尝试通常涉及弄清楚为什么它不工作以及如何修复它。大多数情况下,这是由于在设计步骤中没有在验证步骤中识别出问题造成的。

从算法设计到FPGA编程的典型工作流程。

用MATLAB和Simulink进行FPGA编程金宝app

如果您在MATLAB和Simulink中建模您的算法,您可以专注于算法和硬件架构的设计金宝app。使用MATLAB和Simulink进行FPGA编程的主要步骤是:金宝app

  1. 添加硬件体系结构。您将需要调整您的算法以添加硬件架构来处理连续的数据流,通常使用定点数据类型。金宝appSimulink提供了一个基于时间的可视化环境硬件体系结构设计。最佳实践是模拟这个版本的设计,并将结果与黄金算法结果进行比较。
  2. 代码生成。一旦你有了硬件就绪的设计,高密度脂蛋白编码器™生成与目标无关的Verilog或VHDL RTL,并带有返回到模型的链接,以便对功能安全工作流进行调试和跟踪,例如做- 254ISO 26262
  3. 集成。您将仍然需要一个参考设计的HDL编码器,以插入您的算法为FPGA编程。许多都可以作为硬件支持包金宝app,或由您的FPGA板供应商提供。
  4. 合成和实现。HDL编码器可以生成脚本和项目的RTL合成,并与它集成的合成和实现工具赛灵思公司,英特尔,Microsemi提供自动化的FPGA编程工作流程。

使用硬件细节细化算法,然后生成可合成的RTL,以针对FPGA开发工具包或定制板。

  1. 验证。验证RTL功能与算法相同的最简单方法是使用高密度脂蛋白验证器™来协同RTL在Mentor Graphics中运行®,®或节奏®Xcelium™,以及您在MATLAB和Simulink中的设计和测试平台。金宝app一定要在FPGA编程之前测试尽可能多的场景和极端情况,因为FPGA上的调试提供的可见性要低得多,并且需要更长的迭代时间。您可以使用金宝app仿真软件测试™以编程方式运行和管理您的测试用例金宝app仿真软件覆盖™以衡量您对设计的验证情况。
  2. 实验室测试和调试。高密度脂蛋白验证器允许您插入逻辑以将数据从MATLAB作为一个AXI Master从FPGA中驱动到FPGA中,并插入逻辑从FPGA内部的信号捕获数据以便进行调试。您可以使用MATLAB和Simulink直接调金宝app试FPGA,无论您是否将它们用于FPGA编程工作流。

协同模拟您的MATLAB和Simulink,以及您的实现设金宝app计运行在一个受支持的模拟器或FPGA板上。金宝app

参见:高密度脂蛋白编码器,高密度脂蛋白验证器

将MATLAB和Simulink算法金宝app部署到fpga进行原型化