当前位置: 首页 > web >正文

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信号置位,继续在该状态保持

状态机

http://www.xdnf.cn/news/895.html

相关文章:

  • 工作记录7
  • 详解.vscode 下的json .vscode文件夹下各个文件的作用
  • STM32 HAL库 FreeRTOS 软件定时器的使用
  • 新书速览|OpenCV计算机视觉开发实践:基于Qt C++
  • 百度地图MCP:AI助手的地理智能跃升——让位置服务“触手可及”
  • SBTI科学碳目标认证有什么要求?SBTI认证的好处?
  • 【英语语法】词法---连词
  • lmgrd web api调用
  • 【英语语法】词法---介词
  • 数据结构第六章(五)-拓扑排序、关键路径
  • Mysql卸载
  • 电力MOSFET漏源过电压与窄脉冲自保护驱动电路
  • TM1640学习手册及示例代码
  • 博客系统-邮件发送-nginx-服务部署
  • 《深入解析C++中的explicit关键字:防止隐式转换的利器》
  • word显示段落标记符(¶)而不是回车符
  • spring boot使用Scheduling实现动态增删启停定时任务
  • 【sylar-webserver】重构日志系统
  • 数据仓库 vs 数据湖:架构、应用场景与技术差异全解析
  • 13.QT-DateTime Edit|Dial|Slider|日期计算器|调整窗口透明度|调整窗口大小|自定义快捷键(C++)
  • 中通 Redis 集群从 VM 迁移至 PVE:技术差异、PVE 优劣势及应用场景深度解析
  • 深入理解HotSpot JVM 基本原理
  • C++学习之游戏服务器开发十一DOCKER的基本使用
  • 【数学建模】随机森林算法详解:原理、优缺点及应用
  • 【Python 02 】数值类型、字符串、格式化输出
  • Java反射全解(八股)
  • 文档处理控件Aspose.Words 教程:在 Word 中删除空白页完整指南
  • 2025年二级造价工程师备考要点分析
  • spark和hadoop的区别
  • 【C++游戏引擎开发】第19篇:Compute Shader实现Tile划分