FPGA编程

什么是fpga编程?

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

你如何编程FPGA?

如果您从Matlab中的算法开始®或者模金宝app拟®,首先需要将设计与刺激和分析分开,定义硬件分区的输入和输出。

从旨在为硬件定位的算法分区测试台的元素。

FPGA编程中的主要步骤是:

  1. 硬件架构设计。在SOC FPGA的情况下,硬件软件SoC架构。
  2. 设计。这是创建硬件逻辑本身的过程,通常通过使用硬件描述语言(HDL)(例如VHDL)编写寄存器传输逻辑(RTL)®或Verilog®.目标是在连续的数据流上运行时,匹配算法的功能,使用固定点操作进行效率。
  3. 验证。此步骤可确保设计在FPGA编程之前的预期工作。这可以像一个一样简单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. 代码生成。一旦您有硬件就绪设计,HDL编码器™生成与目标无关的Verilog或VHDL RTL,并带有返回到模型的链接,以便对功能安全工作流进行调试和跟踪,例如DO-254.ISO 26262.
  3. 一体化。在FPGA编程中,您仍然需要将算法插入到HDL Coder的参考设计。许多是可用的硬件支持包金宝app,或来自您的FPGA董事会供应商。
  4. 综合与实施。HDL Coder可以生成用于RTL合成的脚本和项目,它集成了来自的合成和实现工具Xilinx.英特尔,Microsemi提供自动FPGA编程工作流程。

用硬件细节炼制您的算法,然后生成合成的RTL以定位FPGA开发套件或自定义板。

  1. 验证。验证您的RTL函数与算法相同的最简单方法是使用HDL验证者™以消化在导师图形中运行的RTL®Questa.®或节奏®Xcelium™与Matlab和Simulink的设计和测试台一起。金宝app在FPGA编程之前,请务必测试尽可能多的方案和角落案例,因为FPGA的调试提供了更低的可见性,并且需要更长的迭代。您可以使用金宝app仿真软件测试™以编程方式运行和管理您的测试用例,并且金宝appSimulink Coverage™测量您验证了设计的程度。
  2. 实验室测试和调试。HDL验证者使您能够插入逻辑以将数据从MATLAB驱动到FPGA作为一个AXI Master,并插入逻辑以从FPGA内部的信号中捕获数据以进行调试。您可以使用MATLAB和Simulink直接调金宝app试您的FPGA,无论您是否将它们用于您的FPGA编程工作流。

将MATLAB和SIMULINK与您所实现的设计一起在支持金宝app的模拟器或FPGA板上进行了模拟。金宝app

也可以看看:HDL编码器HDL验证者