如何建模与仿真算法开发和SoC设计在一起吗

由马克Corless和埃里克•Cigan MathWorks


在本文中,您将学习如何建模算法和嵌入式软件工程师帮助了一个小团队设计一个电机控制算法和实现可编程芯片系统(SoC)。我们是嵌入式工程师团队。我们将展示如何建模帮助我们分区设计、平衡功能行为与资源,实现和测试在实验室里。

可编程的soc Xilinx等®Zynq®soc和英特尔®SoC fpga相结合可编程逻辑,微处理器核在同一芯片上,让设计团队为算法提供了新的平台部署在范围广泛的应用程序,包括嵌入式视觉、通信、汽车和电力电子和控制。这些设计工程师团队通常包括两类:算法工程师,负责数学的概念发展和精化或基于规则的算法,和嵌入式工程师,负责细化算法和实现在嵌入式设备上的软件或硬件。

算法工程师通常使用建模在开发过程的早期获得信心,他们的算法应用在功能上是正确的。嵌入式工程师,另一方面,不要总是看到建模的好处。然而,当这些团队紧密合作,结果迟到了错误检测,导致项目延迟;过度使用资源;或受损功能不足导致设计和测试迭代。

我们是否建模可以帮助算法和嵌入式工程师创建一个更有效率和协同设计过程。我们想关注建模算法组件,我们可以探索使用模拟。我们将利用模拟来帮助我们进行分区决策,使用模拟和代码生成与实现资源平衡功能行为,和自动化集成和部署生成的代码,代码更高效的利用实验室的时间。

提出了工作流

我们提出了一个工作流,将生成的代码模型和代码。(在整篇文章中,我们将参考手工编码部分的设计参考设计)。我们将开始迭代算法开发人员提供的模型和复杂模型通过添加实现细节。在每个迭代中,我们将模拟系统行为,确保功能算法模型的正确性,实现与代码生成算法,获得代码,表现得像模型,然后用我们的参考设计自动化集成确保硬件实现一个可重复的过程(图1)。

图1工作流来开发和部署一个电机控制算法SoC。

选择一个硬件平台

这个案例研究,我们决定设计一个速度控制器的永磁同步电动机采用磁场定向控制(FOC)算法,然后将其部署到zynq - 7000将所有可编程智能驱动器SoC II(图2)。我们选择电动机控制,因为它是一个应用程序,算法工程和嵌入式工程师经常需要一起工作。我们选择了Zynq智能驱动设备二世因为它是现成的,提供所需的I / O支持我们。金宝app

图2。Zynq智能驱动器设备二世与可选测功器系统(从Avnet电子营销)。

Zynq智能驱动器设备二世是一个开发平台使用的工程师想要测试电机控制算法Zynq z - 7020 SoC设备上运行。基于ZedBoard开发板,该工具包包含一个模拟设备融合运动控制模块和一个24 v直流无刷电动机配备了1250周期/革命编码器。因为我们想测试电机控制算法在一系列操作的情况下,我们使用了Zynq智能驱动器设备二世和一个可选的测功器系统。

分区算法组件

在选择硬件平台,我们回顾了一个初始系统仿真模型提供的算法工程师,确认其他算法所需的组件,这些组件将被部署到SoC。电动机的模型包括一个控制器算法基于数据表参数。该算法由外部速度控制回路调节内部电流控制回路用船。

虽然这捕获核心控制器的数学模型,它没有考虑到外围设备的影响(如ADC、编码器和PWM)或算法组件所需的其他操作模式(禁用、开环和编码器标定)。与我们合作的算法工程师识别算法组件模型和决定是否实施这些组件在手臂或可编程逻辑在SoC(图3)。

图3。分区的算法组件。

我们阐述了初始系统模型包括新算法组件(图4)。让我们创建系统仿真的集总参数模型现有外围设备与汽车交互模型。例如,我们有现有编码器外围HDL代码,我们计划在部署设计重用。编码器外围读取流在50 MHz,将它们转换为数字脉冲计数信号读取控制器算法在25 kHz。如果我们直接建模这个脉冲流,我们将推出50 MHz动力学系统模型,大大提高仿真时间。相反,我们创建了一个统括参数模型的编码器将理想从电动机转子位置模型转换为编码器计数信号被算法组件。建模在这种程度的忠诚使我们能够模拟启动条件检测编码器校准组件以及引入位置量子化效应测试速度控制组件(图5),同时保持合理的模拟时间。

图4。系统仿真模型。
图5。系统仿真结果校准编码器和步进速度命令。

我们选择实现算法组件的手臂如果他们需要利率几赫兹或更少。几千赫率的约束集,因为我们计划运行Linux®操作系统在手臂上。算法组件需要更快的利率会在FPGA上实现。

我们想要实现的算法组件尽可能的手臂上,因为我们发现设计迭代在FPGA上的手臂比速度。更容易目标算法的核心,因为它支持本地浮点数学操作。金宝app大多数fpga执行浮点数学效率低下,所以针对可编程逻辑需要额外的步骤将算法转化为不动点。此外,我们发现手臂编译C代码的过程是通常比编译为FPGA HDL代码。

我们使用仿真确定算法组件可以执行速度足够慢的手臂,或者如果FPGA是必需的。例如,最初提出的算法工程师跑25千赫的编码器标定程序,它必须在FPGA上实现。我们使用模拟测试我们是否能够运行编码器标定组件1 kHz,我们可以发现,决定实现它的手臂。

平衡功能行为和实现资源

一旦我们有功能正确的模型所需的组件,我们分组的所有组件用于C代码生成到一个算法C模型和所有组件用于高密度脂蛋白HDL代码生成到一个算法模型(图6)。然后我们迭代实现细节添加到模型和生成的代码,直到我们觉得适合在一个可接受的数量的内存和执行速度的组件。

图6。控制器算法模型C和HDL代码生成。

我们使用嵌入式编码器®从算法C模型生成C代码和生成报告总结调用接口和估计数据内存使用。审查报告时,我们意识到所有的数据类型都是双精度浮点数。我们希望FPGA的数据接口是整数或定点和其他单精度浮点数学。我们应用这些数据类型所使用的模型,仿真验证行为仍然是可以接受的,然后生成的改进的代码。在这一点上我们觉得相信代码适合实现在手臂上。

我们实现了该算法HDL模型作为定点因为定点操作消耗更少的资源在fpga上。为了达到这个目标,我们与算法工程师合作,识别和绑定的关键信号范围设计(电流、电压、速度),然后使用定点设计师™定义定点数据类型,将确保计算不溢出。我们使用HDL编码器™来生成代码和一个总结报告。

我们回顾了资源评估报告确定的数学操作,似乎出乎意料地大。例如,我们最初的单词长度的选择导致了几个两个34-bit数字的乘法,我们觉得会不必要地消耗FPGA资源。我们能够确定资源利用率报告这个问题,减少模型的精度,使用仿真来验证功能仍然是正确的,然后生成改进代码。我们使用Xilinx Vivado®设计套件合成的代码和确认它符合时间要求。

在实验室测试

一旦我们有一个候选算法实现,我们准备将其集成我们的参考设计。我们开始通过手动将生成的C函数与我们手工编写ARM嵌入式项目和集成与我们手工生成的高密度脂蛋白实体Vivado项目。然而,我们意识到如果我们总是手动进行集成,我们需要在实验室里参与每一个设计迭代。本工作流使用我们的目标之一是使算法工程师在实验室自动化集成和部署过程。

我们使用了高密度脂蛋白编码器支持包Xilin金宝appx zynq - 7000平台注册我们的手工Vivado项目作为参考设计。这样就能够自动生成算法的集成HDL与我们手工编写代码,构建一个比特流,并下载到FPGA。我们使用嵌入式编码支持包Xilinx zynq - 7金宝app000平台自动生成算法的集成与Linux操作系统的C代码,构建一个可执行文件,下载到手臂,并从仿真软件与之交互金宝app®。支持包提金宝app供了AXI互连,使手臂核心算法组件间的通信,可编程逻辑。

在最初的系统设置至关重要的算法和嵌入式工程师在实验室里共同努力。作为嵌入式工程师,我们必须建立部署配置和使用算法工程师验证基本功能。系统设置后,该算法工程师能独立进行迭代设计使用仿真软件作为SoC的主要接口。金宝app

算法工程师测试部署的控制器和确定它没有交付预期响应。仿真和硬件的比较结果表明,我们有正确的映射计算ADC数到电流。算法工程师创建额外的测试来更好地描述电动机的转矩常数和提高仿真和硬件之间的相关性(图7)。

图7。比较仿真结果和硬件。

之间的高相关仿真和硬件测试结果给了我们信心,我们可以设计决策模型层面上,进一步减少实验时间。例如,一度马达旋转在实验室,但在某些条件下变得无法控制了。我们认为这个问题与一个溢出的定点速度计算在FPGA上实现。我们在模拟重现这个问题,发现了一个缺陷在初始假设电动机的最大速度。我们能够在模拟调试和解决问题,并且只使用实验室验证改变的时候了。

这种方法的好处

这里描述的工作流程与算法工程师使我们工作得更有效率。通过仿真评估了分区算法对系统性能的影响,验证编码器标定组件可以从那些高收入的可编程序逻辑分区转移到未还款的手臂分区。

仿真还允许我们做出决定,守恒的实现资源的同时保持功能行为,如减少单词长度的数学操作可编程序逻辑,或者把数据通过AXI互连浮点和定点数据类型。最后,我们的原型试验在实验室帮助我们识别错误映射ADC数到电流,并使我们的算法工程师进一步测试运行的电动机的转矩常数。

总的来说,工作流支持我们之间的密切合作和算法金宝app工程师,生产更高效的实现而节约实验时间。

想知道更多吗?

为进一步的细节在这篇文章中描述的工作流程,审核磁场定向控制的永磁同步机。这个Zynq电机控制的例子包括模型和MATLAB仿真软件金宝app®脚本使用在我们的研究中模拟运行,生成代码,测试硬件和比较模拟运行结果从硬件测试。

如果你有兴趣原型电机控制算法或想复制这篇文章中所示的结果,在这个例子中,了解更多的Avnet Zynq智能驱动设备从Avnet电子营销。

延长Zynq电动机控制的例子不同的硬件配置或不同类型的SoC从Xilinx fpga或英特尔、参考的例子定义并注册自定义董事会和参考SoC设计工作流

为进一步了解如何产生精确模型的永磁同步电动机和刷汽车对于仿真软件的使用,回顾文章金宝app创建一个高保真模型的电机控制系统的设计和验证

2016 - 92977 v00出版