LTPI协议的理解——2、LTPI实现的底层架构
前言
前面讲了LTPI的定义和大概结构,接下来继续理解LTPI硬件实现的底层架构
一、体系结构
1、External Interface Controllers (也称为I/O中继器 I/O Relay)负责捕获(SCM)和重建(HPM)LPTI通道上的物理接口:
- GPIO
- I2C/SMBus
- UART
- OEM
- DATA
CSR–配置和状态寄存器为BMC或其他设备提供了访问和控制SCM和HPM内部逻辑的方法
2、Channel Controller
这个模块负责: - 链路状态机控制(链路训练和接口配置)
- 生成传出LTPI帧
- 解析传入LTPI帧
- CRC校验和生成和验证
- 逗号符号追逐和锁定
- 8b/10b编码和解码
3、SerDes
LVDS链路上数据的串行化和反串行化
从高级体系结构的角度来看,SCM CPLD和HPM CPLD LTPI体系结构构建块在SCM和HPM之间被认为是对称的,即两个CPLD上的TX路径和RX路径通常遵循相同的操作理论。SCM和HPM之间存在特定差异,例如,HPM和SCM训练要求的差异,或特定通道(如SMBus)的不同配置,其中一个CPLD将连接到SMBus Controller,而另一个连接到SMBus target。HPM和SCM的源代码在LTPI部分大部分是相同的。
三、实现细节
LTPI框图如下图所示:
SCM和HPM中的TX路径的工作方式如下:
1.物理接口上的信号由相应的控制器/中继器捕获:
a.I2C中继器–I2C/SMBus接口
b.GPIO控制器-GPIO接口
c.UART控制器-UART接口
d.OEM控制器-OEM接口
e.数据总线控制器-数据通道桥接至外部接口
2.LTPI信道控制器生成LTPI帧和CRC校验和
a.每个LTPI信道都在LTPI帧内的专用位字段上编码
3.然后使用8b/10b编码对帧进行编码
a.帧标志用帧逗点符号扩展(K码)
4.10b编码帧在LVDS TX链路上串行化
SCM和HPM中的RX路径的工作方式如下:
1、LVDS流量被捕获并反序列化到10b编码的FIFO缓冲器中
2、在10b数据流中,帧K码被捕获为LTPI帧的开始
a.该帧被解码为8b编码
3、再次检查帧的CRC校验和,并将其分解为LTPI信道
4、使用信道控制器/中继器在各个信道上重建信道状态
a.I2C中继器–I2C/SMBus接口
b.GPIO控制器-GPIO接口
c.UART控制器-UART接口
d.OEM控制器-OEM接口
e.数据总线控制器-数据通道桥接至外部接口
四、物理接口信号传输方法
LTPI使用以下通用方法来采集和隧道传输各种LTPI通道:
- 采样–I/O状态由LTPI进行采样,采样在LTPI帧中进行隧道传输
- 事件/状态检测-根据接口状态,为通道定义一组事件/状态,并在LTPI帧中进行隧道传输和隧道传输
- 随机存取读/写请求–外部接口触发随机存取内存映射通道
LTPI支持的接口也可以根据给定接口的RX和TX方向的同步来分类,即接口的隧道传输是否需要TX和RX方向在彼此之间同步:
- 异步-对于给定的信道和接口/链路,LTPI TX和RX路径是独立的
- 同步-对于给定的信道和接口/链路,LTPI TX和RX路径需要同步,以允许接口在隧道传输后正确工作
根据这些定义,LTPI通道可以如下面的表所示进行表征。
总结
1、类似于高速收发器中需要字节对齐,K码检测,这个协议也涉及到这些
2、用到了8B/10B编码,那么帧内容应该都是以字节为单位进行组帧,同时在帧的头部设置为K comma用于判断是什么类型的帧,尾巴加上CRC校验,CRC校验的内容是不包含K Comma的其他内容
2、GPIO UART这些因为是直通的,因此可以直接进行采样
3、而I2C和DATA BUS这些是需要交互的,不能像GPIO UART那么简单的操作。例如I2C Master发起写操作的时候,写入7bit地址需要等待I2C Slave的ACK。这些都无法只通过一根线来进行传输。同时在等待ACK的时候,必须暂停I2C Master的工作,那么这里又使用了I2C的时钟扩展特性。