目录
一、简介
本文主要讲解SATA底层FW中HOST和DEVICE进行FHY LINK过程中OOB(Out-of-Band)信号的产生与检测。
二、总体解析
2.1 OOB作用
OOB主要的作用如下:
1、初始化(initialization);
2、传输速率的协商与对接(Speed negotiation);
透过OOB handshake,host与device可以决定要在Gen1,Gen2或Gen3做data传输。
3、重置(Reset);
4、从省电状态(Slumer/Partial)的唤醒。
2.2 OOB信号的组成
OOB信号实际上主要有COMRESET/COMINIT与COMWAKE三个PHY信号线。
COMRESET:Host对Device进行硬件重置以及SATA信号的重新建立。
COMINIT:由Device送往Host,要求信号初始化。
COMWAKE:Host或是Device装置可以激发该信号来将PHY从省电状态(Slumer/Partial)抽离。
COMRESET/COMINIT由两部分相互间隔构成,一部分是突发长度为160个UI (Unit Interval)约106.7ns的ALIGN,另一部分是长度为480UI约320ns的Idle。
COMWAKE同样是有两部分相互间隔组成,一部分是突发长度为160个UI (Unit Interval)约106.7ns的ALIGN,另一部分是长度为160个UI约106.7ns的Idle。
需要注意的是,虽然COMREST和COMINIT形式上是一样的,但COMREST只能从host到device,而COMINIT只能从device到host。
2.3 总体phy link过程
1、HOST重置,一直发送COMREST;
2、DEVICE检测到COMRESET后以COMINIT回应;
COMINIT为重新连接开始信号,设备可以在任意时间发送COMINIT重新建立连接。
注意:若没有COMINIT的通知,HOST就会重复步骤1,直到DEVICE回复为止,系统允许热插拔的关键。
3、主机Calibrate,发出COMWAKE;
4、设备接收到COMWAKE后,设备连续发送6个COMWAKE信号,接着连续发送ALIGN进行传送速度的协商;
5、主机锁存资料。主机接收到COMWAKE后,以支援的最低速率连续发送D10.2资料,同时锁存检测接收的资料,当检测到设备发送的ALIGN后,以接收的速率将ALIGN转发给设备;
注:D10.2是0101010101…这样0和1交替的波形, 可以让device端更容易做clock recovery的动作;
6、主机在发送了COMWAKE后至少要在880ps内接检测到ALIGN,否则主机重启上电序列重新检测设备,直到应用层将其终止;
7、设备锁存资料,检测到ALIGN后发送同步信号SYNC,通讯建立成功,进入到正常操作模式。如在54.6us内未检测到ALlGN,则进入错误处理,等待重新连接;
8、当主机接收到三个非ALIGN后,链结建立完成,进入正常操作。
2.4 整体PHY LINK Trace
通过SATA协议分析仪抓到整体的建链Trace如下:
2.5 PHY LINK状态查询
查询每个PORT对应的P#CTL,具体BIT状态内容如下:
DET Detection,表示接口设备检测和Phy状态。
0000b 未检测到设备且未建立Phy通信
0001b 检测到设备存在,但Phy通信未建立
0011b 检测到设备存在并建立Phy通信
0100b 由于接口被禁用或运行在BIST环回模式下,导致Phy处于离线模式
SPD Speed,表示协商建立的接口通信速率
0000b 未协商速度(设备不存在或通信未建立)
0001b 协商为Gen1通信速率(1.5 Gbps)
0010b 协商为Gen2通信速率(3 Gbps)
0011b 协商为Gen3通信速率 (6 Gbps)
IPM interface power management,显示当前接口电源管理状态
0000b 设备不存在或通信未建立
0001b 接口处于Active状态
0010b 接口处于Partial状态
0110b 接口处于Slumber状态