物理编码子层(PCS)的功能是负责生成空闲序列、通道剥离、扰码和编码以供传输,以及接收时的解码、通道对齐、解扰码和解剥离。PCS在链路传输时使用64b/67b编码。
PCS发送端主要执行以下功能:
1,根据需要添加链接CRC-32和填充物。
2,将等待传输的数据包和控制符号作为字符流取消队列。
3,将数据分散到多个通道上,以并行的方式进行传输。
4,对输出数据流进行扰码。
5,生成空闲序列,当没有可用于传输的包或控制符号时将其插入每个通道的传输字符流中。
6,将每个通道的字符流独立编码成67位的并行码字。
7,将生成的67位并行码字传递到PMA层
在接收功能方面,PCS执行以下操作:
-
解码:对于每个通道,独立地将接收到的67位并行码字流解码为字符。这是数据恢复的关键步骤,确保原始数据可以被准确地重新构造。
-
错误标记:将从错误码字解码得到的字符标记为无效。这是错误检测和纠正机制的一部分,有助于维持数据的完整性和准确性。
-
字符流对齐与重新组合:如果链接使用多个通道,PCS将对字符流进行对齐,以消除通道之间的偏差,并从每个通道的字符流中重新组合(去剥离)成单一的字符流。这对于确保数据在多个通道间同步传输至关重要。
-
解扰:对传入的数据流进行解扰。在传输过程中,数据可能会经过扰码处理以增加鲁棒性,解扰则是这一过程的逆操作。
-
传递数据:将解码后的数据包和控制符号的字符流传递给更高层。这确保了数据可以在SRIO协议栈中继续向上层处理。
-
移除CRC和填充:根据需要移除链路CRC-32(循环冗余校验)和填充。CRC用于检测传输过程中的错误,而填充可能是为了满足某些编码或传输格式的要求.
PMA
物理介质连接(PMA)层的功能主要是负责在每个通道上将67位并行码字序列化为串行比特流,以及从串行比特流中反序列化回67位并行码字。在接收数据时,PMA层负责将接收到的比特流对齐到67位码字边界,这一过程也是基于每个通道独立进行的。然后,它向PCS层提供每个通道的连续67位码字流。高于PCS层的层次无法观察到67位码字。
如果LP-Serial端口支持波特率发现或自适应均衡化,这些功能也将在PMA层中执行。波特率发现通常用于自动检测并设置与接收设备匹配的传输速率,而自适应均衡化则用于动态调整信号均衡,以补偿传输通道中的信号损失或畸变,从而提高信号质量和传输效率.
注:1,pma层在fpga开发中一般由硬核和专用ip实现
2 ,在srio协议中只有三代及以上的,以三代为例,速率达到10.3125G 和12.5G 才会使用64b/67b编码的pcs层,低于该速率的采用8b/10b编码。