I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

I3C协议讲解及其Verilog代码

该帖子部分内容已隐藏
付费阅读
已售 2
10积分
此内容为付费阅读,请付费后查看

在了解I3C之前先了解,什么是I3C协议的基础版?MIPI I3C Basic 是功能强大、灵活且高效的 MIPI  I3C 接口的精简版,即功能减少、复杂性较低的版本(I3C Basic 是 I3C的子集),适用于广泛的设备互连应用,包括传感器和存储器接口。因为MIPI仅对非联盟用户公开了基础版本,所以我仅基于基础版本做一些介绍。(基础班就是为了推广而开放出来的免费版本)

介绍

移动产品中传感器的激增带来了重大的设计挑战,由于没有一致的方法来连接物理传感器,设备本身和平台设计人员面临着多种零碎数字接口,包括 I2C、SPI 和 UART 等。但除了这些协议主接口之外(例如I2C的SCL和SDA),可能还需要其他信号,例如专用中断、芯片选择信号以及使能和睡眠信号。这会增加主机 GPIO 资源消耗,进而需要通过增加更多的主机封装引脚和更多的 PCB 层并伴随系统成本的提高。随着时间的推移和传感器数量的增加,这种情况变得越来越难以支持和管理。已开发的 MIPI I3C 接口以简化传感器系统设计为目标,通过为传感器提供快速、低成本、低功耗、两线数字接口。

图片[1]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

1.1本篇文章主要介绍:

• I3C 接口协议和命令用于 I3C 基础

• 电气规范,例如时序和电压电平

• 支持特定类别的传感器和其他设备

以下内容请另行查阅资料(不在I3C协议基础版文档中)

• I3C 设备中的机械、系统和实现细节

• ESD(静电放电)结构

• 系统电源管理

• 除总线管理命令代码外,用例特定的数据或格式定义

1.2 I3C的目的

I3C 接口旨在改进 I2C 接口的特性,保留向后兼容性(兼容旧的I2C)。该规范定义了主机处理器和外围传感器之间的标准多点接口。实施 I3C 规范让移动终端系统具有高效性、低成本、良好的可拓展性和灵活性等特征。

1.3 I3C的主要特征

I3C 接口关注的主要问题是:在传输数据和控制时保持低功耗,同时减少接口使用的物理引脚数量。因此,I3C 接口具有以下特点:

• 使用高达 12.5 MHz 的两线推挽串行接口

• 传统 I2C 设备在同一总线上共存(有一些限制)

• 动态寻址,同时支持传统 I2C 设备的静态寻址

• 传统 I2C 传输

• 类似 I2C 的单数据速率传输 (SDR,Single Data Rate messaging)

• 可选的高数据速率传输模式 (HDR,Optional High Data Rate messaging Modes)(此项不支持 I3C BASIC)

• 多点功能

• 多主功能

• 带内中断支持

• 热连接支持

• 同步时序支持和异步时间戳 (此项不支持 I3C BASIC)

在保持低功耗的前提下(I3C支持1.8V/3.3V),I3C提供了比I2C的十倍以上的速率。

二、术语定义(简单选几个介绍,详细参看协议文档)

ACK:Acknowledge,应答信号。NACK,没有应答。

Address Arbitration:地址仲裁,为了避免争用。

Arbitration:如果两个设备同时开始传输,则需要仲裁来确定总线控制。如果主设备寻址多个从设备,则在从设备传输期间也可能需要仲裁

Bridge Device:I3C 总线上的设备,允许从本地 I3C 总线协议转换为另一种协议(如 SPI、UART 等)。

Bus Available Condition:I3C 总线上的状态,其中 SCL 线和 SDA 线均处于高电平至少保持 tAVAL(具体时间参阅协议标准) ,然后设备能够在总线上启动事务。

Bus Free Condition:I3C 总线上的状态在 STOP 之后和 START 之前至少 保持tCAS(具体时间参阅协议标准)。

Bus Idle Condition:总线空闲状态(Bus Free Condition)的延长持续时间,指示设备可能会尝试热加入 I3C 总线。

CRC5:五阶多项式长度的循环冗余校验。

三、 技术概述

I3C 是一种两线双向串行总线,针对多个传感器从设备进行了优化,并且一次仅由一个 I3C 主设备控制。I3C 向后兼容许多传统 I2C 设备,但 I3C 设备还支持更高的速度、新的通信模式和新的设备角色,包括随时间更改设备角色的能力(即,初始主控可以将主控角色传递给总线上的另一个 I3C 设备(如果第二个 I3C 设备支持该功能))。

I3C 基础包括:

• 支持许多传统 I2C 从设备和消息

• I3C 单数据速率 (SDR) 模式:新的 I3C 增强版 I2C 协议支持定向消息(private messages),并添加两种标准内置消息:

• 广播消息,发送到总线上的所有 I3C 从机

• 直接消息,寻址到特定的从机

3.1 I3C的基础原则

I3C 支持多种通信格式,全部共享一个两线接口。两条线分别指定为 SDA 和 SCL:

• SDA(串行数据)是双向数据引脚

• SCL(串行时钟)是时钟引脚

I3C 总线支持各种消息类型的混合:

  1. I2C 类 SDR 消息,SCL 具有高达 12.5MHz的时钟速度
  2. 广播和直接通用命令编码 (CCC,Broadcast and Direct Common Command Code) 消息,允许主设备分别与 I3C 总线上的所有或一个从设备通信。
  3. HDR 模式消息(基础版不支持)
  4. 发送给传统 I2C 从设备消息。
  5. 从设备向主设备发起的 START 请求,例如发送带内中断或请求获得主设备角色。

下图简单说明了如何启动 I3C 通信:

• 所有I3C 通信都发生在一个帧内。帧以 START 开始,然后是一次或多次传输,然后是 STOP。

• 对于 I3C Basic 不支持但 I3C Basic 设备可以容忍的 HDR 模式:

• 首先,专用广播 I3C 地址 (7’h7E) 被分配给 I3C 总线上的所有从设备。

• 然后发出 EnterHDR CCC 之一,表明主设备正在进入 HDR 模式。每个 HDR 模式都有自己的 EnterHDR CCC。

• 之后是一个或多个HDR 传输。

• HDR 模式通过使用 HDR 退出模式协议结束。

图片[2]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

3.2 主从设备

3.2.1 主机/主设备

I3C 总线要求一次只有一个 I3C 设备用作 I3C 主设备。在I3C术语中,这个I3C Master Device就是Current Master。在典型应用中,当前主设备是总线上的 I3C 设备,它发送大部分 I3C 命令 (CCC),寻址所有从设备(广播 CCC)或特定的单个从设备(定向 CCC)。Current Master 也是 I3C 总线上唯一允许发送 I2C 消息的设备。除了发送 I3C 命令和 I2C 消息外,I3C 主设备还:

• 生成总线时钟

• 管理上拉结构

• 管理动态地址分配过程(包括热连接事件),同时充当主设备

• 管理 START 来自总线上 I3C 从设备的请求以及地址仲裁请求:

• 生成带内中断

• 对于热连接事件

• 成为当前主设备

• 支持 I2C 传统从设备

• 支持 I3C SDR 模式

图片[3]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

除了主机外,I3C还支持多个从主机/Secondary Master Device(即第二主机,但这个主机地位低于主机,除非它转正),具体扮演什么角色不详细叙述。

3.2.2 从机/从设备

总线支持最多11个从机,数量和很多因素相关,比如PCB走线,设备的容性负载,包括从设备类型(I2C还是I3C)

I3C 从设备可以选择:

• 请求带内中断

• 生成热连接事件

• 请求成为当前主设备,如果 I3C 从设备也具有 I3C 主设备功能

图片[4]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

汇总以下总线的接入:

图片[5]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

四、时序

寄存器不叙述,时序选择几个简单谈谈。像之前叙述的,I3C还有很多模式,下面我只贴上基础的时序图,各种时序参数请自行参阅协议文档,I3C的基础版标准大概177页,相比I2C和SPI还是比较复杂的,如果大家注意看的话,I3C同时引入了CDR。可以想象,2线的标准引入如此多的功能,必然带来更多的复杂性。

4.1 开始

图片[6]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

4.2 停止

图片[7]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

4.3 主SDR时序

图片[8]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

4.4 从机结束读,主机生成STOP

图片[9]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

4.4 从机结束读,主机生成重复开始

图片[10]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

4.5 滤波

下图展示了与传统 I2C 设备上的尖峰滤波器相关的时序参数。应满足此时序,以确保传统 I2C 设备能正确忽略 I3C 高速模式。建议 SCL 引脚和 SDA 引脚都带有尖峰滤波器。

图片[11]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

五、通信格式

1、

图片[12]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

2、

图片[13]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

六、典型的 I3C 基础版协议通信(选摘)

6.1 I3C的SDR

图片[14]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

6.1 SDR下的CCC

图片[15]-I3C协议讲解及其Verilog代码-Anlogic-安路论坛-FPGA CPLD-ChipDebug

结语:以上是对I3C的部分模式以及时序的简单讲解,感兴趣的朋友可以参阅MIPI的I3C协议标准,同时给大家打包了I3C的从机IP(源自NXP,感兴趣的可以学习)

I3C master slave verilog实现源码下载:

感谢大家阅读!

请登录后发表评论