技术文章和通讯

通过快速成型和基于模型的设计加速传感器开发

作者:Martin Hein, Hella Fahrzeugkomponenten GmbH


在汽车制造商购买新的传感器系统之前,他们希望看到传感器在汽车环境中工作的实时原型,以便评估其性能,并可能修改其规格。例如,我们经常需要演示传感器的早期版本,该版本通常包含在FPGA或微处理器上实现的算法和逻辑。为了满足这一需求,我们使用定制的快速控制原型平台和基于模型的设计来在开发过程的早期构建新设计的实时原型。实时原型(在Hella称为a -sample)在整个开发过程中既是概念的证明,也是一个活生生的规范。

我们可以在几个月内生产一个包含最终产品80%功能的a样件,而不是等待长达两年的ASIC实现。A-sample使我们能够在开发的早期与客户合作,完善传感器的功能,评估代码大小、模块划分和硬件需求。测试组使用a -sample来设置测试环境和测试套件,以便一旦生产样品(实现为ASIC或微处理器)准备好,测试就可以开始。

创建灵活的原型环境

我们建造了Hella Fahrzeugkomponenten GmbH快速控制原型(HFK RCP)单元,因为商业上可用的替代品缺乏我们需要的灵活性。大多数现成的原型系统只支持ECU软件开发,但传感器设计也可能包括VHDL金宝app®代码和分立电子元件。商业系统的第二个限制是它提供的一组固定的接口。在Hella,我们必须支持广泛的通金宝app信协议和接口硬件,包括SPI、I2C, LIN, XCP, CAN,和SENT。

通过基于模型的设计和自定义原型环境,我们可以根据需要添加新的接口、协议和功能。我们可以针对微处理器和fpga开发规范,并使用原型环境扩展或增强我们已经在生产处理器上实现的算法。

从需求到设计

我们的开发过程遵循v模型,包括五个主要步骤:需求分析、算法设计、产品代码生成、代码验证和测试。在需求分析阶段,我们与客户一起在IBM中定义系统需求®理性的®®.然后,我们在Simulink中创建设计的初始模型金宝app®(图1)。

图1所示。金宝app仿真软件系统模型。

我们使用Sim金宝appulink验证和验证™(在R2017b转换)将DOORS中的需求映射到模型的元素,从而实现需求的双向跟踪。

在创建模型时,我们使用model Advisor来确保遵守MathWorks Automotive Advisory Board (MAAB)算法建模指南。我们还包括基于Hella内部制定的指导方针的模型顾问检查。

为了对初始浮点设计进行早期功能验证,我们在Simulink中运行仿真,使用从类似传感器收集的或用Simulink块生成的测试数据来刺激模型。金宝app在这些环中模型测试之后,我们检查用Simulink Verification和Validation创建的模型覆盖率报告,以识别模型中未测试的元素,并根据需要更新测试以增加覆盖率金宝app。

为了准备在快速原型平台上进行测试,我们对通信接口进行了建模,使传感器算法能够在车辆中运行。我们与MathWorks顾问合作,为Simulink开发了一个本地互连网络(LIN)模块集,这使我们能够扩展原型系统的功能,以支持LIN。金宝app金宝app

从模型到原型

在对模型进行内部设计审查后,我们将设计转移到HFK RCP单元(图2)。HFK RCP支持广泛的设计配置,包括TI的C2000标准组件集金宝app微处理器,Xilinx®以及用于汽车总线和传感器的连接器,以及用于分立电子元件的区域。

图2。海拉工作流使用HFK RCP单元和基于模型的设计。

针对微处理器的设计,我们使用嵌入式编码器从我们的Simulink模型生成代码,并将其部署到H金宝appFK RCP单元上的TI C2000处理器上。如果全部或部分设计需要FPGA,我们使用HDL编码器从模型生成VHDL代码,以便部署在Xilinx FPGA上。

从原型到生产

一旦我们使用HFK RCP单元验证了概念验证a样例,我们就准备在系列处理器上实现设计。我们在定点设计器中使用定点顾问将浮点模型转换为初始的定点设计。Fixed-Point Advisor使我们能够优化代码大小、内存占用和定点扩展。然后,我们重新检查是否符合建模指导方针,并重新运行我们的模拟,使用Simulink Verification和Validation来生成模型覆盖率和圈复杂度度量信息。金宝app我们比较浮点和定点模型的结果,以确保在转换期间没有引入错误。

我们使用软件在环(SIL)测试来验证我们的算法在C语言中的实现,使用处理器在环(PIL)测试来验证算法在实时硬件上的实现。通过这种方式,我们可以确保我们已经验证过的模型在实现时不会引入错误。

对于SIL测试,我们使用Simulink Cod金宝apper从我们的Simulink模型中的传感器算法组件生成C代码。金宝app然后,我们用包含生成的C代码的s -函数替换模型中的这些组件,并重新运行模拟。我们再次将结果与早期的测试结果进行比较,这次是为了验证软件实现。

我们最近与MathWorks顾问合作,他们为78K系列微控制器开发了一个嵌入式编码器目标,使PIL测试在我们的瑞萨®78 k单片机。我们现在可以使用Embedded Coder生成代码,我们部署到设备上进行PIL和车内测试。

从原型到生产的路径取决于原型是如何实现的。如果我们使用HDL Coder为FPGA生成VHDL,则我们将设计和生成的VHDL交给外部合作伙伴,后者将基于原型生成ASIC。因为我们已经彻底验证了模型及其HDL实现,我们的asic需要更少的迭代,这除了降低成本之外,实际上消除了项目延迟。

然而,如果我们为原型设计一个微控制器,我们将继续在海拉内部生产。我们使用嵌入式编码器从定点Simulink模型生成ANSI C代码,并针对生产微控制器。金宝app生成的代码在Hella中经过严格的测试过程,包括集成测试和使用Polyspace Client进行静态分析用于C/ c++和Polyspace ServerC / c++。然后使用IBM Rational Rhapsody将ANSI C代码最终集成到目标中®(C / c++)。

通过调优代码生成设置并遵循已建立的建模准则,我们可以生成比等效的手写代码更紧凑的产品代码。通过重用我们的原型模型来生成产品代码,我们已经减少了大约60%的开发时间。此外,通过基于模型的设计和HFK RCP单元,我们可以在开发早期运行测试,这使我们能够比以前提前几个月验证需求和验证设计决策。

发布于2013 - 92092v00