SATA系列专题之二《2.2 Link layer链路层加扰/解扰/CRC解析》
文章目录
前言
一、故事前传
我们之前说到Link layer的结构,link layer的作用大致可以包括以下几点:
二、加扰(Scramble)/解扰(Descramble)
资料在进行8b/10b 编码之前,必须先行资料加扰(Scramble)的处理,目的是為了降低EMI(Electromagnetic Interference,电磁干扰)。
实现方式是由LFSR(Linear Feedback Shift Register)的方式来实践;
基本原理是将资料的8 位元与LFSR 寄存器的16 位元输出做XOR 的处理。
规定LFSR的初始值為0xFFFF,
LFSR必须在SOF标志前就要被初始化,
在SOF与EOF之间的资料,包括CRC值都需要加扰。
对于控制基元Primitive是不需要加扰的 。
SATA协议中资料处理流程如下 :
-
对于一个资料包,在SOF后的资料就必须计算其CRC值,同时这个资料必须和扰码器的输出进行XOR操作,操作结果送往8B/10B编码器编码;
-
反之,在接收方,资料先通过10B/8B解码,再与扰码器的输出结果进行XOR操作,最后计算资料的CRC值。
三、CRC(Cyclic Redundancy Check)循环冗余校验码
CRC的计算范围包括SOF和EOF之间的所有资料(即不包括控制基元),以Dword(32-bit)为单位,如果资料的内容不是Dword的整数倍,需要在资料包的后面用'0’来补充。
协议规定CRC的初始值為0x52325032,
SOF和EOF之间的所有资料不能超过2064个Dwords。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人