SATA协议.ppt_第1页
SATA协议.ppt_第2页
SATA协议.ppt_第3页
SATA协议.ppt_第4页
SATA协议.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SATA协议简介 SATAProtocol 第一部分物理层 SATAProtocol SATAProtocol 物理层的功能 以1 5Gbps 3 0Gbps或者6Gbps的速率传输DNRZ串行数据流 发送端和接收端提供100欧姆的终端匹配电阻 将链路层接收的并行数据进行串行化之后发送 接收高速串行数据转换成并行数据 包括从串行数据流中进行数据提取和时钟恢复 检测ALIGN原语 进行数据对齐 带外信号的接收和发送 使用带外信号进行SATA接口初始化和主从之间速率协商 向链路层发连接状态 已连接 未连接 已连接但是速率协商失败 SATAProtocol 物理层的主要状态 ResetCOMINITAwaitCOMWAKEAwaitNoCOMWAKECalibrateCOMWAKESendAlignReadyParity SlubmberReduceSpeed SATAProtocol 物理层上电初始化 SATAProtocol 电源管理 Partial模式 物理层部分电路进入休眠模式 能够在10us之内被唤醒 SATAProtocol Slumber模式 与Partial模式相比可以关闭更多的电路 能够在10ms之内被唤醒 第二部分链路层 SATAProtocol 链路层的功能 与对方的链路层相互协商传送帧和原语 接收传输层传送的数据 Dword 计算数据的CRC校验值 给数据加上帧头 帧尾和CRC校验信息 接收对方链路层的数据信息 进行CRC校验 移除数据中的帧头 帧尾和CRC校验信息 帧流量控制 向传输层报告传输状态 8b 10b编解码 对数据加扰 解扰 SATAProtocol 链路层数据结构 SATAProtocol 链路层原语 SATAProtocol DMAT原语 功能 通知发送方停止数据传送 主机到设备的数据传输 主机收到DMAT原语之后 会停止数据发送 开始发送CRC和EOF原语 关闭DMA 保存当前DMA的状态 设备之后可以发送DMAActiveFIS重新激活主机DMA 继续数据传送 设备到主机的数据传输 设备收到DMAT原语之后 设备会永久终止本次数据传输 SATAProtocol CONT原语 功能 避免发送长串重复原语 减少电磁干扰 接收方收到CONT原语之后会认为当前发送方一直发送CONT之前的最后一个原语 直到收到另外一个原语 设备和主机必须支持接收和处理CONT原语的功能 可以选择是否支持发送CONT原语的功能 CONT原语之后的数据要加扰 SATAProtocol 流量控制 接收方为了避免接收数据缓冲区溢出 使用HOLD原语进行流量控制 在接收数据缓冲区将要满的时候 接收方会发送HOLD原语通知发送方暂停数据发送 由于HOLD原语传到发送方会有一定的延时 在延时期间发送方会继续发送数据 因此接收缓冲区必须有一定的容量来继续接收接下来HOLDA之前的数据 SATAProtocol 链路层状态 链路层状态机是链路层的控制模块 是链路层的核心 主要包括以下四个部分 空闲状态机发送状态机接收状态机电源管理状态机 SATAProtocol 空闲状态机主要完成复位操作和建立连接 主要包括以下6个状态 L IDLEL SyncEscapeL NoCommErrL NoCommL SendAlignL RESET 空闲状态机 SATAProtocol L IDLE 符合以下条件保持空闲状态 物理层连接正常 传输层没有传送数据请求 没有接收到X RDY PMREQ P和PMREQ S原语 当收到传输层的数据传输请求 链路层进入数据传输状态 当接收到X RDY原语 链路层进入数据接收状态 当收到传输层进入电源管理模式的请求或者收到PMREQ P或PMREQ S原语 链路层进入电源管理状态 当物理层失去连接 进入L NoCommErr状态 SATAProtocol L NoCommErr L NoComm和L SendAlign状态 当检测到物理层失去连接进入L NoCommErr状态 然后进入L NoComm状态 需要向传输层报告物理层失去连接的状态 直到检测到物理层连接正常之后 链路层进入L SendAlign状态 否则保持L NoComm状态 在SendAlign状态 链路层发送ALIGN原语 之后如果物理层报告连接正常 进入L IDLE状态 否则进入L NoComm状态 SATAProtocol 发送状态机 主要响应传输层发送请求 启动数据发送 通过各类原语的发送和接收实现与主机之间的传输通道的建立和流量控制 SATAProtocol L SendData状态 传输数据状态表示正在发送数据 如果更多的数据需要继续发送但是传输层还未准备好 链路层进入SendHold状态 如果更多的数据需要发送但是接收端收到了HOLD原语 发送方链路层进入RecvHOLD状态 SendHOLDA 如果数据发送完毕或者接收到DMAT原语 链路层进入SendCRC状态发送CRC 如果收到SYNC原语 表示接收方传输层想要取消这次数据传输 发送方链路层进入IDLE状态 如果发送方传输层想要取消本次数据传输 链路层进入SyncEscape状态 如果检测到物理层失去连接 链路层进入NoCommErr状态 SATAProtocol 接收状态机 接收数据的时候 接收状态机控制原语的接收和响应 建立数据传输通道 接收数据并校验其正确性 向发送方返回接收状态 SATAProtocol L SyncEscape 当链路层在数据发送或者数据接收状态的时候 如果传输层需要取消当前数据接收或发送 链路层会进入L SyncEscape状态 当前状态链路层发送SYNC原语 当前状态接收到SYNC原语或者X RDY原语之后跳到L IDLE 当前状态如果物理层失去连接 进入L NoCommErr状态 SATAProtocol L RcvData状态 接收数据状态 正常回应R IP 如果FIFO空间不足 进入Hold状态 发送HOLD原语告知发送方暂停发送数据 如果收到HOLD原语 表示发送方暂停发送数据 链路层接收状态机进入RecvHold状态 如果收到EOP原语 表示数据传输完毕 进入RecvEOF状态 如果收到WTRM原语 未收到帧结束原语 表示数据传输错误 进入BadEnd状态 如果收到SYNC原语 表示发送方传输层要取消本次数据传输 进入IDLE状态 如果物理层失去连接 进入NoCommErr状态 如果接收方传输层想要取消本次数据传输 进入SyncEscape状态 之后会向发送方发送SYNC原语 SATAProtocol 第三部分传输层 SATAProtocol 传输层 传输层在链路层和应用层之间 负责组帧和解帧 主机和设备通过传输层帧的交互来完成命令交互和数据传递 发送FIS时 传输层完成以下功能 根据应用层的请求组建帧 通知链路层需要发送数据帧 并把数据帧内容传给链路层 管理数据缓存区 给链路层发送流量控制信息 向应用层报告传输状态 接收FIS时 传输层完成以下功能 从链路层接收FIS内容 根据FIS类型 把FIS内容放到合适的位置 向应用层报告接收状态 SATAProtocol 传输层 FIS是以Dword为基本单元 用来在主机和设备之间传递信息的一种帧结构 SOF和EOF原语分别作为FIS的开头和结尾 传输过程中可能在FIS中间插入HOLD原语来进行流量控制 第0个Dword的第0字节决定了FIS类型 SATAProtocol SetDeviceBitFIS 用于更新主机映射寄存器中错误寄存器和状态寄存器的内容 由设备应用层发起传输该FIS的请求 DMAActivateFIS 用于同意主机向设备以DMA方式发送数据 当设备向主机发送该数据帧的时候 设备应该准备好接收后续的DataFIS 当主机收到该帧 如果主机DMA控制器已经配置好 主机应该开始发送DataFIS 如果主机DMA控制器未配置好 主机应该配置DMA控制器 配置好之后激活DMA控制器开始数据帧的发送 SATAProtocol RegisterFIS HosttoDevice 用来传输主机映射寄存器的内容到设备 ATA命令集就是用这个FIS发往设备的 当设备收到一个有效的RegisterFIS之后 设备更新它的命令寄存器和控制寄存器中的内容 然后检查FIS中的C位 如果是1 则执行命令寄存器中的命令 如果是0 则执行控制寄存器中的控制请求 DevicetoHost 用来更新主机映射寄存器的内容 当设备执行完一个命令 应该发送该帧向主机报告完成状态 SATAProtocol DMASetupFIS Bidirectional 发送方发送该帧要求对方按照帧的内容配置好DMA控制器 发送此帧是进行DMA传输的第一步 该帧中包含了DMA操作地址 DMA传输数量和传输方向等信息 一般接收方收到该帧之后需要发送DMAActivateFIS来激活DMA传输 如果DMASetupFIS帧中的Auto Activate位被置一 则接收方不需要回复DMAActivateFIS 由应用层发出该帧的传输请求 PIOSetup DevicetoHost 该帧由设备发送给主机告诉主机相关PIO操作信息 比如接下来的数据传输方向 传输数量 还包括了在PIO传输前和传输后映射寄存器的状态信息 SATAProtocol DataFIS Bidirectional 该帧用来传输数据 数据长度是不定的 数据净荷的长度最多2048个Dwords 在发送数据帧之前都需要用PIOSetupFIS或DMASetupFIS等帧建立操作参数 SATAProtocol 设备传输层状态机 SATAProtocol 设备传输层状态机 SATAProtocol 第四部分命令层 SATAProtocol 设备命令层 设备命令层主要完成对收到的ATA ATAPI命令的解析 RegisterFIS 并做出相应的回应 主要以下几类命令 NON Data命令PIO命令DMA命令NCQ命令这几类命令中 每一类命令都有多种命令构成 SATAProtocol NON Data命令 主机端通过NON Data命令来查询设备的状态 或者做功能的设置 设备应用层软件会解析并执行该命令 执行结果通过设备发往主机端的寄存器FIS发给主机 SATAProtocol PIOIN命令 主机端通过RegisterHosttoDeviceFIS发送命令到设备端 设备端应用层收到该命令之后 准备好数据 然后控制传输层发送PIOSetupFIS来通知主机准备接收数据 之后发送DataFIS DataFIS长度如果超过2048个Dwords 需要分开发送 每个DataFIS之前都要发送一个PIOSetupFIS 如果传输过程中出现错误 设备要向主机发送RegFIS FIS内容需要根据ATA8 ACS标准 SATAProtocol PIOOUT命令 主机端通过RegisterHosttoDeviceFIS发送命令到设备端 设备端应用层收到该命令之后 准备好存放数据的空间 然后控制传输层发送PIOSetupFIS来通知主机开始发送数据 然后设备开始接收DataFIS 当所有数据传输完成之后 设备端需要返回一个RegFIS来告知主机接收状态 SATAProtocol DMAIN和DMAOUT命令 SATAProtocol NCQ命令 N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论