FPGA编程

什么是FPGA编程?

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

如何对FPGA进行编程?

如果你是从MATLAB中的算法开始®或仿真软件®,您首先需要从刺激和分析中划分设计,定义硬件分区的输入和输出。

将测试台架的元素从用于硬件目标的算法中划分出来。

将测试台架的元素从用于硬件目标的算法中划分出来。

FPGA编程的主要步骤是:

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

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

基于MATLAB和Simulink的FPGA编程

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

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

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

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

在支持的模拟器或FPGA板上共同模拟MATLAB和Simulink以及实现的设计。

在支持的模拟器或FPGA板上共同模拟MATLAB和Simulink以及实现的设计。

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

Baidu
map