一文看懂SGPIO协议
目录
1.简介
串行通用输入输出(SGPIO)是一种串行通用IO信号的方法。通常用于发起方(如主机总线适配器)和目标方(如背板)之间的通信。目标方通常将输出的串行信号转换为多个并行信号,并通过GPIO提供输入信号。发起方和目标方都可以由一个或多个芯片组成。如果使用多个芯片,它们应协调驱动总线信号。
SGPIO通常用于SATA或SAS等高速存储接口,它有四组接口信号如下图所示:
图1 SGPIO
2.接口列表
信号 | T/I | 描述 |
Sclok | T | 时钟(100k) |
Sload | T | 当前比特流的结束信号;在下一个时钟开始一个新的比特流 |
Sdataout | T | 串行数据输出比特流 |
Sdatain | I | 串行数据输入比特流,并不是所有的设备都支持Sdatain |
注:T表示发起方,I表示目标方。
3.时序
图2 SGPIO时序关系
3.1 Sclok
目标方应使用SClock的下降沿锁定SLoad和SDataOut。发起方应使用SClock的下降沿锁定SDataIn。当不使用SGPIO总线时(例如,在复位期间),发起方应将SClock设置为1(即三态)。当使用SGPIO总线但故意不交换位流时,发起方应将SClock设置为0。这会让目标知道发起程序仍然存在并且尚未删除。
3.2 Sload
SLoad信号指示bit流何时结束并重新启动。SLoad设置为1的时钟周期是位流的最后一个时钟周期。
SLoad设置为1后,发起方应在SLoad的下一个四位位置传输厂商自定义的模式。此后,发起方应将SLoad设置为0,直到它想要重新启动位流。厂商自定义的位用于将独立于驱动器的信息传达给目标方。
通电后,发起方可以使用SClock的第一个上升沿将SLoad设置为1。如果SClock已经为高,并且供应商特定的位0也设置为1,则目标在第一个bit流期间不会与发起方同步。因此,在第一个bit流期间,发起方不应将厂商自定义的位0设置为1。在第四个驱动器(即驱动器3)的第三位位置之前,发起方不得重新启动位流。发起方只应将SLoad设置为1,以便在驱动器的第三位位置期间重新启动位流。需要至少5个连续的0位来区分第一个1值的SLoad和L0到L3可能的1值。为了识别bit流的开始,目标应该检测到5个或更多位的SLoard设置为0,然后检测到它设置为1。
当不使用SGPIO总线时(例如,在复位期间),发起方应将SLoad设置为1(即三态)。 当使用SGPIO总线但不交换bit流时,发起程序应将SLoad设置为0。这会让目标方知道发起程序仍然存在并且尚未删除。
3.3 Sdataout
SDataOut信号携带与目标背板上的磁盘驱动器相关联的输出位。它用于控制LED等指示灯(例如活动、定位和错误指示灯)。
当不使用SGPIO总线时(例如,在复位期间),启动器应将SDataOut设置为1(即三态)。支持相应的驱动器号。
3.4 Sdatain
SDataIn信号携带与目标背板上的磁盘驱动器相关联的输入位。它旨在报告驱动器存在检测等信息(请参阅SATA)。并非所有发起方和目标都支持SDataIn。
4.应用
图3 SGPIO应用与SAS和SATA
来源地址:https://blog.csdn.net/weixin_40987341/article/details/127072701
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341