使用 Simulink 进行 FPGA 设计和验证-Xilinx-AMD论坛-FPGA CPLD-ChipDebug

使用 Simulink 进行 FPGA 设计和验证

 

Xilinx System Generator for DSP 是一个 MATLAB Simulink 模块集,可促进系统设计。System Generator for DSP 以熟悉的 MATLAB 环境中的 Xilinx FPGA 为目标,使您能够对设计进行功能仿真,并使用 MATLAB 环境根据黄金参考结果验证位真和周期真模型。这些参考结果可以在外部或 MATLAB 环境内部生成,并且您可以从 MATLAB 内部瞄准 Xilinx FPGA 硬件平台。System Generator 通过为功能仿真和硬件验证提供易于配置的测试平台来补充 HDL 设计任务。您可以使用 ModelSim 等 HDL 模拟器的内置接口在 MATLAB 中模拟 HDL 代码。围绕 HDL 代码构建的 DSP 测试台平台系统生成器提供了功能强大且快速的仿真环境,可与 ModelSim 无缝交互。设置这个环境很容易。

您可以使用相同的环境来测试在真实硬件中运行的 HDL 代码,无需任何修改。硬件协同仿真系统使用预先支持的 FPGA 平台(例如 Xilinx ML506 板)来执行 Simulink 控制的步进时钟硬件运行或实时数据突发运行。

CABAC 模块的系统设计和验证
H.264/AVC 视频编码器是多年协作努力的成果,最终形成了一个具有良好视频质量且比特率远低于以前标准的标准。开发人员可以使用名为 H.264/AVC 联合模型 (JM) 的参考 C 源代码。您可以使用此源代码作为在 HDL 中实现的功能的起点。

 

上下文自适应二进制算术编码 (CABAC) 是 H.264 视频标准的一部分。CABAC 模块的功能使用标准通信原语手动转换为 HDL。此验证中最常用的原语是 FIFO 接口。原始的 JM 源代码还用于生成模块的测试向量文件。

我们还构建了一个测试环境,使用 JM 模型生成 CABAC HDL 模块的输入刺激,并用 JM 参考模型产生的结果验证 HDL 的输出结果。这是对传统 HDL ad-hoc 测试台的重大改进。

模块验证是一个三步过程,包括:

  1. 功能 HDL 模拟。使用输入和输出测试向量进行 MATLAB 验证,分别为 ModelSim 仿真提供数据并比较结果。
  2. 功能硬件验证。用于解决功能 HDL 模拟期间未发现的任何错误的中间步骤。此阶段使用系统生成器进行 DSP 控制的单步时钟。输入和输出测试向量是从 JM 源模型的原始执行中提取到文件中的。在 System Generator for DSP 中构建文件接口时要特别小心。
  3. 实时硬件验证。使用功能 HDL 仿真的输入测试向量,以目标输入速率和时钟频率在硬件中测试设计。硬件的输出被捕获到 MATLAB 中并与输出测试向量进行比较。

功能 HDL 仿真
在这一步中,我们将 ModelSim 仿真与 System Generator 集成以进行 DSP 仿真,如图 1 所示。

 

图片[1]-使用 Simulink 进行 FPGA 设计和验证-Xilinx-AMD论坛-FPGA CPLD-ChipDebug
图1. CABAC HDL与ModelSim联合仿真黑盒

为了在 System Generator for DSP 中仿真 HDL,通过在边界处插入转换器来创建顶部 VHDL 实体的黑盒,如图 1 所示。这些转换器在 Simulink 仿真中将 ModelSim 未知的“X”状态转换为零。总模拟的测试台设置如图 2 所示。

 

图片[2]-使用 Simulink 进行 FPGA 设计和验证-Xilinx-AMD论坛-FPGA CPLD-ChipDebug

图 2. CABAC 设计 HDL 仿真的测试台设置

在图 2 中,“Slice_input 子系统”模块和“MB_input 子系统”模块使用特殊的接口代码从包含 JM 源代码创建的刺激的文件中读取。“Output_compare”子系统是一个特殊的块,它将模拟结果与 JM 源代码中的原始测试向量结果进行比较。该模拟是单步完成的。使用 ChipScope 分析器进行硬件功能仿真
下一步是使用类似的环境,将完整的 HDL 模块映射到硬件上,在本例中使用带有以太网和 JTAG 连接的 ML506 板。以太网连接用于提供和读取激励,而 JTAG 端口用于连接 ChipScope 分析仪。这提供了相同的用户体验,但现在 HDL 完全以硬件实现。系统设置如图 3 所示。

 

图片[3]-使用 Simulink 进行 FPGA 设计和验证-Xilinx-AMD论坛-FPGA CPLD-ChipDebug
图 3. 在硬件中执行 CABAC 设计,具有用于激励的以太网接口和用于 ChipScope 分析器的 JTAG。

这种设置的优点是您可以完全从特定接口的细节中抽象出来。您无需了解如何使用以太网连接来提供输入刺激或读取 CABAC 模块的输出。图 3 中所示的特殊网关块完全从这些细节中抽象出来。

实时硬件验证
先前的仿真和执行为循环级别的块的详细执行提供了良好的环境。在完整的设计中,您通常希望使用代表实际测试用例的大型测试集。单周期或步骤界面不适合这种类型的验证。

使用与 ML506 板相同的硬件设置,现在可以通过名为 M-HWcosim 的新颖 MATLAB 接口提供的大型数据集进行验证。M-HWcosim 是一个 API,可将数据从 MATLAB 脚本 M 文件传输到硬件。现在,MATLAB 脚本环境用于向硬件中运行的实际 CABAC 模块提供所有数据。

具有流量控制的 FIFO 实现允许运行 MATLAB 的计算机与全速运行 CABAC 模块的硬件之间进行异步通信。该环境抽象了该接口的细节,对于验证 CABAC 模块的大数据集至关重要。有关此环境的详细信息,请参阅www.xilinx.com上的白皮书“Using System Generator for Systematic HDL Design, Verification, and Validation” 。

结论
在完整的系统设计中,验证的工作量通常与实际设计的工作量一样多。H.264 中 CABAC 块的设计利用 JM 源代码模型从高级语言生成测试向量。这里,HDL 设计验证与 DSP 和 MATLAB 的 System Generator 集成。此外,与可以快速运行 CABAC 块的完整板的集成是对临时环境的重大改进。这大大减少了构建验证环境所需的时间,因此使您可以专注于手头的实际块。

作者简介
Justin Delva 是 Xilinx 的一名 DSP 工程师。您可以拨打 联系他。Ben Chan 是 Xilinx 的高级软件工程师。您可以拨打 联系他。Shay Seng 是 Xilinx 的工程经理。您可以拨打 联系他。

请登录后发表评论

    没有回复内容