技术文章及通讯

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

Martin Hein, Hella Fahrzeugkomponenten GmbH


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

我们无需等待长达两年的ASIC实现时间,只需几个月就可以生产出包含80%最终产品功能的a级样品。a样例使我们能够在开发早期与客户合作,以完善传感器的功能,并评估代码大小、模块分区和硬件需求。测试组使用a样例来设置测试环境和测试套件,以便在作为ASIC或微处理器实现的生产样例准备就绪时立即开始测试。

创建一个灵活的原型环境

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

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

从需求到设计

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

Hella_Fig1_w.jpg
图1。金宝appSimulink系统模型。

我们使用Sim金宝appulink验证和验证™(在R2017b过渡)将DOORS中的需求映射到模型的元素,支持需求的双向可追溯性。

在创建模型时,我们使用model Advisor来确保遵守MathWorks汽车咨询委员会(MAAB)算法建模指南。我们还包括基于海拉内部制定的指导方针的Model Advisor检查。

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

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

从模型到原型

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

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

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

从原型到生产

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

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

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

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

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

如果,但是,我们的目标是微控制器的原型,我们继续生产海拉。我们使用Embedded Coder从定点Simulink模型生成ANSI C代码,并以生产微控制器为目标。金宝app生成的代码在Hella内部经过严格的测试过程,包括集成测试和Polyspace Client的静态分析适用于C/ c++和Polyspace ServerC / c++。ANSI C代码到目标的最终集成然后使用IBM Rational Rhapsody完成®(C / c++)。

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

发布日期:2013年9月19日