亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 嵌入式

基于 Zynq 的设计的联合仿真

Xilinx Zynq 7000 和 Zynq UltraScale+ MPSoC 等异构片上系统 (SoC) 器件将高性能处理系统与最先进的可编程逻辑相结合。这种组合允许构建系统以提供最佳解决方案。用户界面、通信、控制和系统配置可以由处理器系统 (PS) 寻址。同时,可编程逻辑 (PL) 可用于实现低延迟、确定性功能和处理流水线,利用其并行特性,如图像处理和工业应用所使用的特性。

PS 和 PL 之间的通信由多个内存映射接口提供。这些接口使用高级可扩展接口 (AXI) 来提供各个方向的主从通信。

图 1. Zynq 架构显示 PS 和 PL 之间的 AXI 互连(来源:Xilinx)

在配置和控制功能由 PS 执行的情况下,从 PS 到 PL 使用通用 AXI 主接口。这使软件 (SW) 能够配置寄存器,从而配置 PL 中 IP 核的所需行为。在更复杂的操作中,可能需要将大量数据从 PL 传输到 PS 存储空间中,以便进一步处理或通信。这些传输将利用高性能接口,这将需要相当复杂的软件来配置和使用。

验证 PS 和 PL 之间的交互给设计团队带来了挑战。 2015 年嵌入式市场调查将调试确定为工程团队面临的主要设计挑战之一,并确定需要改进调试工具。虽然最初可以使用总线功能模型,但这些模型通常被简化,并且不能同时验证开发的软件驱动程序和应用程序。可以使用全功能模型,但这些模型可能非常昂贵。在实现异构 SoC 设计时,需要有一种验证策略,能够尽早同时验证 PL 和 PS 元素。

传统上,最初对设计中的每个元素(功能块)进行单独验证;当第一个硬件到达时,一起验证所有块。开发在 PS 上运行的应用程序的软件工程团队需要确保 Linux 内核包含支持其使用的所有必要模块,并具有正确的设备树 blob;这通常使用 QEMU(Quick Emulator 的缩写)进行验证,QEMU 是一个免费的开源托管管理程序,可以执行硬件虚拟化。

同时,为了正确验证 PL 设计,逻辑验证团队需要生成和排序应用软件发出的命令,以验证逻辑是否按要求运行。然而,这两种方法都没有捕捉到软件与硬件的真实交互,因此很难检测到与这种交互相关的错误。这会延迟开发进度并增加开发成本,因为在开发过程后期提出的问题解决和纠正的成本总是更高。

在最终硬件到达之前,可以在中间步骤中使用开发板来验证 HW 和 SW 交互。然而,在真实硬件上的调试可能很复杂,需要在硬件中插入额外的仪器逻辑。此插入需要额外的时间,因为需要重新生成位文件以包含检测逻辑。当然,实现中的这种更改也会影响设计的底层行为,从而掩盖问题或引入仅在调试版本中才会显现的新问题。

因此,能够使用协同仿真验证软件和硬件设计提供了几个显着的好处。它可以在开发周期的早期执行,不需要等待开发硬件到达,从而降低调试的成本和影响。此外,这种方法还提供了更多关于 PS 和 PL 之间的寄存器和交互的可见性,所有这些都有助于在流程早期发现和消除错误。

软硬件协同仿真

SW和HW之间的协同仿真需要用于验证HW设计的逻辑仿真工具能够与SW仿真仿真环境交互。

Aldec 的 Riviera-PRO (2017.10) 的发布通过在 Riviera-PRO 和 QEMU 之间提供桥梁来实现这种硬件和软件的联合仿真,从而能够为基于 Linux 的 Zynq 开发执行开发的软件。

图 2. 桥接硬件和软件验证环境(来源:Aldec)

该桥是使用 SystemC 事务级建模 (TLM) 创建的,用于定义 QEMU 和 Riviera-PRO 之间的通信通道。桥的双向传输信息的能力促进了 SW 和 HW 的并发验证。

在此集成仿真环境中,工程团队能够使用标准和高级调试方法来解决验证过程中可能出现的任何问题。对于 Riviera-PRO,这包括在 HDL 中设置断点、检查数据流,甚至分析代码覆盖率和运行在 QEMU 中的软件应用程序执行的路径等功能。在 QEMU 的情况下,软件团队可以使用 Gnu DeBugger (GDB) 来检测内核和驱动程序,以使用断点单步执行代码。

这种联合仿真方法的好处是不仅可以在硬件仿真环境中提供更高的可见性和调试能力,而且还可以在 QEMU 中使用为目标硬件开发的相同 Linux 内核。同样,这提供了更早的验证,即内核正确包含所有必需的包和元素,以支持正在开发的应用程序。

PWM 示例

为了演示这种协同仿真环境,创建了一个简单的示例。此示例将 IP 核放置在 PL 中,并通过通用 AXI 接口将其连接到 Zynq PS。当通过 AXI 访问其寄存器空间启用时,IP 内核将生成脉冲宽度调制 (PWM) 信号输出。 PWM 信号的持续时间可在 0 到 100% 的范围内选择,并再次由 IP 核寄存器空间内的寄存器定义。因此,该内核的典型用例需要在 Zynq PS 中运行的软件来启用和配置 IP 内核。简单地孤立地模拟 IP 核不会导致核的所需操作得到充分证明。为了正确验证 IP 核,我们需要能够在运行 Linux 操作系统时使能并练习来自 PS 的输出脉冲宽度。


嵌入式

  1. 子弹用钨合金
  2. 铪有什么用途?
  3. C# for 循环
  4. 英飞凌推出面向工业 4.0 的 TPM 2.0
  5. Harwin:用于空间受限电子设计的超紧凑型 EMI/RFI 屏蔽夹
  6. 视频处理器支持电池供电设计的 4K 视频编码
  7. Syslogic:用于预测性维护的铁路计算机
  8. 参考设计简化了 FPGA 电源管理
  9. 5G PCB 制造
  10. 什么是 AutoCAD?它是如何工作的以及它的用途
  11. 如何优化金属制造项目的设计
  12. 5 种适用于您最佳设计的 CNC 铣削技术