SATA协议学习课程_第1页
SATA协议学习课程_第2页
SATA协议学习课程_第3页
SATA协议学习课程_第4页
SATA协议学习课程_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第一部分 物理层qSATA PSATA Protocolrotocol第1页/共41页第一页,编辑于星期六:十九点 五十三分。qSATA PSATA Protocolrotocol第2页/共41页第二页,编辑于星期六:十九点 五十三分。物理层的功能物理层的功能 以以1.5Gbps、3.0Gbps或者或者6Gbps的速率传输的速率传输DNRZ串行数据流;串行数据流;发送端和接收端提供发送端和接收端提供100欧姆的终端匹配电阻;欧姆的终端匹配电阻;将链路层接收的并行数据进行串行化之后发送;将链路层接收的并行数据进行串行化之后发送;接收高速串行数据转换成并行数据,包括从串行数据流中进行数据提取和时钟

2、恢复;接收高速串行数据转换成并行数据,包括从串行数据流中进行数据提取和时钟恢复;检测检测ALIGN原语,进行数据对齐;原语,进行数据对齐;带外信号的接收和发送;带外信号的接收和发送;使用带外信号进行使用带外信号进行SATA接口初始化和主从之间速率协商;接口初始化和主从之间速率协商;向链路层发连接状态(已连接、未连接、已连接但是速率协商失败);向链路层发连接状态(已连接、未连接、已连接但是速率协商失败);qSATA PSATA Protocolrotocol第3页/共41页第三页,编辑于星期六:十九点 五十三分。物理层的主要状态物理层的主要状态l Resetl COMINITl AwaitCOM

3、WAKEl AwaitNoCOMWAKEl Calibratel COMWAKEl SendAlignl Readyl Parity、Slubmberl Reduce SpeedqSATA PSATA Protocolrotocol第4页/共41页第四页,编辑于星期六:十九点 五十三分。物理层上电初始化物理层上电初始化qSATA PSATA Protocolrotocol第5页/共41页第五页,编辑于星期六:十九点 五十三分。电源管理电源管理Partial模式:模式: 物理层部分电路进入休眠模式,能够在物理层部分电路进入休眠模式,能够在10us之内被唤醒。之内被唤醒。qSATA PSATA P

4、rotocolrotocolSlumber模式:模式: 与与Partial模式相比可以关闭更多的电路,能够在模式相比可以关闭更多的电路,能够在10ms之内被唤醒。之内被唤醒。第6页/共41页第六页,编辑于星期六:十九点 五十三分。第二部分 链路层qSATA PSATA Protocolrotocol第7页/共41页第七页,编辑于星期六:十九点 五十三分。链路层的功能链路层的功能与对方的链路层相互协商传送帧和原语;与对方的链路层相互协商传送帧和原语;接收传输层传送的数据(接收传输层传送的数据(Dword),计算数据的),计算数据的CRC校验值,给数据加上帧校验值,给数据加上帧头、帧尾和头、帧尾和

5、CRC校验信息;校验信息;接收对方链路层的数据信息,进行接收对方链路层的数据信息,进行CRC校验,移除数据中的帧头、帧尾和校验,移除数据中的帧头、帧尾和CRC校验校验信息;信息;帧流量控制;帧流量控制;向传输层报告传输状态;向传输层报告传输状态;8b/10b编解码;编解码;对数据加扰、解扰;对数据加扰、解扰;qSATA PSATA Protocolrotocol第8页/共41页第八页,编辑于星期六:十九点 五十三分。链路层数据结构链路层数据结构qSATA PSATA Protocolrotocol第9页/共41页第九页,编辑于星期六:十九点 五十三分。链路层原语链路层原语 ALIGNp物理层依

6、靠ALIGN原语进行数据对齐,成对发送CONTp避免连续发送长串重复原语DMATp用于通知发送方提前终止DMA数据发送EOFp表示数据帧的结束HOLDp发送方发送HOLD表示数据未准备好,接收方发送HOLD表示接受FIFO将满HOLDAp用于响应HOLD原语PMACKp用于响应PMREQ_Pp和PMREQ_Sp,接收方收到这个原语之后进入电源管理状态PMNAKp拒绝电源管理模式原语PMREQ_Pp请求进入Parity模式PMREQ_Sp请求进入Slumber模式R_ERRp接收错误R_IPp表示正常接收数据R_OKp接收数据正确R_RDYp用于回应X_RDY原语,表示接收端准备就绪SOFp表示

7、数据帧的开始SYNCp同步原语WTRMp数据帧发送完成之后,发送方发送这个原语,等待接收方回应接收状态X_RDYp发送数据就绪qSATA PSATA Protocolrotocol第10页/共41页第十页,编辑于星期六:十九点 五十三分。DMAT原语原语功能:通知发送方停止数据传送。功能:通知发送方停止数据传送。主机到设备的数据传输,主机收到主机到设备的数据传输,主机收到DMAT原语之后,会停止数据发送,原语之后,会停止数据发送,开始发送开始发送CRC和和EOF原语,关闭原语,关闭DMA,保存当前,保存当前DMA的状态。设备之后可的状态。设备之后可以发送以发送DMA Active FIS重新激

8、活主机重新激活主机DMA,继续数据传送。,继续数据传送。设备到主机的数据传输,设备收到设备到主机的数据传输,设备收到DMAT原语之后,设备会永久终原语之后,设备会永久终止本次数据传输。止本次数据传输。qSATA PSATA Protocolrotocol第11页/共41页第十一页,编辑于星期六:十九点 五十三分。CONT原语原语 功能:避免发送长串重复原语,减少电磁干扰。功能:避免发送长串重复原语,减少电磁干扰。接收方收到接收方收到CONT原语之后会认为当前发送方一直发送原语之后会认为当前发送方一直发送CONT之前的最之前的最后一个原语,直到收到另外一个原语。后一个原语,直到收到另外一个原语。

9、设备和主机必须支持接收和处理设备和主机必须支持接收和处理CONT原语的功能,可以选择是否支原语的功能,可以选择是否支持发送持发送CONT原语的功能。原语的功能。CONT原语之后的数据要加扰。原语之后的数据要加扰。qSATA PSATA Protocolrotocol第12页/共41页第十二页,编辑于星期六:十九点 五十三分。流量控制流量控制接收方为了避免接收数据缓冲区溢出,使用接收方为了避免接收数据缓冲区溢出,使用HOLD原语进行流量控原语进行流量控制。制。在接收数据缓冲区将要满的时候,接收方会发送在接收数据缓冲区将要满的时候,接收方会发送HOLD原语通知发送原语通知发送方暂停数据发送,由于方

10、暂停数据发送,由于HOLD原语传到发送方会有一定的延时,在延时期间原语传到发送方会有一定的延时,在延时期间发送方会继续发送数据,因此接收缓冲区必须有一定的容量来继续接收发送方会继续发送数据,因此接收缓冲区必须有一定的容量来继续接收接下来接下来HOLDA之前的数据。之前的数据。qSATA PSATA Protocolrotocol第13页/共41页第十三页,编辑于星期六:十九点 五十三分。链路层状态链路层状态链路层状态机是链路层的控制模块,是链路层的核心,主要包括以下链路层状态机是链路层的控制模块,是链路层的核心,主要包括以下四个部分:四个部分:u空闲状态机空闲状态机u发送状态机发送状态机u接收

11、状态机接收状态机u电源管理状态机电源管理状态机qSATA PSATA Protocolrotocol第14页/共41页第十四页,编辑于星期六:十九点 五十三分。空闲状态机主要完成复位操作和建立连接,主要包括以下空闲状态机主要完成复位操作和建立连接,主要包括以下6个状态:个状态:uL_IDLEuL_SyncEscapeuL_NoCommErruL_NoCommuL_SendAlignuL_RESET空闲状态机空闲状态机qSATA PSATA Protocolrotocol第15页/共41页第十五页,编辑于星期六:十九点 五十三分。L_IDLE符合以下条件保持空闲状态:符合以下条件保持空闲状态:

12、物理层连接正常;物理层连接正常; 传输层没有传送数据请求;传输层没有传送数据请求; 没有接收到没有接收到X_RDY、PMREQ_P和和PMREQ_S原语;原语;当收到传输层的数据传输请求,链路层进入数据传输状态。当收到传输层的数据传输请求,链路层进入数据传输状态。当接收到当接收到X_RDY原语,链路层进入数据接收状态。原语,链路层进入数据接收状态。当收到传输层进入电源管理模式的请求或者收到当收到传输层进入电源管理模式的请求或者收到PMREQ_P或或PMREQ_S原语,链路层进入电源管理状态。原语,链路层进入电源管理状态。当物理层失去连接,进入当物理层失去连接,进入L_NoCommErr状态。状

13、态。qSATA PSATA Protocolrotocol第16页/共41页第十六页,编辑于星期六:十九点 五十三分。L_NoCommErr、L_NoComm和和L_SendAlign状态状态当检测到物理层失去连接进入当检测到物理层失去连接进入L_NoCommErr状态,然后进入状态,然后进入L_NoComm状态,需要向传输层报告物理层失去连接的状态。状态,需要向传输层报告物理层失去连接的状态。直到检测到物理层连接正常之后,链路层进入直到检测到物理层连接正常之后,链路层进入L_SendAlign状态,状态,否则保持否则保持L_NoComm状态。状态。在在SendAlign状态,链路层发送状态,

14、链路层发送ALIGN原语,之后如果物理层报告连原语,之后如果物理层报告连接正常,进入接正常,进入L_IDLE状态,否则进入状态,否则进入L_NoComm状态。状态。qSATA PSATA Protocolrotocol第17页/共41页第十七页,编辑于星期六:十九点 五十三分。发送状态机发送状态机主要响应主要响应 传输层发送请求,启动数据发送,通过各类原语的发送和接收实现与主机传输层发送请求,启动数据发送,通过各类原语的发送和接收实现与主机之间的传输通道的建立和流量控制。之间的传输通道的建立和流量控制。qSATA PSATA Protocolrotocol第18页/共41页第十八页,编辑于星期

15、六:十九点 五十三分。L_SendData状态状态传输数据状态表示正在发送数据。传输数据状态表示正在发送数据。如果更多的数据需要继续发送但是传输层还未准备好,链路层进入如果更多的数据需要继续发送但是传输层还未准备好,链路层进入SendHold状状态。态。如果更多的数据需要发送但是接收端收到了如果更多的数据需要发送但是接收端收到了HOLD原语,发送方链路层进入原语,发送方链路层进入RecvHOLD状态(状态(SendHOLDA)。)。如果数据发送完毕或者接收到如果数据发送完毕或者接收到DMAT原语,链路层进入原语,链路层进入SendCRC状态发送状态发送CRC。如果收到如果收到SYNC原语,表示

16、接收方传输层想要取消这次数据传输,发送方链路层进原语,表示接收方传输层想要取消这次数据传输,发送方链路层进入入IDLE状态。状态。如果发送方传输层想要取消本次数据传输,链路层进入如果发送方传输层想要取消本次数据传输,链路层进入SyncEscape状态。状态。如果检测到物理层失去连接,链路层进入如果检测到物理层失去连接,链路层进入NoCommErr状态。状态。qSATA PSATA Protocolrotocol第19页/共41页第十九页,编辑于星期六:十九点 五十三分。接收状态机接收状态机接收数据的时候,接收状态机控制原语的接收和响应,建立数据传输通道,接收接收数据的时候,接收状态机控制原语的

17、接收和响应,建立数据传输通道,接收数据并校验其正确性,向发送方返回接收状态。数据并校验其正确性,向发送方返回接收状态。qSATA PSATA Protocolrotocol第20页/共41页第二十页,编辑于星期六:十九点 五十三分。L_SyncEscape当链路层在数据发送或者数据接收状态的时候,如果传输层需要当链路层在数据发送或者数据接收状态的时候,如果传输层需要取消当前数据接收或发送,链路层会进入取消当前数据接收或发送,链路层会进入L_SyncEscape状态。状态。当前状态链路层发送当前状态链路层发送SYNC原语。原语。当前状态接收到当前状态接收到SYNC原语或者原语或者X_RDY原语之

18、后跳到原语之后跳到L_IDLE。当前状态如果物理层失去连接,进入当前状态如果物理层失去连接,进入L_NoCommErr状态。状态。qSATA PSATA Protocolrotocol第21页/共41页第二十一页,编辑于星期六:十九点 五十三分。L_RcvData状态状态接收数据状态,正常回应接收数据状态,正常回应R_IP。如果如果FIFO空间不足,进入空间不足,进入Hold状态,发送状态,发送HOLD原语告知发送方暂停发送数原语告知发送方暂停发送数据。据。如果收到如果收到HOLD原语,表示发送方暂停发送数据,链路层接收状态机进入原语,表示发送方暂停发送数据,链路层接收状态机进入RecvHol

19、d状态。状态。如果收到如果收到EOP原语,表示数据传输完毕,进入原语,表示数据传输完毕,进入RecvEOF状态。状态。如果收到如果收到WTRM原语(未收到帧结束原语),表示数据传输错误,进入原语(未收到帧结束原语),表示数据传输错误,进入BadEnd状态。状态。如果收到如果收到SYNC原语,表示发送方传输层要取消本次数据传输,进入原语,表示发送方传输层要取消本次数据传输,进入IDLE状状态。态。如果物理层失去连接,进入如果物理层失去连接,进入NoCommErr状态。状态。如果接收方传输层想要取消本次数据传输,进入如果接收方传输层想要取消本次数据传输,进入SyncEscape状态,之后会状态,之

20、后会向发送方发送向发送方发送SYNC原语。原语。qSATA PSATA Protocolrotocol第22页/共41页第二十二页,编辑于星期六:十九点 五十三分。第三部分 传输层qSATA PSATA Protocolrotocol第23页/共41页第二十三页,编辑于星期六:十九点 五十三分。传输层传输层传输层在链路层和应用层之间,负责组帧和解帧,主机和设备通过传输传输层在链路层和应用层之间,负责组帧和解帧,主机和设备通过传输层帧的交互来完成命令交互和数据传递。层帧的交互来完成命令交互和数据传递。发送发送FIS时,传输层完成以下功能:时,传输层完成以下功能:u根据应用层的请求组建帧;根据应用

21、层的请求组建帧;u通知链路层需要发送数据帧,并把数据帧内容传给链路层;通知链路层需要发送数据帧,并把数据帧内容传给链路层;u管理数据缓存区,给链路层发送流量控制信息;管理数据缓存区,给链路层发送流量控制信息;u向应用层报告传输状态;向应用层报告传输状态;接收接收FIS时,传输层完成以下功能:时,传输层完成以下功能:u从链路层接收从链路层接收FIS内容;内容;u根据根据FIS类型,把类型,把FIS内容放到合适的位置;内容放到合适的位置;u向应用层报告接收状态;向应用层报告接收状态;qSATA PSATA Protocolrotocol第24页/共41页第二十四页,编辑于星期六:十九点 五十三分。

22、传输层传输层FIS是以是以Dword为基本单元,用来在主机和设备之间传递信息的一种帧结构,为基本单元,用来在主机和设备之间传递信息的一种帧结构,SOF和和EOF原语分别作为原语分别作为FIS的开头和结尾,传输过程中可能在的开头和结尾,传输过程中可能在FIS中间插入中间插入HOLD原原语来进行流量控制。语来进行流量控制。第第0个个Dword的第的第0字节决定了字节决定了FIS类型。类型。qSATA PSATA Protocolrotocol第25页/共41页第二十五页,编辑于星期六:十九点 五十三分。Set Device Bit FIS用于更新主机映射寄存器中错误寄存器和状态寄存器的内容。用于更

23、新主机映射寄存器中错误寄存器和状态寄存器的内容。由设备应用层发起传输该由设备应用层发起传输该FIS的请求。的请求。DMA Activate FIS用于同意主机向设备以用于同意主机向设备以DMA方式发送数据。方式发送数据。当设备向主机发送该数据帧的时候,设备应该准备好接收后续的当设备向主机发送该数据帧的时候,设备应该准备好接收后续的Data FIS。当主机收到该帧,如果主机当主机收到该帧,如果主机DMA控制器已经配置好,主机应该开始发送控制器已经配置好,主机应该开始发送Data FIS。如果主机。如果主机DMA控制器未配置好,主机应该配置控制器未配置好,主机应该配置DMA控制器,配置好之后激活控

24、制器,配置好之后激活DMA控制器开始数据帧的发送。控制器开始数据帧的发送。qSATA PSATA Protocolrotocol第26页/共41页第二十六页,编辑于星期六:十九点 五十三分。Register FISHost to Device:用来传输主机映射寄存器的内容到设备,用来传输主机映射寄存器的内容到设备,ATA命令集就是用这个命令集就是用这个FIS发往设备的。当设备发往设备的。当设备收到一个有效的收到一个有效的Register FIS之后,设备更新它的命令寄存器和控制寄存器中的内容,然后检查之后,设备更新它的命令寄存器和控制寄存器中的内容,然后检查FIS中的中的C位,位,如果是如果是

25、1,则执行命令寄存器中的命令,如果是,则执行命令寄存器中的命令,如果是0,则执行控制寄存器中的控制请求。,则执行控制寄存器中的控制请求。Device to Host:用来更新主机映射寄存器的内容。当设备执行完一个命令,应该发送该帧向主机报告用来更新主机映射寄存器的内容。当设备执行完一个命令,应该发送该帧向主机报告完成状态。完成状态。qSATA PSATA Protocolrotocol第27页/共41页第二十七页,编辑于星期六:十九点 五十三分。DMA Setup FIS(Bidirectional)发送方发送该帧要求对方按照帧的内容配置好发送方发送该帧要求对方按照帧的内容配置好DMA控制器,

26、发送此帧是进行控制器,发送此帧是进行DMA传输的第一步。该帧中包含了传输的第一步。该帧中包含了DMA操作地址、操作地址、DMA传输数量和传输方向等信息。传输数量和传输方向等信息。一般接收方收到该帧之后需要发送一般接收方收到该帧之后需要发送DMA Activate FIS来激活来激活DMA传输(如果传输(如果DMA Setup FIS帧中的帧中的Auto-Activate位被置一,则接收方不需要回复位被置一,则接收方不需要回复DMA Activate FIS)。)。由应用层发出该帧的传输请求。由应用层发出该帧的传输请求。PIO Setup Device to Host该帧由设备发送给主机告诉主机

27、相关该帧由设备发送给主机告诉主机相关PIO操作信息(比如接下来的数据传输方操作信息(比如接下来的数据传输方向、传输数量),还包括了在向、传输数量),还包括了在PIO传输前和传输后映射寄存器的状态信息。传输前和传输后映射寄存器的状态信息。qSATA PSATA Protocolrotocol第28页/共41页第二十八页,编辑于星期六:十九点 五十三分。Data FIS(Bidirectional)该帧用来传输数据,数据长度是不定的,数据净荷的长度最多该帧用来传输数据,数据长度是不定的,数据净荷的长度最多2048个个Dwords。在发送数据帧之前都需要用在发送数据帧之前都需要用PIO Setup

28、FIS或或DMA Setup FIS等帧建立操作参数。等帧建立操作参数。qSATA PSATA Protocolrotocol第29页/共41页第二十九页,编辑于星期六:十九点 五十三分。设备传输层状态机设备传输层状态机qSATA PSATA Protocolrotocol第30页/共41页第三十页,编辑于星期六:十九点 五十三分。设备传输层状态机设备传输层状态机qSATA PSATA Protocolrotocol第31页/共41页第三十一页,编辑于星期六:十九点 五十三分。第四部分 命令层qSATA PSATA Protocolrotocol第32页/共41页第三十二页,编辑于星期六:十九

29、点 五十三分。设备命令层设备命令层设备命令层主要完成对收到的设备命令层主要完成对收到的ATA/ATAPI命令的解析(命令的解析(Register FIS),并做),并做出相应的回应。出相应的回应。主要以下几类命令:主要以下几类命令:uNON_Data命令命令uPIO命令命令uDMA命令命令uNCQ命令命令这几类命令中,每一类命令都有多种命令构成。这几类命令中,每一类命令都有多种命令构成。qSATA PSATA Protocolrotocol第33页/共41页第三十三页,编辑于星期六:十九点 五十三分。NON_Data命令命令主机端通过主机端通过NON_Data命令命令来查询设备的状态,或者做功

30、能的来查询设备的状态,或者做功能的设置。设备应用层软件会解析并执设置。设备应用层软件会解析并执行该命令,执行结果通过设备发往行该命令,执行结果通过设备发往主机端的寄存器主机端的寄存器FIS发给主机。发给主机。qSATA PSATA Protocolrotocol第34页/共41页第三十四页,编辑于星期六:十九点 五十三分。PIO IN命令命令主机端通过主机端通过Register Host to Device FIS发送命令到设备端,设备发送命令到设备端,设备端应用层收到该命令之后,准备好数端应用层收到该命令之后,准备好数据,然后控制传输层发送据,然后控制传输层发送PIO SetupFIS来通知主机准备接收数据,之后发来通知主机准备接收数据,之后发送送Data FIS,Data FIS长度如果超过长度如果超过2048个个Dwords,需要分开发送,每个,需要分开发送,每个Data FIS之前都要发送一个之前都要发送一个PIO SetupFIS。如果传输过程中出现错误,设如果传输过程中出现错误,设备要向主机发送备要向主机发送RegFIS(FIS内容需要内容需要根据根据ATA8-ACS标准)标准) 。qSATA PSATA Protocolrotocol

温馨提示

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

评论

0/150

提交评论