CAN FD芯片:不同的缓冲功能和能力

一些IP核供应商已经发布了CAN FD产品。其中一些CAN FD核心已经在微控制器中实现。它们在消息缓冲区功能和其他专用特性方面尤其不同。

通过Annegret Emerich, Holger Zeltwanger 2017年4月30日

ISO 11898-1:2015标准规定了CAN FD协议。所有实现都必须遵循这个标准,以符合ISO CAN FD。一致性测试将在ISO 16845-1:2016中标准化。在TXD和RXD线上,所有控制器的行为都是一样的。当然,并非所有实现都支持一些可选特性。另外,一些旧的实现与ISO标准不一致。CAN社区已经同意为这些非iso CAN FD命名。

第一个实现,由Bosch的M_CAN模块,已经更新到符合ISO 11898-1:2015。一些微控制器制造商已经采用了它,但没有一家(包括bosch)提供M_CAN模块作为独立的CAN FD控制器。

M_CAN:实现的“祖母”

Bosch的M_CAN模块已经通过了几个改进步骤。最初,它实现了原始的CAN FD协议(非iso CAN FD)。今天,IP核同时支持ISO CAN FD和非ISO CAN FD协议。理论上,它可以作为一个独立的设备,作为ASIC的一部分,或作为FPGA来实现。当然,它也可以集成在微控制器中。CAN模块在RTL级别上用VHDL语言描述,并准备合成。它需要两个时钟域:CAN时钟和主机时钟,这两个时钟域在内部同步。由于两个时钟域之间的同步机制,可能会有一个延迟,直到写入INIT的值可以被读回来。因此,在将INIT设置为一个新值之前,程序员必须通过读取INIT来确保之前写入INIT的值已经被接受。

根据Bosch的说法,消息存储将是模块外部的单端口或双端口RAM。它通过通用的主接口连接到M_CAN。根据所选择的集成,多个CAN控制器可以共享相同的消息内存。外部Rx和Tx消息存储器可以组织为缓冲区或FIFO。如果接收的CAN帧的数据字段大小超过了匹配Rx缓冲区或Rx FIFO的配置大小,则只存储配置的字节数。帧的其余数据字段将被忽略。

如果Tx内存元素的数据长度代码配置为高于Tx数据字段大小的值,未定义的字节将作为CC传输16(填充字节)。像大多数实现一样,M_CAN不检查消息内存的错误配置。特别是不同部分的起始地址的配置和每个部分的元素的数量必须仔细地完成,以避免伪造或丢失数据。

Rx和Tx处理程序实现了与消息管理有关的所有功能。Rx处理程序负责消息接受过滤,将接收到的消息从CAN核心传输到消息内存,并提供接收消息的状态信息。Tx处理程序管理从消息内存到CAN核心的消息传输,并提供传输状态信息。接受过滤由多达128个过滤器元素的组合实现,每个过滤器元素可以配置为一个范围、一个位掩码或一个专用的id过滤器。

M_CAN模块自带32位CPU接口。对于fpga,提供了一个示例性的接口转换器(例如Avalon接口)。它可以由用户定义的模块接口代替。该模块提供中断控制功能和用于接收和发送时间戳生成的16位CAN位时间计数器。外部生成的16位矢量可以代替集成计数器。M_CAN需要大约31 000个门和大约17 KiB的RAM用于消息缓冲。需要用于主控制器接口和消息仲裁的附加逻辑。

其他CAN FD核心

除了Bosch,还有几家公司提供CAN FD核心:Fraunhofer/Cast, IFI, Inicore, Kvaser和Peak。Cast提供的CAN控制器已经在CAN in Automation运行的CAN FD插件测试中进行了第二轮类似真实世界的测试。CAN- ctrl CAN/CAN FD控制器核心来自Fraunhofer IPMS,是ASIC RTL和FPGA网列表IP核心之一,支持所有当前和拟议的规范(CAN, ISO和非ISO CAN FD,以及TTCAN)。

Kvaser的CAN FD IP核也通过了第二次CAN FD插拔的比特率测试。该公司已经开发了一套完整的CAN FD IP块,主要用于集成到自己的fpga中。通过与Synective Labs合作,Kvaser的IP模块将为任何非战略客户提供FPGA和asic。CAN FD实现同时符合ISO和非ISO CAN FD。这种IP核通常在fpga中实现,并在基于pc的接口板和其他工具(包括数据记录器)中使用额外的电路。一般来说,这些IP核在接受过滤和消息缓冲功能方面非常灵活。

其他CAN FD实现

几家芯片制造商已经开始开发自己的集成在微控制器中的CAN FD控制器。它们提供了有关消息缓冲和网关功能的专用功能。消息的硬件过滤使用最多384个条目的接受过滤列表(AFL)。每个条目都是一个接收规则(接受哪组消息,应分配哪个Autosar的HRH句柄,需要接受的消息的最小长度,以及在哪里存储这些接受的消息)。接收到的CAN FD帧可以根据id(11位和29位)和DLC值进行过滤。

消息的传输取决于优先级或缓冲区号。每条消息都可以单独禁用。每个通道有16个条目的传输历史列表组织为FIFO。该列表记录成功传输的消息,可选地使用Autosar引用(HTH或soft-ID)。对于多用途FIFO单元,传输间隔计时器可用。当FIFO被启用时,没有延迟。即使FIFO在延迟时间内暂时为空,消息之间的间隔也将继续。当FIFO为空时,传输停止并重置延迟。

瑞萨的RS-CAN FD实现可从一个扩展到六个CAN FD模块。多个模块实现提供了专用的路由功能。这包括消息路由;不支持信号路由。AFL过滤从任何通道接收的消息。网关模式下,一个AFL存储目标是一个多用途FIFO,绑定到TX方向的通道上。此FIFO的指定通道通过其消息缓冲区之一传输接收到的消息。这些CAN FD模块已经在瑞萨RH850/F1K微控制器系列。在当前版本中,这是基于FIFO硬件,没有优先级。在下一个版本中,将支持优先队列。它们将提供更大的消息缓冲区大小。

Microchip尚未披露其CAN FD实现的细节,该实现基于Kvaser的IP核。该芯片制造商计划推出CAN FD独立控制器和带片上CAN FD模块的微控制器。到今年年底,样品应该可以得到。该独立控制器样机已成功应用于美国中央情报局组织的CAN FD插件展。

其他功能和模式

消息的时间戳是一些原始设备制造商的要求。CiA正在制定CiA 603规范,规范网络时间管理的框架时间戳。这是独立于所采用的CAN协议(经典CAN或CAN FD)。然而,CAN FD实现需要支持这个功能。目前的实现没有提供这个时间戳功能,因为它还没有详细指定。CiA兴趣小组(IG)打算在今年年底发布CAN FD规范。RS-CAN FD模块支持SOF采样点和FDF-res边缘的时间捕获,未来它还将支持CiA 603中规定的EOF时间戳(32位)。

大多数可用的CAN FD实现都支持其他模式。除了ISO 11898:2015中规定的正常操作模式外,几乎所有CAN FD控制器都提供了只听模式和低功耗(睡眠)模式。其他特殊用途模式包括非自动重传模式(单发传输),测试模式,以及外部和内部环回模式。外部回环模式(M_CAN)用于硬件自检。在内部回环模式下,M_CAN没有连接到总线上,因此自检对连接到网络的其他节点没有影响。

总结与展望

CAN FD实现的不同之处在于它们的附加功能。选择一个并不容易;您需要查看应用程序的需求。主控制器接口不是高度标准化的。在CiA 601-2中,给出了一些建议和指南。软件工程师必须正确地设计底层驱动程序,以避免丢失消息和其他不必要的行为。

CAN FD接口将越来越多地实现在微控制器上,大多数将基于M_CAN。与过去一样,越来越多的ASIC和FPGA解决方案将用于特殊用途的应用。对于他们来说,用户可以选择不同公司提供的足够多的CAN FD核心。

Annegret Emerich技术总监是自动化CAN (CiA)Holger Zeltwanger是中央情报局的常务董事。CAN in Automation是CFE Media的内容合作伙伴。由制作编辑克里斯·瓦夫拉编辑,控制工程, CFE传媒,cvavra@cfemedia.com

在线额外

参见CAN在自动化中的其他故事,链接如下。