基于模型的Zynq SoC软硬件协同设计工作流程及其案例研究
基于模型的设计工作流程让工程师不必进入实验室,在桌面上就能完成设计权衡。
2011 年赛灵思 Zynq®-7000 All Programmable SoC 的推出为 FPGA 行业带来了突破性创新。这些器件通过将双核 ARM®CortexTM-A9MPCoreTM 处理器和丰富的可编程逻辑完美结合在一起,为大量应用提供了诸多优势。采用 Zynq SoC,设计人员既可享受在行业最常用的处理器上开发软件应用的好处,还能获得通过高速可编程逻辑架构上的硬件加速所提供的灵活性和吞吐量。
借助MathWorks ® 提供的 MATLAB® 和Simulink®,今天的创新者能够运用高度集成的软硬件工作流程创建高度优化的系统。本文提供的案例研究将讲述这一基于模型的工作流程。
赛灵思于 2011 年 12 月推出业界首款Zynq SoC时,设计人员就意识到他们可以将其传统的用分立处理器和 FPGA 构建的多芯片解决方案移植到单芯片平台上。他们可以在新平台上创建基于 FPGA 的加速器,扫除软件执行障碍,利用赛灵思及其 IP 合作伙伴提供的一系列的现成的生产就绪型 IP,满足数字信号处理、网络、通信等应用需求。
尚待解决的问题是他们如何为这款新器件编程。憧憬软硬件联合设计潜力的设计人员寻求的是能够在 ARM 处理器和可编程逻辑间对设计进行智能分区的集成工作流程。但他们找到的却是各自为阵的软硬件工作流程:一面是针对 ARM 内核的常规嵌入式软件开发流程;另一面是针对可编程逻辑的IP 组装、传统RTL 和新兴高层次综合工具组合在一起的硬件工作流程。
集成工作流程
2013 年 9 月,MathWorks 使用基于模型的设计推出了一种 Zynq-7000 SoC 软硬件工作流程。在这个工作流程(图 1)中,设计人员可在 Simulink 中创建用于表达完整动态系统的模型(含用于针对 ZynqSoC 的算法的 Simulink 模型),还可直接从算法迅速创建针对 Zynq SoC 的软硬件设计。
系统设计人员和算法开发人员在 Simulink 中使用仿真为完整系统(通信、机电组件等)创建模型,以评估设计概念、进行高层权衡并将算法分配给软硬件。从 Simulink 生成 HDL 代码便于在 Zynq SoC架构上创建 IP 核和高速 I/O 处理。从 Simulink 生成C/C++ 代码便于为 Zynq SoC 的 Cortex-A9 内核编程,从而支持快速嵌入式软件迭代。
这种方法能够自动生成链接 ARM 处理系统和可编程逻辑的 AMBA® AXI4 接口,为 Zynq SoC 提供支持。通过与 C/C++ 编译、为 ARM 处理系统构建可执行文件、使用赛灵思设计工具生成比特流、下载到 Zynq 开发板等下游任务集成,实现了高速原型设计流程。
该工作流程的两大核心分别是:Embedded Coder® 和 HDL CoderTM 技术。Embedded Coder 负责从 MATLAB、Simulink 和 Stateflow 生成量产质量级的 C 和 C++ 代码,并对嵌入式系统进行针对性的优化。Embedded Coder 的应用已经相当广泛,当您驾驶现代乘用车、乘坐高速列车或搭乘商业航班时,这些交通工具极有可能就处于 Embedded Coder 实时生成的代码的控制之下。HDL Coder 与 Embedded Coder 对应,负责为 FPGA 和 ASIC 生成 VHDL 或 Verilog 并已紧密集成到赛灵思工作流程中。这种成熟的 C 和 HDL 代码生成技术是可编程 SoC 的基于模型的设计工作流程的基础。在通信、图像处理、智能电源和电机控制等领域中使用基于模型的设计的设计团队已经采用这一工作流程。
它是算法开发人员与硬件设计人员和嵌入式开发人员密切协作,加快算法在可编程 SoC 上实现的途径。当生成的 HDL 和 C 语言代码在硬件中完成原型设计,设计团队就可以使用赛灵思 Vivado® IP 集成器把该代码与其他生产所需的设计组件集成在一起。
案例研究:三相电机控制
出于多种原因,具有高效电源转换能力的定制电机控制器是可编程 SoC 领域最常见的应用之一。更高性能、更高效率的方案是一个因素。在电机驱动系统占全球耗电总量 46% 的情况下,运用新颖控制算法实现更高效率是一个电机驱动设计追求的永无止境的共同目标。赛灵思 Zynq 可编程逻辑能实现精确的时序,是设计低时延高效率驱动器的理想平台。