SATA模块物理层OOB信号分析总结(三)

7 篇文章 27 订阅

一、简介

本文主要讲解SATA底层FW中HOST和DEVICE进行FHY LINK过程中OOB(Out-of-Band)信号的产生与检测。

二、总体解析

2.1 OOB作用

OOB主要的作用如下:
1、初始化(initialization);
2、传输速率的协商与对接(Speed negotiation);
透过OOB handshake,host与device可以决定要在Gen1,Gen2或Gen3做data传输。
3、重置(Reset);
4、从省电状态(Slumer/Partial)的唤醒。

2.2 OOB信号的组成

OOB信号实际上主要有COMRESET/COMINIT与COMWAKE三个PHY信号线。
COMRESET:Host对Device进行硬件重置以及SATA信号的重新建立。
COMINIT:由Device送往Host,要求信号初始化。
COMWAKE:Host或是Device装置可以激发该信号来将PHY从省电状态(Slumer/Partial)抽离。

COMRESET/COMINIT由两部分相互间隔构成,一部分是突发长度为160个UI (Unit Interval)约106.7ns的ALIGN,另一部分是长度为480UI约320ns的Idle。
在这里插入图片描述
COMWAKE同样是有两部分相互间隔组成,一部分是突发长度为160个UI (Unit Interval)约106.7ns的ALIGN,另一部分是长度为160个UI约106.7ns的Idle。
在这里插入图片描述

需要注意的是,虽然COMREST和COMINIT形式上是一样的,但COMREST只能从host到device,而COMINIT只能从device到host。
在这里插入图片描述

2.3 总体phy link过程

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

在这里插入图片描述

2.4 整体PHY LINK Trace

通过SATA协议分析仪抓到整体的建链Trace如下:
在这里插入图片描述

2.5 PHY LINK状态查询

查询每个PORT对应的P#CTL,具体BIT状态内容如下:
在这里插入图片描述

DET Detection,表示接口设备检测和Phy状态。
0000b 未检测到设备且未建立Phy通信
0001b 检测到设备存在,但Phy通信未建立
0011b 检测到设备存在并建立Phy通信
0100b 由于接口被禁用或运行在BIST环回模式下,导致Phy处于离线模式

SPD Speed,表示协商建立的接口通信速率
0000b 未协商速度(设备不存在或通信未建立)
0001b 协商为Gen1通信速率(1.5 Gbps)
0010b 协商为Gen2通信速率(3 Gbps)
0011b 协商为Gen3通信速率 (6 Gbps)

IPM interface power management,显示当前接口电源管理状态
0000b 设备不存在或通信未建立
0001b 接口处于Active状态
0010b 接口处于Partial状态
0110b 接口处于Slumber状态

三、其他相关链接

1、SATA模块之HBA卡开发总结(一)

2、SATA信息传输FIS结构总结(二)

3、PCIe物理层总结-PCIE专题知识(一)

4、PCIe数据链路层图文总结-PCIe专题知识(二)

5、SSD硬盘SATA接口和M.2接口区别总结

OOB(Out-of-Band)信号在FPGA(Field-Programmable Gate Array)中的实现通常涉及以下步骤: 1. OOB信号定义:首先,需要确定所需的OOB信号的功能和规范。这可能包括OOB信号的名称、电气特性、传输协议等。 2. 硬件设计:在FPGA的硬件设计中,需要根据OOB信号的规范来设计相应的电路。这可能涉及使用逻辑门、寄存器、时钟等组件来实现所需的功能。 3. 约束设置:在FPGA设计中,需要进行约束设置以确保正确的时序和电气特性。这包括设置时钟频率、信号延迟和时序要求等。 4. 逻辑设计和编程:基于OOB信号定义和硬件设计,需要进行逻辑设计和编程,将所需的功能映射到FPGA中。这可以使用硬件描述语言(如VHDL或Verilog)来完成。 5. 仿真和验证:在实际部署之前,需要进行仿真和验证来确保OOB信号在FPGA中的正确功能。这可以通过使用仿真工具和测试平台来完成。 6. FPGA配置:一旦硬件设计和验证通过,可以将FPGA配置为实现所需的OOB信号功能。这通常涉及将逻辑设计编译成位流文件,并将其加载到FPGA芯片中。 7. 集成和系统测试:最后,需要将FPGA集成到整个系统中,并进行系统级测试以确保OOB信号的正确性和可靠性。 需要注意的是,具体的OOB信号实现方法可能因应用场景和需求而有所不同。上述步骤提供了一般的指导,但在实际应用中可能需要根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值