下冰雹 · 2022年05月20日

SATA协议简介

概述

SATA是一种基于行业标准的串行硬件驱动器接口,以连续串行的方式传输数据,支持热插拔,主要用于SATA主机与大容量存储设备之间的数据传输。

目前,SATA一共发展了三代,分别为SATA1、SATA2和SATA3,向后兼容,每一代SATA具有相应的传输功能定义,并且它们的传输速率也不尽相同。SATA1的传输速率只有150MB/s,SATA2扩展为300MB/s,SATA3将端口的传输速率提升至6Gbit/s。

SATA3协议一共分为五层:应用层、命令层、传输层、链路层和物理层。由于命令层包含于应用层,因此在某些文献中,将应用层和命令层进行了合并,统称为应用层,这样SATA3协议一共分为四层。根据SATA接口协议,SATA主机端和设备端实现通信时,各层之间进行对等交互。

3095ce43d553aea39e076fa8febdcd4d.png

本文对SATA协议做简单介绍。

01 物理层

6f7c47932f97f361fd1121cf844cbf32.png

7297d4ac8e1546bc236ac770f2277d1c.png

b83c3e8fb17592890b49b100fd5fe24e.png

ec0f7ee45e58dbdee24251e1e89ef64e.png

2c8f3ea7f8b224448d2e280370453f6a.png

4fee7c9529fe29298f12737b575ddf4e.png

02 链路层

91a6f049805d08fda7fd8dbcdd945a38.png

bdeb973a0dc6efe975f4b24b55a7e96c.png

ec873a76841b2b0b137ba3ab75b4fb00.png

0ded8f7daa16851920dd851e97ca5047.png

8eab5f5b7e8457cb68a40163b02d99a9.png

fb6de3c82c345493fbd6002e18732b49.png

1234ed2edb6346703e454c4bf728cd4d.png

b183e989436898a3183dad4abc13be8b.png

3d28803628152bec3a8ef4538861a928.png

694ea691f7096c140610a668e2966c3d.png

9c0d7454d77f7d6206d214a826e67f72.png

5f1e85fb253317c0cd15bb2a83e278fc.png

89f54a1ba139208cb2f36efa514cafa5.png

2055bc01e15f3e37c8c17da1e3c17061.png

c5635db99647c96f4185ed77cdc5a1e2.png

f2974520f31c9d1d4fb7498aab5ec4cd.png

03 传输层

4e7e803a758f9610ec87cab62ce6ba8b.png

c373cd4a0228bb995e82538f3f28338a.png

962dfc618319274c8c6684457d19e78f.png

98a4de6fbbc710575349203487405356.png

c6f43dd40ee24e37f79840b283d48a8e.png

ae3c0c9b316a88a46edb5b3eb7e9d7b8.png

20dd2dad2257438e0417af2abf83c4a3.png

18830ebf36cbfe3c4dce40742acfbe7e.png

b0dc49902db28d3d0d197354cc90bf90.png

04 命令层/应用层

94511f827d163ab65c00e0438bcbc7f0.png

f3b72a3008295c4832a57c1d3cd302d5.png

d8ebf0bcb227c51ef529882649244cc9.png

899eff718dcc42dc735516b945b4c52a.png

34496ef3546b065c82195a4d04757c74.png

374c8b1fbaba31eda56069b1ca1c2d0b.png

a8f73870db4b8a14ce1b56fc3877d1a7.png

0edfdb401cccdb2889709a51ee8d7ffa.png

0fa40bea6fb4929f98d2e4e8f239c059.png

总结

应用层:负责所有ATA命令的解析和执行,向处理器报告硬盘的运行状态,发起数据读写请求,完成硬盘工作模式的设置和读取等。

命令层:负责解析ATA指令,做出相应的回应,并指导传输层构建FIS。

传输层:负责构建和解析FIS,完成组帧和解帧,调整命令层和链路层之间的数据格式,完成主机和设备的命令交互和数据传递。

链路层:SATA链路层执行过程为:主机端发送数据,计算其32bit的CRC校验和,并将该校验和与发送的有效数据进行加扰,放在有效数据帧的最后一帧,经过8B/10B编码后传输至物理层;设备端接收数据,对接收的有效数据进行8B/10B解码以及解扰操作,计算本组数据的CRC校验和,并与设备端接收的校验和比较。

物理层:物理层位于协议的最底层,其功能是通过OOB(Out-of-Band)信号的检测以及原语交互,实现主机端控制器与设备端控制器的链路初始化和速度协商,并将主机和设备的链路状态向链路层反馈,建立数据通道,实现串并转换、并串转换等操作。目前,Xilinx的高速收发器可支持物理层设计与实现,并且包含了8B/10B编解码等功能。

来源: FPGA算法工程师
作者: Duoqiang Liu
原文链接:FPGA算法工程师

推荐阅读

更多IC设计技术干货请关注FPGA的逻辑技术专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10966
内容数
1214
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息