FPGA编程

什么是FPGA编程?

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

如何对FPGA编程?

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

将测试平台的元素与用于硬件定位的算法分开。

将测试平台的元素与用于硬件定位的算法分开。

FPGA编程的主要步骤有:

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

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

FPGA编程MATLAB和Simulink

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

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

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

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

将您的MATLAB和Simulink与在受支持的模拟器或FPGA板上运行的已实现设计一起进行协同仿真。

将您的MATLAB和Simulink与在受支持的模拟器或FPGA板上运行的已实现设计一起进行协同仿真。

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

Baidu
map