一、SATA物理层概述

说OOB之前,首先得了解一下SATA结构以及物理层的含义。

SATA主要包括:应用层(Application Layer), 传输层(Transport Layer),链路层(Link Layer)以及物理层(Physical Layer), SATA结构如下图:

这四个主要部分的作用是什么呢?

Application Layer/Command Layer(可解读为同一层) :

  1. 最高层级的Layer,进行ATA或ATAPI command的执行,

  2. implementation上很多是用软件处理.

Transport Layer :

  1. 将Application Layer要做的Command转化成FIS的handshake,

  2. 对FIS的组成和解开.

Link Layer :

  1. 将要打出去的data做编码, 将收进来的data做解码,

  2. 维持Link Layer的handshake机制.

Physical Layer :

  1. Tx和Rx串行流(serial stream),

  2. 上电时序,

  3. 支持SATA电源管理选项,

  4. OOB(Out-of-Band)信号的产生与检测.

从上面的介绍中,我们看到物理层中有一个关键的功能就是OOB(Out-of-Band)信号的产生与检测, 这就是我们今天的主角~

二、OOB(Out of Band)信号解析

SATA信号链结的建立主要是靠OOB(Out Of Band)的检测实现的,并且向上层Link Layer提供了物理层的链结情况。

OOB主要的作用包括以下几点:

初始化(initialization),

传输速率的协商与对接(Speed negotiation),

—透过OOB handshake,host与device可以决定要在Gen1,Gen2或Gen3做data传输。

重置(Reset),

从省电状态(Slumer/Partial)的唤醒,

OOB信号实际上主要有COMRESET/COMINIT与COMWAKE三个PHY信号线。

1、COMRESET:Host对Device进行硬件重置以及SATA信号的重新建立。

2、COMINIT:由Device送往Host,要求信号初始化。

3、COMWAKE:Host或是Device装置可以激发该信号来将PHY从省电状态(Slumer/Partial)抽离。

COMRESET/COMINIT由两部分相互间隔构成,一部分是突发长度为160个UI (Unit Interval)约106.7ns的ALIGN,另一部分是长度为480UI约320ns的Idle。

需要注意的是,虽然COMREST和COMINIT形式上是一样的,但COMREST只能从host到device,而COMINIT只能从device到host。

COMWAKE同样是有两部分相互间隔组成,一部分是突发长度为160个UI (Unit Interval)约106.7ns的ALIGN,另一部分是长度为160个UI约106.7ns的Idle。

SATA信号通迅链结建立过程是什么?我们先来看一幅图哈~

看不懂?没关系,我们一步步的来解析一下详细的过程:
1、主机重置,发出COMREST。
2、设备检测到COMRESET后以COMINIT回应。
—COMINIT为重新连接开始信号,设备可以在任意时间发送COMINIT重新建立连接。
3、若没有COMINIT的通知,HOST就会重复步骤1,直到DEVICE回复为止,这也是系统允许热插拔的关键。
4、主机calibrate,发出COMWAKE。
5、设备接收到COMWAKE后,设备连续发送6个COMWAKE信号,接着连续发送ALIGN进行传送速度的协商。
6、主机锁存资料。主机接收到COMWAKE后,以支援的最低速率连续发送D10.2资料,同时锁存检测接收的资料,当检测到设备发送的ALIGN后,以接收的速率将ALIGN转发给设备。
注:D10.2是0101010101…这样0和1交替的波形, 可以让device端更容易做clock recovery的动作.
7、主机在发送了COMWAKE后至少要在880ps内接检测到ALIGN,否则主机重启上电序列重新检测设备,直到应用层将其终止。
8、设备锁存资料,检测到ALIGN后发送同步信号SYNC,通讯建立成功,进入到正常操作模式。如在54.6us内未检测到ALlGN,则进入错误处理,等待重新连接。
9、当主机接收到三个非ALIGN后,链结建立完成,进入正常操作。

Device与Host连接是首先从Device支持的最高速开始的,如果最高速不满足则用较低速率再次匹配,直到最低速率也不能匹配后Device将进入error状态; 换速等待时间为54.6us(2048个ALIGN DWORD传输时间);

三、实例分享

我们来看个小编工作中遇到的一个实例–fail现象是正常上电之后SATA SSD无法被识别。

抓取正常上电之后fail sample SATA trace如下:

从上面的SATA trace结合前面SATA通讯链路建立的9个步骤,我们可以发现第六步之后就出问题了:

Device传送最高速度(6.0G)的Align无法顺利被SATA analyzer解析出来,再降速送Align(3.0G, 1.5G)依然无法被SATA analyzer解析, host也没有回应, speed negotiation失败。最终,Host再次发送COMRESET,进入死循环。
正是由于SATA信号通讯链路无法建立,导致SATA SSD在上电之后始终无法被识别到。
最后附上SSD可以被正确识别的SATA trace供各位看官参考:

浅析SATA Physical Layer物理层OOB信号相关推荐

  1. 第2节 物理层physical layer——如网线和光纤等相关知识

    物理层physical layer 1 传输信号 2 数字信号的传输单元:bit 比特 3 光纤 4 网线 1 传输信号 (1)电信号→模拟信号: 特点: ①在传输过程中信号衰减: ②噪音干扰造成信号 ...

  2. 计算机网络笔记Part2 物理层(Physical Layer)

    本人计算机网络笔记总目录 计算机网络笔记Part1 概述 计算机网络笔记Part2 物理层(Physical Layer) 计算机网络笔记Part3 数据链路层(Data Link Layer) 计算 ...

  3. 《网络安全工程师笔记》 第十七章:物理层(physical layer)

    注:本笔记来自温晓飞老师的网络安全课程 第十七章:物理层(physical layer) 第一章:虚拟化架构与系统部署 第二章:IP地址详解 第三章:进制转换 第四章:DOS基本命令与批处理 第五章: ...

  4. [4G5G专题-36]:物理层-同步信号块SSB与小区主同步PSS、小区辅同步SSS

    目录 第1章 同步信号块SSB概述 1.1 与同步信号块SSB相关的无线时频资源 1.2 同步信号块SSB概述 1.3 同步信号块SSB的来源和背景 1.4 理解本文的的所需要的前序知识 第2章 5G ...

  5. The Physical Layer(Computer networks)

    Computer networks--The Physical Layer •Theoretical Basis for Data Communications •Guided Transmissio ...

  6. 《计算机网络》第二章:物理层(The Physical Layer)

    Copyright(C)肖文栋教授@北京科技大学自动化学院 内容安排 物理层基本介绍 数据通信的理论分析 导向传输媒体 无线传输 通信卫星 数字调制 信道复用技术 公共电话交换系统 移动电话系统 一. ...

  7. MIPI CSI-2笔记(2) -- 物理层Physical Layer

    CSI-2 lane管理层和D-PHY或C-PHY物理层连接.需要注意的是链路两端的接口必须要匹配:D-PHY发送器和C-PHY接收器并不能工作,反之亦然. D-PHY物理层 D-PHY通常由一个时钟 ...

  8. PHY(Physical Layer,PHY)通俗理解

    碎碎念:最近更新的周期有点长... 主要最近和朋友一起重新开了一个公众号(FPGA Breaker),这个公众号也和本公众号垂直深度,不会和本公众号内容有太多重叠,主要是本人想推进国内开源IP的使用和 ...

  9. Computer Networking—— physical layer QA

    2-01 物理层要解决哪些问题? 物理层的任务是传输数据比特流. 物理层的作用是尽可能地屏蔽掉传输媒体和通信手段的差异,使得物理层上面的数据链路层感觉不到这些差异.(分层之间的独立性,灵活性) 2-0 ...

最新文章

  1. 使用Python,EoN模拟网络中的疾病扩散模型,并结合matplotlib绘图
  2. PHP学习笔记4:字符串与正则
  3. fake it until you make it
  4. 零云九歌小组KTV点歌系统简介
  5. 疲劳驾驶样本集_谷歌AI最新3D数据集,1.5万张动图,让AR主宰你的生活
  6. 大数据学习系列----大数据项目的思考
  7. 思科模拟器企业网站服务器配置,思科模拟器服务器配置
  8. 1005. 继续(3n+1)猜想 (25) PAT乙级真题
  9. Python debug —— invalid literal for int() with base 10
  10. php加密密码解析,php密码加密解密
  11. 卓有成效的管理者(笔记)——序言
  12. 广州地铁22号线将延伸至深圳,全线土建工程已完成57%
  13. x5maxl l android 6,Hi-Fi新纪元 4.75mm超薄vivo X5Max首测
  14. 使用python将多份pdf文件合并成一份
  15. 黑鲨怎么修改服务器,黑鲨自定义安装系统教程图解
  16. 男士必须收藏:男士健身方案
  17. CAD得到所有图层名(网页版)
  18. java apache 日志_了解Apache的访问日志
  19. 未来5年IT产业及网络市场发展趋势分析
  20. 网站已迁移、域名未转出,收到阿里云的“备案号可能被取消接入”邮件提示该怎么办。

热门文章

  1. 由蜜罐引发的物联网安全小谈
  2. 微信小程序开发中遇到的问题(前台用表格形式显示数据)
  3. git与Coding仓库代码创建
  4. 【Windows程序设计】模拟时钟
  5. 字典序及1-n之间的数按字典序排列
  6. css-选择器使用详解
  7. 云计算、大数据、人工智能的关系
  8. chrome浏览器显示完整网址
  9. 关于英语学习的听力训练
  10. Twitter – 媒体与沉默的大多数