FPGA编程

什么是FPGA编程?

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

如何编程FPGA?

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

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

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编程万博1manbetx

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

  1. 添加硬件架构。你需要调整你的算法来添加硬件架构来处理连续的数据流,通常是定点数据类型.万博1manbetxSimulink提供了一个基于时间的可视化环境硬件体系结构设计。最佳做法是模拟此版本的设计,并将结果与黄金算法结果进行比较。
  2. 代码生成。一旦你有了硬件设计,高密度脂蛋白编码器™生成独立于目标的Verilog或VHDL RTL,其中包含回模型的链接,用于调试和跟踪功能安全工作流,如做- 254ISO 26262
  3. 集成。您仍然需要HDL编码器的参考设计,以便将您的算法插入FPGA编程。很多都可以通过以下方式获得:硬件支持包万博1manbetx,或从您的FPGA板供应商。
  4. 合成和实现。HDL Coder可以生成用于RTL合成的脚本和项目,它集成了来自的合成和实现工具赛灵思公司英特尔,及美高森美提供自动化的FPGA编程工作流程。

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

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

将MATLAB和Simulink与您实现的设计一起在受支持万博1manbetx的模拟器或FPGA板上运行。万博1manbetx

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