一、故事前传
在之前的文章中,我们有提到SATA主要包括:应用层(Application Layer), 传输层(Transport Layer),链路层(Link Layer)以及物理层(Physical Layer), SATA结构如下图:
较为详细解释请见之前的文章"浅析SATA Physical Layer物理层OOB信号",我们这里主要解析Link layer相关内容。
二、SATA Link Layer解析
我们先来看看link layer的结构
从上面Link layer的结构,我们可以看到link layer的作用大致可以包括以下几点:
- Frame flow control
- CRC的生成与检测
- 对数据与控制字符的Scrmable/Descramble
- 8b/10b编解码
- 将传输层进来的数据转为Frame
Link layer在SATA通讯中参与的过程可以这样理解:
- 通过插入各种primitive基元(详细解析请见本篇后面内容)进行流量控制,在成功传递完有效资料后,链结层(Linker layer)等待对方的应答,并把结果传给上层;
- 传输层(transport layer)传送进来FIS,链结层(Linker layer)计算CRC值,加扰(Scramble)和8B/10B编码后,加上SOF和EOF封装成frame ,传递给物理层(Physical layer)。注:SOF=Start of Frame, EOF=End of Frame。
- 从物理层接收到有效资料时,进行8B/10B解码、解扰(Descramble)以及CRC效验,然后将资料提交到传输层。
后续文章对几个关键的部分展开解析,敬请关注!