SATA全称Serial Advanced Technology Attachment,即串行硬盘接口技术。SATA 是一种完全不同于并行 PATA 的新型硬盘接口类型,采用串行方式传输数据。与并行PATA相比,SATA具有较大的优势。首先,SATA 由于采用串行差分方式传输数据,并使用嵌入 式时钟信号,对传输数据进行编解码处理,这就彻底解决了并行总线 PATA 无法解决的四大难题, 即码间干扰、信号偏移、串音干扰和直流偏置。这使 SATA 的工作频率可以提升至非常高的水平, 同时具备了更强的纠错能力,进一步提高了传输质量。
SATA3.0 协议继承了先前的协议结构,同样是由物理层、链路层、传输层和应用层构成,其 结构如图 2-1 所示。其中物理层位于协议的最底层,它的功能是通过信号检测以及原语交互实现 主机端控制器与设备端控制器的链路初始化,建立数据通道,实现并行转串行、串行转并行操作, 并且从接收的数据中提取时钟。链路层位于物理层的上一层。链路层分为发送和接收两个过程, 在发送数据时,发送模块首先计算需要发送数据的 32bitsCRC 校验和,然后将该校验和与需要发 送的有效数据进行加扰,并将计算得到的 CRC 校验和放在有效数据帧的最后一帧,最后 8B/10B 编码后发送到物理层。设备端在收到数据后,通过计算对比 CRC 校验和来检验数据传输是否正 确;在接收数据时,首先对接收到的有效数据进行 8B/10B 解码和解扰码操作,在恢复原始数据 后,计算本组数据的 CRC 校验和,并与设备端发来的校验和比较,验证正确性。传输层同样分 为发送和接收两个过程,在发送数据时,会按照要求将需要发送的数据封装成协议规定的 FIS 帧 数据;而在接收数据时解析收到的 FIS 帧,判断该 FIS 帧是哪种类型的帧,并将解析出的信息发 送到应用层。应用层是整个协议的顶层,应用层负责命令解析、寄存器值更新以及实现 DMA 方 式的数据读取。
1.2 物理层分析
物理层作为整个协议的最底层,采用带外信号( Out Of Band,OOB)与设备建立链接,以下简称 OOB 信号。协议将物理层分为两个模块:控制模块和模拟前端。控制模块通过状态机的状态转换 来实现主机与设备的原语信号交互以及通信链路的建立;物理层的模拟前端通过物理层的高速差 分电路和 OOB 信号控制电路组成。
物理层实现的功能主要有:
1.实现速度为 6Gb/s 的差分比特流数据的接收与发送;
2.实现 40bits 数据的串转并、并转串操作;
3.在传输的比特流中实现有效数据提取以及时钟提取;
4.通过检测 K 码字符 K28.5 对齐数据;
5.控制 OOB 的检测与发送,实现物理层通信链路的初始化;
6.实现省电以及休眠两种模式和速率匹配调节;
7.反馈当前工作状态到链路层;
8.可实现能选择的阻抗匹配调节;
9.能够对设备端发起的 BIST 操作做出应答。
OOB 信号被用来与设备进行初始化连接,因此与其他信号相比,具有较高的优先级。SATA 协议规定了三种 OOB 信号,分别是:COMWAKE、COMRESET 以及 COMINIT,它们均是通过 K28.5,D10.2 和 D27.3 不同排列组合构成的。COMINIT 和 COMRESET 信号有着相同的结构, 都是在时长 320ns 的空闲之间插入 106.7ns 的 ALIGN 原语,使原语与空闲的时间比为 1:3,如 图 2-3 所示。COMRESET 信号由主机端发送,而 COMINIT 信号由设备端发送是 COMINIT 信号 和 COMRESET 信号的区别。
COMWAKE 信号的结构是在时长 106.7ns 的空闲插入同等时长的 ALIGN 原语,从而实现原 语与空闲的时长比为 1:1,其信号结构如图 2-4 所示。