SLVS summarize
一、概述
SLVS-EC高速串行接口技术,在CIS和DSP(数字信号处理器)之间实现了高帧率的宽带像素数据传输。
SLVS-EC引入了一个优化的数据包格式和控制协议,几乎没有冗余,而且结构简单,仅由两层组成:
- LINK层,利用并行结构实现宽带数据的格式处理;
- PHY层,能够以低功耗提供高速数据传输。
同时SLVS-EC也引入了一个可扩展的FEC(前向纠错)功能,作为数据传输错误的控制协议,而数据传输错误是高速串行接口的主要影响因素。这实现了高度可靠的数据传输,并根据应用将冗余度降至最低,且延迟较低。
此外,发射器和接收器的推荐电气特性被指定为CIS和DSP之间的接口。这样就能以高速、低功耗、小面积的PHY电路实现高性能。
二、定义与缩写
Lane | 一个单向的点对点差分串行连接,包括一个TX-PHY和一个RX-PHY,以及一个与差分传输线的互连。 |
Symbol | 8B/10B编码产生的一个10位数据 |
Comma Symbol | 用于symbol之间对齐的特殊symbol |
Control Code | 控制PHY协议序列的控制码 |
三、架构
1、系统拓扑
SLVS-EC提供可扩展的配置,以支持CIS和DSP之间的各种系统拓扑结构。
像素数据通过一对SLVS-EC的发射器(TX)和接收器(RX)从一个CIS传输到一个DSP。SLVS-EC只提供从CIS到DSP的单向数据传输。每个SLVS-EC的TX和RX所支持的Lane的最大数量应是8个Lane。
如果需要超过8个Lanes的带宽,那么可以使用多个SLVS-EC接口。
此外,SLVS-EC也支持多个CIS传输到一个DSP的情形。
2、层次结构
四、应用层
应用层(CIS和DSP)括从CIS输入或输出到DSP的数据格式,以指定应用层的定义和约束,还包括SLVS-EC接口使用的帧格式和LINK/PHY协议的必要规范。
SLVS-EC接口支持RAW8、RAW10、RAW12、RAW14、RAW16。每一行的长度需要为4的整数倍。
帧格式也是在是由应用层(CIS)功能配置的。通过使用包头和该接口的其他功能嵌入帧和行信息,帧格式可以在DSP侧正确传输和重新配置。
应用层可以传输嵌入在RAW像素数据流中的辅助信息,如CIS配置的寄存器值,这里称为嵌入数据。为了便于区分嵌入式数据线和DSP(RX)端的其他线,SLVS-EC接口支持通过包头传输功能为包含嵌入式数据的线传输一个指示位。
此外,在应用层可以设置寄存器参数
五、LINK Layer
LINK层的主要作用是将帧和行信息添加到从应用层(CIS)输入的像素数据中,将数据组装成数据包,并将其输出到各Lane的PHY层;在RX侧收集各lane的PHY输入的接收数据,从数据包中提取像素数据、帧信息和其他信息,并输出到应用层(DSP),进行纠错编码和解码等处理。
1、Pixel to Byte
2、有效载荷数据
有效载荷数据指的是使用数据包发送的数据内容,是不包括帧头和帧尾等的数据。有效载荷数据由转换后的字节数据和有效载荷填充物组成。
有效载荷填充物的值为8’b0。长度如下:
3、有效载荷数据纠错
因为随机数据错误的发生取决于PHY层的比特错误特性,提供有效载荷数据纠错的功能是为了纠正这种像素数据的损坏,并提高所有SLVS-EC接口的有效比特错误性能。此外,SLVS-EC的纠错性能可以被配置,称为可扩展的FEC功能。该功能可通过配置寄存器(ECC选项)进行配置。
有效载荷数据纠错的规范定义如下:
信息长度被定义为部分有效载荷数据中经奇偶校验后的字节数。配置选项为
其中,Block Length = Info Length + Parity [byte]
4、数据包Header的生成
Header信息时发生错误,错误被CRC检测到,重复传输的其他头信息(其中没有检测到错误)可以用来在RX端重现正确的信息。
此数据包header 的CRC采用CRC16:
5、数据包Footer的生成
存储在数据包页脚中的信息是32阶CRC码(CRC32),用于检测数据包中有效载荷数据的传输错误。通过将配置寄存器中的CRC选项设置为 "ON",数据包Footer被添加并在有效载荷数据之后传输。这个选项功能的主要应用被认为是在传输有效载荷数据是嵌入式数据时,对嵌入式数据传输错误的一种对策。CRC32的实现成本相对较小,所以使用CRC选项代替有效载荷数据ECC功能可以帮助减少传输少量嵌入式数据的应用的电路实现成本。
6、状态机
1. Blanking:该状态对应于图像信息的H- Blanking。在这种状态下,LINK层要么在传输一行图像数据之前生成数据包Header,要么在数据包输出后等待PHY控制代码传输的完成。
2. Header transfer:该状态将数据包头从LINK层传输到PHY层。
3. payload data transfer。该状态从LINK层输出有效载荷数据(包括ECC)。
4. Footer transfer。该状态从LINK层传输数据包的Footer。
5. Finalize:该状态命令将表示数据包结束的控制代码从LINK层传输到PHY层。6. Mode change:该状态根据配置寄存器的设置,改变LINK层和PHY层的设置
7. Power save:该状态可以通过停止LINK层和PHY层的时钟和偏置电流等来降低功耗。在此状态下,TX和RX不能进行通信。(此状态也可用于改变LINK层和PHY层的设置)。)
8. Initialize:该状态指示PHY层开始Training sequence以从power save状态返回,并等待系统准备好进行通信。
五、PHY Layer
1、状态机
1. Idle code: 该状态表示除数据包传输外的空闲,并持续发送Idle code。
2.start code。该状态下传输表示数据包传输开始的start code。
3.data symbol:该状态从LINK层向互连网传输有效的包数据。
4.pad code。当没有收到来自LINK层的有效数据包时,该状态会传输假数据。
5.end code。该状态下传输的控制代码表示数据包传输的结束。
6.deskew code。该状态传输控制码,在数据包传输结束后调整通道间的偏移。
7.Standby Sequence: 该状态按照属性寄存器的设置传输待机序列。
8.High-Z : 该状态可以通过驱动互连到高阻抗状态,并在必要时停止时钟和其他操作来降低功耗。
9. fixed low。该状态在属性寄存器中设定的周期内持续驱动互连到差分低电平状态。
10. training sequence。该状态按照属性寄存器的设置传输training sequence。
2、控制码
显示了PHY控制码的定义和分配的8B/10B符号配置。
3、Symbol Encoding
采用8b/10b编码,控制码采用到的编表如下:
4、数据比特序
字节数据的第0位被输入到8b/10b端口A,10位符号数据作为串行数据从a开始传输。
5、波特率
SLVS-EC接口采用波特率。每个Lane的 PHY 比特率定义为下表中的波特率。
PHY总带宽一般由配置寄存器中的Lane Num设置控制,而不是波特率等级设置。因此,波特率应固定为波特率等级2(默认设置),而不是改变为波特率等级1,这是一个可选的设置。
六、小结
- 纠错码
整个SLVS使用了三类纠错码:RS码、CRC16、CRC32
纠错码 | 使用说明 |
RS码 | 用于有效载荷数据的纠错 |
CRC16 | 对数据包的纠错,存放在数据包Header |
CRC32 | 在有效载荷数据为嵌入式数据时进行纠错,存放在数据包的Footer。 |
- PHY control code
IDLE code 可以通过寄存器进行配置。默认值为D.00.0 x 4