作者 | Jessie
出品 | 焉知
高阶自动驾驶汽车需要通过高带宽和低延迟的网络来连接所有传感器、摄像头、诊断工具、通信系统以及中央人工智能。这些技术会产生、发送、接收、存储和处理海量数据。
对于下一代自动驾驶域控制器来说,常用车载网络有CAN、LIN、FlexRay、MOST和LVDS等。除LVDS外,其他都是专门为汽车行业设计的通信网络。当前,大部分汽车通过 CAN 或 LIN 联网,但随着数据传输速度和数据量的增加,这些总线因为带宽较低、体积较大而不太适合。CAN/LIN总线仍然会有一席之地,但它不会成为通信系统的骨干。
如上图表示了一种集中式域控制器的内部通用连接形式,对于下一代自动驾驶系统通信网络连接而言,主要涉及中央域控制器单元中的芯片连接,传感器接口输入连接,调试接口连接,存储连接等。
在中央域控制器中,通常需要设计一定大小的存储单元进行数据、程序、文件、图像等信息的存取。设计的存储单元包括Flash、EMMC、LDDR等。其中,Flash一般存放驱动程序文件,大小为32MB-64MB,EMMC主要用于存储高精地图数据,众包建图,自动驾驶数据记录,影子模式、大数据等信息,大小需求大致为96GB-128GB。LDDR主要用于程序运行缓存。这里我们需要讲解一下几种典型的通信链路硬件形式,其中包含SPI、UART、GPIO、PCIe、CanFD、FlexRay以及ethernet等。
为了说明各种通信链路的连接形式适用场景,我们需要将这些通信链路及相应的存储单元进行不同程度的功能分析及优缺点说明,并着力于为自动驾驶系统域控制器硬件设计、网络通信设计过程提供帮助和参考。
系统架构外围通信总线
自动驾驶系统的外围通信总线主要是指中央域控制器所连接的外围传感器、存储硬盘、显示单元及整车执行器等。这些外围传感器、执行器单元的连接方式传输的数据类型主要包括原始视频数据、激光雷达点云数据、毫米波雷达目标数据及控制/显示指令等信息。主要的通信连接方式包括了Ethernet、CanFd/Flexray/Lin等。
如下表表示了高阶自动驾驶中央域控制器单元中的除AI计算单元SOC及逻辑计算单元MCU以外的所有典型网络连接、存储及接口信息交换单元数据信息。
1、Ehternet
为什么要用以太网,简单地说,整体汽车架构会强烈的影响网络走向,以太网可以在域控制单元的车载网络中减少线束的同时,很好的提升服务质量。目前,自动驾驶系统架构已逐渐向集中式架构进行不断演进,这就意味着可以采用经典的zonal架构将分布在各zone的所有数据带入一个中心位置区域进行处理,而中央集中式方案的挑战之一就是带宽,基本上该带宽可以轻松的增加到10Gbps,当前我们车载以太网的速度仅仅是1Gpbs。
一般的,在外围传感器连接中,毫米波雷达不需要千兆的以太网,低速以太网足以,摄像头既可以用过以太网,也可以采用传统的LVDS进行数据通信,而如果增加了激光雷达,则摄像头+激光雷达数据的组合就需要高速以太网。这里需要说明一点,在集成到域控制器的高速以太网PHY中,可能存在多个不同的通道同时驱动20-30甚至更长英尺的线束。这就会导致域控制器中的Soc发热量出现巨大的增加,这将使得整个域控制器的封装价格出现巨大的攀升。
2、CANFD/FLexRay/Lin
CanFD作为之前Can网络的升级版,且只升级了协议,物理层未改变。具备更高的带宽、数据传输速率。Can与CanFD主要区别:传输速率不同、数据长度不同、帧格式不同、ID长度不同。同时,CANFD速率可变,仲裁比特率最高1Mbps(与CAN相同),数据比特率最高8Mbps。因此,在下一代智能驾驶汽车的通信网络中,主要作为渐进式网络通信单元用于传输较高带宽需求及较大速率的Can信号通信中。
Lin为局部连接网络,是一种低成本、串行通信,通信接口为UART。Lin分为主节点和从节点,通过单线连接。Lin在下一代智能驾驶汽车中,主要应用于通信带宽要求比较低的车身控制方面,如方向盘按键、车窗、座椅等,可作为Can通信补充。
FlexRay主要是应对汽车安全性、功能性方面的要求,即可以提供更高传输带宽、更高可靠性的场合。他和可以完全实现Can或者Lin的所有功能,但更多的是具备更高的确定性、容错性、高速等特点。主要应用在对误差容限和时间确定性要求较高的线控领域,如下一代自动驾驶系统通常采用线控制动、线控转向、线控驱动等方式进行相应的横纵向控制。Flexray主要是基于差分信号传输,由两条总线组成,通常使用双绞线。Flexray总线收发数据主要采用时间触发和事件触发的方式进行,利用时间触发通信时,可以尽可能的保持传输同步与可预测,这对需要高速线控控制的三大控制执行单元十分有利。但因其Flexray成本较高、设施复杂等缺点,并不会完全取代其他主要的车载网络标准。
高性能计算平台片间通信总线
智能驾驶高阶域控制器需要把多个CPU核心为单位的SOC/MCU/MPU及相关辅助电路封装在一个主板上,这种多芯片域控单元称之为中央域控制器。当然,多核多芯片的域控制器往往会包含更多的辅助电路,以解决多个CPU核心之间的通信和协调问题。当前常用的辅助电路连接方式有以下几种:GPIO、SPI、UART、PCIe、I2C。
1、GPIO
GPIO表示一种通用型输入输出总线,是一个灵活的软件控制的数字信号。每个GPIO提供一位与特定的管脚相连。域控SOC处理器非常依赖于GPIO,某些情况下,普通管脚可以被配置为GPIO。大多数芯片至少拥有几组类似的GPIO。GPIO驱动可写成通用的,便于单板编写代码可以将这些管脚配置数据传递给驱动。在高阶自动驾驶AI芯片中具备电源管理、音视频解码等功能,也会经常具有一些这样的管脚来弥补SOC芯片上面管脚的不足。这里就需要设计一些GPIO的扩展芯片,连接用于I2C或是SPI串行总线。
这里需要说明的是:如果用GPIO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视具体的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
2、SPI
SPI是一种高速、全双工、同步、串行通信串行外设接口总线,3~4线接口,以主从模式工作,收发独立,可以实现多个SPI设备互相连接。
SPI总线由三条信号线组成,分别是SCLK(串行时钟)、SDI(串行数据输入)、SDO(串行数据输出)。当有多个从设备时,还可以增加一条从设备选择线,用CS控制芯片是否被选中,这样就可以实现在同一总线上多个SPI设备互相连接,比如一块芯片上可以挂接多个Flash设备。这里我们通常用SPI作为Nor Flash的通信连接方式,解决了不同容量的Nor flash在数据线和地址线的数量不同时,其在硬件上兼容性问题,并且不同容量的SPI Nor flash管脚也兼容封装也更小,占用了合适的PCB板位置。SPI Nor Flash每次传输一bit位的数据,接口简单点,速度慢,但性价比高。对于中央域控制器来说,Norflash 主要用于存储用户数据及基础程序,通常情况这对整个存储过程的实时性要求并不高,一般可采用串行数据的方式提前写入Nor Flash即可。
提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。
3、UART
UART是一种通用异步收发器总线,为两线、全双工、异步串口,特点是速度慢。比SPI、I2C这两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上有两根线,一根用于发送,一根用于接收。
作为接口的一部分,UART可以提供以下功能:
UART是用于控制中央计算单元与串行设备的芯片,它提供了RS-232C数据终端设备接口,这样域控制器芯片就可以和调制解调器或其它使用RS-232C接口的串行设备通信了;
并/串转化:将由SOC传递的并行数据转换为输出的串行数据流;
串行转化字节:将CPU单元外部来的串行数据转换为字节,供MCU内部并行数据器件使用;
奇偶校验:在输出的串行数据流中加入奇偶校验位及启停标志位,并对从外部接收的数据流进行奇偶校验;
输入输出缓冲区,处理域控制器与外部串行设备(如摄像头)数据管理及同步管理问题;
4、PCIe
PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个芯片设备,且这两个芯片是互为是数据发送端和数据接收端的。PCIe总线除了总线链路外,还采用了与网络协议栈较为类似的模型层次,发送和接收的数据都会经过该层次。在高性能计算平台设计中,往往利用PCIe在不同的SOC之间传递图像、点云等信息。在域控制器内部的芯片处理逻辑中,均采用了并行数据处理方式。而其中最重要的性能参数有两个:即带宽和传输实时性。
我们一般关注于有效带宽,而在PCIe总线中,影响有效带宽的因素有很多,其有效带宽较难计算。通常只能计算PCIe链路的峰值带宽来做大致评估。
峰值带宽=总线频率×数据位宽×2
如下表表示了PCIe中总线数据位宽与峰值带宽的关系,了解PCIe峰值带宽可便于我们在设计与域控制器过程中设计较好的硬件选型,从整体数据、图像、点云等信息传输需求上选定合适大小的PCIe。PCIe最高版本 V3.0规范使用4GHz的总线频率,将进一步提高PCIe链路的峰值带宽。
PCIe链路使用串行方式进行数据传送,然而在芯片内部,数据总线仍然是并行的,因此PCIe链路接口需要进行串并转换,这种串并转换将产生较大的延时。这也是PCIe应用过程中的最大缺陷。 除此之外PCIe总线的数据报文需要经过事务层、数据链路层和物理层,这些数据报文在穿越这些层次时,也将带来延时。
PCIe总线层次组成结构
在域控制器中,PCIe链路使用端到端的数据传送方式。在一条PCIe链路的两端SOC/MCU芯片端口是完全对等的,分别为发送和接收端,而且一个PCIe链路的一端只能连接一个发送设备或者接收设备。因此PCIe链路必须使用Switch扩展PCIe链路后,才能连接多个设备。
在PCIe总线中,Switch是一个类似交换机的存在,该设备由1个上游端口和多个下游端口组成。
5、I2C
I2C表示一种集成电路总线,它是一种串行通信总线,使用多主从架构,方便了中央域控制器系统与外围传感器之间的有效通信。由于其简单性,它被广泛用于微控制器MCU/SOC与传感器阵列、EPROM之间的通信。
高性能智能驾驶平台中的通信接口
1、MIPI - CSI/DSI
MIPI为移动行业处理器接口,通常用于适配下一代自动驾驶系统 DSI, CSI (Display Serial Interface, Camera Serial Interface),其中DSI 定义了一个位于处理器和显示模组之间的高速串行接口,DSI是一种Lane可扩展的接口,1个时钟Lane/1-4个数据Lane。DSI和CSI的物理层定义都由D-PHY提供。在下一代高阶智能驾驶系统中,DSI通常用于连接和输入超声波雷达数据,而CSI 定义了一个用于处理器和摄像模组之间的高速串行接口。
2、Serializer/Deserializer
在高阶智能驾驶系统架构中,其外围传感器部件往往趋向于高带宽,大数据,这可能加剧对系统架构的布线难度,提升功耗,增加封装成本等。通常中央域控制器处理的是串行数据,因此,需要首先会传感器视频的输出信号进行并/串行(加串)转换,而对其显示单元的输入信号进行串并行(解串)转换。
如上图,FPD-Link 是用于点对点传输视频的接口。该接口利用SerDes技术可通过双绞线或同轴线缆传输高清数字视频以及双向控制通道。这样可以在域控制器单元与摄像头或显示单元与摄像头之间进行优化。同时通过不同的采样时钟确保视频流和数据流在相同物理通道中的同步传送。
在如上视频图像的处理过程中我们可称之为图像序列化,这一过程可以方便网络传输,协议解释及数据存储。同时,在系统架构设计中采用串行器/解串器(SERDES)技术的高速串行接口来取代传统的并行总线架构,可以减少布线冲突、降低开关噪声、更低的功耗和封装成本等。
总结
高阶自动驾驶域控制器的工作处理能力不仅体现在对于提供大算力、高性能图像处理芯片,更多也是依赖于内部片间通信网络、存储单元与外设总线传输、接口等设计。通信网络设计讲究网络设计带宽、速率、稳定性及避免通信冲突等问题。存储单元则是要求存储容量、稳定性等方面的需求。外围接口则更多的关注接口适配性,与通信网络总线的连接程度等问题。以上每一项对于真正涉及域控制器实体PCB版设计都是必须完全考虑的内容,本文从整体分析中给设计师在各传输、存储等方面的硬件选型上提供了一定的参考。此外,如果更加细化,就会涉及实际的电阻、电容甚至布线规则等,本文就不再做细化。