SATA——PHY层状态机

目录

一、SATA上电的三种状态

PHY层状态机梳理

主机侧 PHY层初始化状态机梳理

状态机

一、SATA上电的三种状态

电源上电三种状态
  • PHYRDY:PHY层逻辑以及主要的PLL都被激活。PHY层处于同步状态可以正常的接收和发送数据。
  • Partial :PHY层逻辑上电,但是处于节能模式。如果不支持Partial到Slumber状态的自动转换,从该状态退出应该不大于10us。如果支持Partial到Slumber状态的自动转换,那么退出延迟不大于Slumber退出延迟的最大延迟。
  • Slumber: 休眠状态,最大退出时间不超过10ms。

PHY层状态机梳理

主机侧 PHY层初始化状态机梳理

(1)HP1:HR_Reset:用于传输COMRESET信号。如果支持异步信号恢复,则需要将ResumePending(相当于一个控制信号)置为0。

(2)跳转条件:

  • 上电复位和复位请求均失效->HR_AwaitCOMINIT
  • 上电复位或者复位请求有效->HR_RESET

(3)进入该状态的条件:

  • 上电复位
  • 复位请求
  • 接收到COMINIT信号(支持异步恢复的主机,并且是在HP2、HP2B状态之外接收)

(4)COMRESET发送规范:6次突发,或者是6次突发的整数倍

(5)COMRESET发送的时刻:

  • 在整个状态期间持续发送
  • 从进入该状态的时候开始发送,到离开该状态时结束发送
  • 离开该状态时发送

(5)支持异步恢复的主机,在接收到的COMINIT信号失效后的10ms内,应该响应COMRESET信号。

(1)接口处于静止状态

(2)跳转条件

  • 从设备中识别COMINIT信号,跳转至 HR_AwaitNoCOMINIT
  • 没有从设备中识别到COMINIT信号(不支持异步信号恢复或者在HP2状态下RetryInterval变量没有超时),继续在该状态保持
  • 没有从设备中识别到COMINIT信号(支持异步信号恢复并且在HP2状态下RetryInterval变量超时),跳转至HR_RESET

RetryInterval变量:对于支持异步信号恢复的主机,重新尝试的时间计数

(1)接口处于静止状态

(2)跳转条件

  • 已经接收不到设备发送过来的COMINIT信号 ,跳转到下一状态HR_Calibrate
  • 还能够接收到COMINIT信号 ,继续在该状态保持

对于不支持异步信号恢复的主机,这个状态可以在接收到COMINIT信号后异步进入(上电复位或复位请求除外)

(1)性能校准

(2)跳转条件

  • 校准完成或者不需要校准 ,跳转到 HR_COMWEAK
  • 校准未完成 ,继续在改状态保持

这个状态对于不需要矫正的设备可以绕过。

(1)发送COMWEAK信号序列

(2)跳转条件

  • 没有接收到设备发送过来的COMWEAK信号,跳转至HR_AwaitCOMWEAK状态
  • 已经接收到COMWEAK信号,则直接跳转至HR_AwaitNoCOMWEAK

(1)接口静止

(2)跳转条件

  • 接收到COMWEAK信号,则跳转至HR_AwaitNoCOMWEAK
  • COMWEAK信号没有识别到(不支持异步信号恢复或者在HP2状态下RetryInterval变量没有超时),继续在该状态保持
  • COMWEAK信号没有识别到,支持异步信号恢复或者在HP2状态下RetryInterval变量超时,并且ResumePending = 0,跳转至HR_RESET,从新开始发送COMRESET信号
  • COMWEAK信号没有识别到,支持异步信号恢复或者在HP2状态下RetryInterval变量超时,并且ResumePending = 1,跳转至HR_COMWEAK,从新开始发送COMWEAK信号

(1)接口静止

(2)跳转条件:等到识别不到COMWEAK信号,则跳转至HR_AwaitAlign,否则,不跳转。

(1)主机以最低速率发送D10.2字符

(2)跳转条件

  • 检测到ALIGN原语后跳转至HR_AdjustSpeed
  • 没有检测到ALIGN原语,并且在该状态已经停留873.8us,跳转至HR_Reset
  • 没有检测到ALIGN原语,并且在该状态停留时间没有超过873.8us,继续停留在该状态

注意:

(1)主机应在COMWAKE信号撤销后不超过533 ns(20个Gen1双字周期)内开始发送D10.2字符

(2)设备在释放COMWAKE信号(通过保持空闲状态超过175 ns)后,允许有53.3 ns(2个Gen1 DWORD时间)的窗口才开始发送有效字符。在此窗口期内,总线处于空闲状态,可能受到其他设备的串扰影响。需特别防范串扰导致ALIGNP原语的误检测.

(1)接口非静止,但是没有被定义

(2)跳转条件

  • 已经调整到适当的速度,跳转至HR_SendAlign
  • 没有调整到适当的速度,继续在该状态调整

注意

(1)主机传输无效信号的最大时间周期为53ns

(1)主机发送相同速度的ALIGN原语

(2)跳转条件

  • 发现三个连续的NON_ALIGN原语,跳转至HR_Ready
  • 没有发现三个连续的NON_ALIGN原语,继续在该状态保持

注意:

(1)非ALIGNP原语可通过检测字节0位置的K28.3控制字符来识别

(1)接口可以正常发送数据

(2)跳转条件

  • Partial信号被置位,跳转到HR_Partial
  • Slumber信号被置位,跳转到HR_Slumber
  • 未收到电源管理请求(如PMREQ_P/S),不支持异步信号恢复,未启动信号恢复轮询,已检测到有效信号,继续保持该状态
  • 未收到电源管理请求(如PMREQ_P/S),支持异步信号恢复,启动信号恢复轮询,没有检测到有效信号,跳转至HR_RESET

例子:

企业存储阵列中的硬盘故障处理:

某硬盘突发断电(未发送PMREQ),主机检测到信号丢失。

主机检查自身配置:

若不支持异步恢复或未启用轮询 → 记录错误日志,等待人工干预。

若信号3秒内自动恢复 → 继续I/O操作,无需触发复位。

(1)接口静止

(2)跳转条件

  • Partial信号已经撤销,并且没有被发现COMWEAK信号,则跳转至HR_COMWEAK
  • Partial信号已经撤销,并且发现COMWEAK信号,则跳转至HR_AwaitNoCOMWEAK
  • Slumber信号置位,并且支持Partial状态到Slumber状态的自动跳转
  • Partial信号置位,则一直处于此状态

(1)接口静止 如果主机支持异步信号恢复,则将ResumePending设置为1

(2)跳转条件

  • Slumber信号撤销,并且没有发现COMWEAK信号,跳转至HR_COMWEAK
  • Slumber信号撤销,并且发现COMWEAK信号,跳转至HR_AwaitNoCOMWEAK
  • Slumber信号置位,继续在该状态保持

状态机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值