什么是FPGA编程?

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

如何编程FPGA?

如果您是从MATLAB中的算法开始®或Si金宝appmulink®,您将首先需要从刺激和分析中分区设计,定义硬件分区的输入和输出。

将测试台的元素与用于硬件目标的算法进行分区。

FPGA编程的主要步骤包括:

  1. 硬件架构设计。在SoC FPGA的情况下,硬件-软件SoC架构。
  2. 设计。这是创建硬件逻辑本身的过程,通常通过使用硬件描述语言(HDL),如VHDL,编写寄存器传输逻辑(RTL)®或者verilog.®. 目标是在对连续数据流进行操作时匹配算法的功能,使用定点操作提高效率。
  3. 确认。这一步确保了设计在FPGA编程之前按预期工作。这可以简单到VHDL或Verilog Testbench;商业项目通常使用诸如普遍验证方法的方法(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. 代码生成。一旦有了硬件就绪的设计,HDL编码器™使用链接生成独立于无关的Verilog或VHDL RTL,用于调试和可追溯性的模型,以实现功能安全工作流程,如DO-254ISO 26262.
  3. 整合。您仍然需要一个用于HDL编码器的参考设计,将算法插入FPGA编程。许多人都可以硬件支持包金宝app,或从您的FPGA板供应商处购买。
  4. 综合与实施。HDL编码器可以生成RTL综合的脚本和项目,它与合成和实施工具集成了锡林克斯,英特尔, 和微笑提供自动化的FPGA编程工作流程。

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

  1. 确认。验证RTL功能是否与算法相同的最简单方法是使用HDL验证器™ 协同模拟在Mentor Graphics中运行的RTL®奎斯塔®或者®尖晶石™ 以及您在MATLAB和Simulink中的设计和测试平台。在FPGA编程之前,请确保测试尽可能多的场景和关键案例,因金宝app为在FPGA上进行调试的可见性要低得多,并且需要更长的迭代时间。你可以用金宝appSimulink Test™以编程方式运行和管理您的测试用例,金宝app模拟链路覆盖™来衡量您对设计的验证程度。
  2. 实验室测试和调试。HDL验证器使您可以将逻辑从MATLAB作为AXI主站插入到FPGA中的数据,并插入逻辑以捕获来自FPGA内部的信号以进行调试。您可以使用Matlab和Simulink直接调金宝app试FPGA,无论您是否正在使用它们,请为您的FPGA编程工作流程使用。

将MATLAB和Simulink与在支持的模拟器或FPGA金宝app板上运行的已实现设计进行联合仿真。金宝app

另见:HDL编码器,HDL验证器

将MATLAB和Simulink算法金宝app部署到FPGA进行原型设计