电子电气开发流程硬件研发:Pony.ai电子电气开发流程对于一家自动驾驶创业公司来说,硬件的开发流程在初期确实没有太多的必要,几位硬件工程师在一起充分沟通效率远远高于某一个书面的流程。其次自动驾驶的硬件属于车载设备,汽车行业的研发流程太过于复杂。我们知道车载设备的开发周期大概需要两到三年,对于创业公司来说,采用传统汽车行业的研发流程明显是不合理不适用的,如果简单粗暴地照搬过来则会带来很多的负面影响。难道我们真的就不需要流程吗?当硬件团队达到一定的规模,着手去做一个复杂系统的时候,我们发现流程的是非常必要的,一个好的流程可以降低人为失误,提高项目的管理力度,有效保证研发的品质和产品的质量。什么样的流程才是好的流程,或者说什么样的流程才是适合我们的?合理的开发流程需要满足以下几个基本原则:高效:硬件可以做到快速迭代,及时满足软件的应用需求以及公司的发展需求。实用:简单明了的指导方法,让年轻工程师或者新加入的成员容易上手。足够严谨:可以覆盖到每一个关键的节点,以及关键的设计内容。下面我们来介绍一下Pony.ai硬件的开发流程:首先是征集需求:Pony.ai在硅谷弗里蒙特(Fremont),国内的北京、广州都有软硬件研发团队。我们希望同样的硬件方案、同样的设计可以满足三地的需求,这样利于硬件问题的解析和收敛,当然也可以降低硬件的研发和维护成本。需求的收集不仅仅是功能、性能上的要求,还包括环境,可靠性方面的要求,比如广州需要硬件可以耐高温高湿的环境,北京需要硬件在低温下可以稳定启动。在收集到设计需求之后,我们就可以开始真正的硬件研发设计,这部分和传统的硬件研发并没有很大的区别。我们参照业内主流的硬件研发方式制定了一个简洁高效的流程,其中包括大家熟悉的:原理图,PCB的设计,以及技术方面的工程审核。考虑到自动驾驶硬件在功耗及处理能力方面的特殊要求,我们针对这两个方面做了专门的技术强化。首先,针对系统的功耗及散热方案,通过严谨的电源设计,热力图参数的计算和分析,散热方案仿真等,优化系统的电源转换效率,预测系统功耗并制定合理的散热方案。针对系统的处理能力,我们在信号完整性和电源完整性方面做了深入的研究,确保每一个关键信号,每一个关键指标都能满足我们的设计要求,来保证处理器及整个系统运行在较为理想的工作状态。电源完整性:理想中的电源如上图左所示,而实际中的电源却是上图右的样子。自动驾驶用到的处理器大多数是性能非常强劲,功耗比较高,比如CPU,GPU,或者是某些FPGA。这些处理器一般都有一个内核电源,GPU的内核电源在工作时会有上百安培峰值电流,CPU或者一些性能比较强的FPGA也会达到几十安培,内核电源在AC和DC方面都有非常严格的要求,供电网络必须要满足这些需求才能使处理器发挥出应有的算力。表面上来这个需求没有什么难度,而实际上远远没有那么简单。设计上需要分析集成电路板的直流损耗,分析整个网络的PDN参数(这里面包括处理器,电源网络,集成电路板的各种材料的各类模型及参数),通过严格的仿真来预测结果,从而提高设计的合理性和准确性。信号完整性:信号完整性是一个复杂而且抽象的问题。它关系到系统是否可以正常运行,而且它还决定了系统是否可以达到*高性能的工作点。信号完整性的具体工作是防止信号发生不可接受的畸变,让信号接收端得到一个在指标范围之内的有效信号。传统的概念中信号是有模拟信号和数字信号之分的,但是对于硬件工程师而言,所有的信号都是模拟信号,没有理想的0和1,我们需要通过合理的设计手段,保证它的指标满足相应的规格,它才能表现出应有的0, 1特性。(上右图是一个PPS信号的上升沿波形,和理想的PPS信号相差甚远)继续使用PPS信号来举例说明:PPS的原理非常简单,一秒钟一次脉冲,它看起来就是一个简单的低速信号。但是如果从高精度同步的角度来考虑,它却是一个真正的高速信号,PPS标准信号的上升沿是纳秒级的,如果系统中所有设备间的延迟要在几百纳秒或者几微秒范围之内,就要将PPS作为高速信号来处理,确保相位延迟和上升沿在指标范围之内。如果系统要求毫秒级或者更粗糙的同步,则不需要过分追求PPS信号的性能指标。案例:摄像头电路的电源完整性问题从事自动驾驶硬件研发的人员对GMSL和FPD-LINK的Power Over COAX ( POC)设计应该都不陌生。这个POC电路通过AC电容和POC电感来分离电源和信号,实现用一根线缆同时传输电源和信号,这是目前*流行的技术,也是整个行业**进的技术。这个设计的要点是:一,线缆上的信号在直流通路要有足够的抵抗,防止信号衰减过大;二,线缆上的AC噪声不能超过额定的指标,防止噪声对信号的影响导致通信失败。在器件供应商的设计指南中对这两点都做了详细的介绍。而除了上述的两个关键点,在实际的应用中,还会遇到一些其他的问题,比如从前端的传感器,ISP,POC,到供电电源形成的电源网络存在响应不足的风险,这种风险会导致电源的不连续,而电源的不连续会导致信号在接收端产生了较大的跳变,而这正是我们要避免的噪声。自动驾驶的硬件研发由于采用了很多的新技术,或者是创新的设计,在研发的过程中我们经常遇到一些新的问题或者新的挑战。只有应用专业的技术技能解决这些问题,克服这些挑战,才能把自动驾驶的硬件做好。一个完整的研发过程自然少不了测试验证部分,Pony.ai硬件的测试验证包含以下几个主要的方面:一,功能检查Bring-up Checklist。制定一个标准的检查表,检查每一个功能的状态,以及每一个硬件电气连接的准确性,确保硬件设计做到足够好。二,设计验证Design Validation Test Checklist。通过一系列的信号测试,电源测试,及压力测试,确保设备的性能满足设计要求。三,环境和可靠性测试Environmental and Reliability Test Checklist。气候条件,电子可靠性,机械可靠性测试,确保设备满足应用要求。四,路测On Road Test。通过较长时间的路测,检测设备在系统中的工作状态及稳定性。经过以上严格的测试,可以检测出硬件设计上的问题或者是一些不足之处。将这些问题或不足之处快速地反馈到下一个阶段的设计中,从而达到快速提高硬件性能和质量的目的。与此同时,硬件设计团队也得到快速的成长,具备研发设计高性能高品质自动驾驶硬件系统的能力。