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

SATA—Link层状态机

一、概述

Link层的状态机大致可以分为五类:

  1. 链路层空闲状态机
  2. 通信异常处理状态机
  3. 链路层发送状态机
  4. 链路层接收状态机
  5. 链路层电源管理下的状态机

二、链路层空闲状态机

链路层空闲状态机共包含两个状态L_IDLE、L_SyncEscape,每个状态下的处理机制与条状条件如下:

1、L_IDLE是在一个帧发送完成后进入,在此状态下发送SYNC原语。在此状态下根据条件共有8中跳转情况。

总结如下: 

事件编号触发条件目标状态技术要点
1Transport层请求帧传输 + PHYRDY²有效HL/DL_SendChkRdy主机/设备端分离路径(见Note 1)
2Transport层请求Partial态 + PHYRDY²,⁵L_TPM_Partial需满足Note 5电源管理限制
3Transport层请求Slumber态 + PHYRDY²,⁵L_TPM_Slumber低功耗模式入口条件
4Phy层接收X_RDY_P原语L_RcvWaitFifo启动接收缓冲准备流程
5Phy层转发PMREQ_P/S_P + 电源模式使能L_PMOff进入节能模式(如SATA Partial/Slumber)
6Phy层转发PMREQ_P/S_P + 电源模式禁用L_PMDeny拒绝节能请求(兼容性保护)
7Phy层转发非法原语 + Transport层无请求²,³保持L_IDLE静默丢弃未定义命令(Note 3)
8PHYRDYn信号失效L_NoCommErr物理层连接异常处理

2、L_SyncEscape:该状态用于处理FIS传输异常退出的中间状态,通过发送SYNCP原语实现协议层同步复位。

(1). 进入条件

当满足以下任一条件时进入该状态:

  • 传输层主动请求(Transport Layer请求中止当前FIS传输)
  • 协议错误触发(检测到非法状态转换或传输超时)

注:该状态仅由SYNC逃逸的发起方(主机或设备)进入,接收端应响应SYNCP但不进入此状态。

(2). 状态行为

状态行为发送SYNC原语
触发条件目标状态技术含义
收到非X_RDYp/SYNCp的任意DWORD保持L_SyncEscape持续等待有效同步信号
收到X_RDYpSYNCp跳转至L_IDLE正常退出路径(双向握手完成)
物理层信号PHYRDRYn有效跳转至L_NoCommErr物理层通信异常处理

 三、通信异常处理状态机

通信异常处理共有四个状态分别为L_NoCommErr、L_NoComm、L_SendAlign、L_RESET。

 1、L_NoCommErr:该状态用于向传输层上报PHY层未准备的错误

状态行为上报PHY层未准备的错误
触发条件目标状态技术含义
无条件L_NoComm只进入L_NoCommErr状态一次,用于上报错误状态,以终止传输层传输

 2、L_NoComm:等待PHY层通信恢复

状态行为发送ALIGN原语
触发条件目标状态技术说明
PHYRDYn有效保持L_NoComm物理层持续未就绪,等待恢复
PHYRDY有效跳转L_SendAlign启动链路校准流程(发送ALIGNp原语

3、L_SendAlign :发送对齐原语

状态行为发送ALIGN原语
触发条件目标状态技术说明
PHYRDYn有效跳转至L_NoCommErr上报错误状态
PHYRDY有效跳转L_IDLE链路恢复

4、L_RESET :复位链路层状态至初始条件

状态行为复位链路层
触发条件目标状态技术说明
链路层复位信号置位保持L_RESET状态复位链路层状态
链路层复位信号置位取消跳转至L_NoComm开始进行链路恢复

四、 链路层发送状态机

按照发送数据的顺序,发送状态机共有9个状态,具体状态的行为与跳转条件如下:

 该状态是主机端链路层(Device Link)的传输准备状态,核心功能是通过交X_RDY_P/R_RDY_P原语完成主机-设备的双向握手。 

触发条件目标状态协议行为
收到R_RDYp原语L_SendSOF设备确认就绪,准备发送帧起始符
收到X_RDYp原语L_RcvWaitFifo设备请求主机切换为接收模式(SATA是半双工,不能同时收发)
收到非标准DWORD(包括8b/10b错误解码、未定义的原语、违反SATA原语编码规则的数据)保持HL_SendChkRdy静默丢弃错误数据
PHYRDYn信号无效L_NoCommErr上报物理层错误至传输层,中止当前传输

 

 该状态是设备端链路层(Device Link)的传输准备状态,核心功能是通过交X_RDY_P/R_RDY_P原语完成主机-设备的双向握手。

触发条件目标状态协议行为
收到主机R_RDY_P原语L_SendSOF确认主机就绪,准备发送帧起始符
收到非R_RDY_P的任意DWORD保持DL_SendChkRdy持续发送X_RDYp直至收到有效响应
PHYRDYn信号有效L_NoCommErr物理层连接异常,触发错误恢复流程

后面的状态机还有很多,后面接着更新

 

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

相关文章:

  • Gmssl库的aes算法效率问题
  • 家具制造行业的现状 质检LIMS如何赋能家具制造企业质检升级
  • 见多识广7:KAIST(韩国高等科学技术院)——关注AI加速器方向
  • 复盘与导出工具最新版V23.0版本更新--新增韭菜异动轮动功能
  • 基于 Python 的后端开发学习路线
  • 【AI】mcp server是什么玩意儿
  • 【Linux网络】 HTTP cookie与session
  • DeepPrep:深度学习提升神经影像预处理
  • LeetCode算法题:电话号码的字母组合
  • Bodhi linux 系统详解
  • 分析红黑树工程实用的特点
  • 智能手表测试计划文档(软/硬件)
  • 读取.ini后缀类型的马达配置文件并进行赋值
  • AtCoder Beginner Contest 405(ABCD)
  • 搭建高可用及负载均衡的Redis
  • C++四种类型转换:static_cast、 dynamic_cast const cast、 reinterpret_cast
  • 详解RabbitMQ工作模式之通配符模式
  • 3.9/Q2,GBD数据库最新文章解读
  • 珠海金山2007逆向分析挑战赛-CrackMe看雪(九连环)(writeup)
  • 【运维】MacOS蓝牙故障排查与修复指南
  • 大地网接地电阻测试的必要性
  • Python如何使用进行风险管理和投资组合优化
  • 2025智能体基建在进化过程中带来的质变
  • 国外付费AI软件充值教程
  • 《棒球百科》MLB棒球公益课·棒球1号位
  • 02.Golang 切片(slice)源码分析(一、定义与基础操作实现)
  • VBA —— 学习Day6
  • 解读RTOS:第一篇 · RTOS 基础与选型指南
  • WebSocket的原理及QT示例
  • PHP 连接和使用 Kafka 的指南