电子书

第 4 章

基于 FPGA 的调试和验证


节

在 FPGA 开发板上调试和测试设计

对算法而言,终极测试是看它能否在硬件上按指定方式运行。借助 MATLAB 和 Simulink,您可以使用多种方法在 FPGA 开发板上测试算法实现。

  • 您可以将受测设计 (DUT) 编程到开发板上,并以您的 MATLAB 或 Simulink 会话作为其测试平台来运行测试,从而对硬件原型施加一系列激励,同时以交互方式可视化结果。
  • 为了快速调试和测试您的 DUT,您可以在感兴趣的内部信号上插入探针,在硬件原型测试期间采集信号,然后检索信号以在 MATLAB 中进行查看和分析。
  • 利用 IP 核的 AXI4 可访问寄存器的读/写访问权限,您可以在 MATLAB 中交互式控制编程到 FPGA 板上的 IP 核。

这些方法提供不同级别的交互性和可见性,以满足您的各种测试和验证需求。

节

使用 FPGA 在环进行基于硬件的验证

通过 FPGA 在环 (FIL) 测试,您可以在 MATLAB 或 Simulink 中对硬件实现和黄金参考模型进行背靠背测试。

在 FIL 中,您可以将 DUT 编程到 AMD、Intel 或 Microchip 的开发板上,并应用测试平台,就像在 HDL 协同仿真中一样。MATLAB 或 Simulink 测试平台在主机上执行,与开发板之间相互传递信号。与 HDL 协同仿真相比,FIL 支持测试中的硬件加速。

该工具能够自动化设置和执行 FIL 测试的所有步骤,包括使用 AMD Vivado、Intel Quartus® 或 Microchip Libero® SoC 编译 DUT;对开发板进行编程;以及通过 JTAG、以太网或 PCI-Express 建立通信。

工具支持 AMD、Intel、Microchip 和其他公司提供的 50 多种开发板,您还可以扩展 FIL 以使用自定义开发板。

节

使用 FPGA 数据采集功能来采集信号

FPGA 在环测试的两个特点决定了它的高效使用存在一定前提:

  • 由于要在主机和开发板之间进行通信,DUT 只能以较低的时钟速率运行。
  • DUT 的所有输入必须来自 MATLAB 或 Simulink,因此不能使用其他开发板输入。

如果您希望快速运行测试,或是不想局限于来自主机的输入,不妨使用 FPGA 数据采集工具。

借助 FPGA 数据采集工具,您可以生成 IP 核来探测 FPGA 实现中指定的内部信号,并将它们保存到本地内存中。然后,您可以将信号导入 MATLAB 或 Simulink 中进行查看和分析。

如果您使用 HDL Coder 来生成 RTL,您可以在 Simulink 模型中添加测试点以指定应检索模型的哪些信号,无论这些信号处于模型层次结构中的什么位置。

借助 FPGA 数据采集工具,您可以定义触发条件并指定保留的数据采样数,以便调试硬件实现。您可以在逻辑分析仪窗口中查看信号,并使用其中的游标和其他工具来测量和计算信号。

节

在寄存器和 DDR 内存中读取和写入

很多时候,您需要对 FPGA 开发板上的 AXI4 可访问寄存器或内存进行读/写访问,例如在测试已使用可编程逻辑实现的新 IP 核时。

为此,工程师通常需要为 Arm® 处理器核编写 C 代码,这种代码纯粹只是用来访问 AXI4 寄存器以测试 IP 核。这种 C 代码对测试来说不可或缺,但从根本上说是一次性代码。

MATLAB AXI Master 功能支持您通过 MATLAB 会话对寄存器或 DDR 内存进行读取或写入,从而支持您扩展 MATLAB 分析脚本以用于测试,无需再编写纯用于测试的嵌入式 C 代码。

在寄存器和 DDR 内存中读取和写入