- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
胡为东系列文章之五--USB 3.0物理层测试中的一致性
LTSSM(Link Training and Status State Machine)主要用于控制链路的链接状态和链路的电源管理。U0-U3为四种和工作相关的状态,U0状态表示的是超高速链接处于使能状态,数据包正在收发或者链路处于空闲状态;U1表示的是低功耗链路状态,此时没有数据包收发,超高速链路可以处于非使能状态以节省功耗;U2也是一种低功耗状态(能进一步节省功耗,但是如果要退出该状态则需要更长的等待时间);U3为链路终止状态(可进一步的节省功耗);Rx.Detect、Polling、Recovery以及Hot Reset为四种链接状态,Rx.Detect状态表示当链路上电后,host和device能够相互识别到双方的存在,一旦识别,双方将开始进入初始化训练程序;Polling状态表示host和device在训练初始化发送端和接收端以及进行同步,准备进行数据包的发送;Recovery主要是当链路发现当前系统要从低功耗状态切换出来或
图1 USB3.0 LTSSM的状态机流程图
者当前没有工作在U0状态而需要重新进行训练和配置的时候进行链路恢复;Hot Reset表示链路允许下行端口重新设置上行端口;另外两种链路状态为Loopback和Comliance,分别用于误码率测试和发送端一致性测试;还有其它两种状态为SS.Inactive和SS.Disabled,分别为链路出现错误的状态和链路工作在非超高速状态或者链路工作USB2.0状态。
从上图1中可以看出,从链路上电开始到正常工作(类似于将USB3.0的U盘插到笔记本的USB3.0接口上到能够正常开始读取数据)需要经历三个阶段:Rx.Detect、Polling、U0,其中Polling过程会对链路上的终端设备进行相关的初始化设置,从Rx.Detect到U0的过程需要经历的子过程步骤如下:
图2 Rx.Detect到U0状态需要经历的子状态
在Rx.Detect状态,链路上的host或者device开始识别远端是否有端接,如果有端接,则链路上的终端均开始发送特定规格的Polling.LFPS码(低频周期突发信号,周期在20ns到100ns之间),LFPS信号是一个非常关键的信号,通过不同特征的LFPS信号可以实现host或者device在多种状态之间进行切换,不同特征的LFPS信号主要表现为时序上的不同,如tBurst和tRepeat参数,不同要求的LFPS信号参数如下图3所示;经过特定时间的Polling.LFPS握手后,开始发送定制好的TSEQ码进行接收端的均衡器设置,然后再通过TS1/TS2(Training Sequence,训练码)码进行其它相关参数的设置,最后通过发送Idle码进行握手,完成整个链路的初始化,进入U0正常工作状态。如下图4、图5所示,图5为用力科的USB3.0协议分析仪对链路初始化过程的分析结果,从该图上可详细了解到初始化过程的训练码序列及其时序关系。 [p]
图3 LFPS信号及其主要参数
图4 USB3.0链路终端从相互识别到进入正常工作状态的初始化过程
图5 用力科的协议分析仪对链路初始化过程的分析结果
当需要对链路上的host或者device进行发射机一致性测试或者误码率测试时,则需要设置被测DUT进入上图4中所示的一致性模式(compliance mode)或者环回模式(loopback mode)。
根据USB3.0规范,如果需要进入一致性模式,则需要接收端保持低阻抗模式、且需要给被测DUT发送Ping.LFPS,(Ping.LFPS的参数tBurst和tRepeat不同于Polling.LFPS,见图3),接收端每接收到一个Ping.LFPS会切换一次一致性码型;而如果需要进入环回模式,则需要保持进入U0的初始化顺序不变,只需要将训练码TS2的第五个symbol的Bit2设置为Loopback模式即可,如下图6所示:
图6 TS2(同TS1)的第5个symbol(共16个symbol)中的Loopback设置
此外,从上图4中可看出,发送Polling.LFPS和TS2时,链路的终端之间是需要进行握手(handshake)的。
对于一些芯片级测试工程师来说,设置芯片进入一致性测试模式或者环回模式也许会比较容易,但是对于很多系统级用户来说,有时就会比较困难,而且如果用户自己设置器件进入一致性测试模式或者环回模式再进行测试,效率会比较低,因为需要不停的进行手动切换。比如说做发射机物理层一致性测试时,需要不停的切换码型,如果靠手动切换,则会花费很多时间。因此,为了提高测试的效率,测试设备供应商都提供了相应的办法来自动让DUT进入一致性测试模式或者环回模式来自动化完成发射机一致性测试或者接收机误码率测试。
二、发射机一致性测试如何让DUT进入一致性模式
1、用户通过软件或者借助其它的USB3.0设备等办法诱使DUT进入一致性测试模式,手动切换一致性测试码型(CP0-CP1-CP2-CP3-CP4-CP5-CP6-CP7-CP8)。 [p]
2、通过信号源或者码型发生器定制Polling.LFPS码型让DUT进入一致性测试模式,并根据需要切换一致性测试码型,由于发射机物理层测试需要使用示波器来进行测试,因此如果用单独的信号源或者码型发生器来与示波器进行配合的话,则仍旧需要手动控制信号源或者码型发生器来根据需要发送Polling.LFPS以切换一致性测试码型,因为当示波器接收到DUT发来的一致性测试码型并测试完成时,信号源或者码型发生器却并不知道示波器已经测试完这个码型而需要下一个码型,因此需要人为的观察并控制。
3、使用力科的一种比较创新型的设备PeRT3(具有协议握手能力的发送端和接收端容限测试仪),这款仪器的控制软件可以安装在PC上或者示波器上(当前的高速示波器都是基于Windows平台的),力科的示波器上集成有PeRT3的选件,这样就可以实现示波器和PeRT3之间的通信,每当示波器测试完成一个一致性测试码型后,会自动通知PeRT3切换到下一个码型,从而实现全自动化的完成发射机物理层一致性测试。
三、接收机误码率测试如何让DUT进入环回模式
1、用户通过软件或者借助其它的USB3.0设备等办法诱使DUT进入一致性测试模式。
2、通过信号源或者码型发生器定制码型序列发送给DUT,强制其进入环回模式
USB3.0规范规定进入环回模式以及进行误码测试需要的码型序列为:(1)给被测DUT上电;(2)发送2ms的Polling LFPS;(3)发送65536 TSEQ;(4)发送256 TS1;(5)发送 256 TS2(Loopback位设置为1);(6)开始发送码型并计算BER.;(7)在进行误码计算之前需要先发送2ms的BDAT ;(8)DUT 必须无误码的运行3x109 symbols 或者3x1010 bits的BDAT码. 且每354 symbols插入一个 SKP;(9)每个测试点重复上述1-8步.
这一初始化过程有两个特别要点:一是USB3.0规范规定第(2)步和第(5)步被测DUT是需要和测试仪器进行握手的(handshake);二是训练序列码之间的时序关系需要非常的精确;
而使用信号源或者码型发生器定制的训练码型序列却不能够完全满足上述的两个要点:一是其在整个初始化过程不能够和被测DUT进行握手(因为传统的信号源或者码型发生器都不具备USB3.0的协议能力);二是由于缺乏握手,一旦DUT对训练码序列的时序要求有偏差,规定死的训练码序列将无法使得DUT进入到环回(Loopback)模式,必须重新调整训练码序列的时序关系,这就将大大增加测试的时间和难度。
3、使用力科公司的一款比较创新型的设备PeRT3(具有协议握手能力的发送端和接收端容限测试仪),因为具有和被测DUT之间的协议握手能力,因此能够克服使用传统的信号源或者码型发生器所提到的问题。力科PeRT3的简单介绍和特点如下:
力科PeRT3(Protocol enabled Receiver Transmitter Tolerance Tester)是具备协议识别和通信的接收机容限测试仪。PeRT3家族产品包括PeRT3 Eagle和PeRT3 Phoenix。
PeRT3 Eagle PeRT3
产品特点
具备协议识别和通信能力
可测量误码率(Bit Error Ratio)、丢帧率(FER Error Rate)、抖动容限(Jitter tolerance)
支持USB3.0、SATA1.5/3/6Gbps、SAS1.5/3/ 6Gbps、PCIe 2.5/5Gbps/8Gbps的接收机测试
可以调节码型发生器输出信号的幅度、SSC、去加重、随机抖动、正弦抖动
内置3-taps De-emphasis
四、小结
本文简要介绍了USB3.0的链路层初始化过程以及如何让被测DUT进入到发射机物理层测试所需要的一致性测试模式以及接收机误码率测试所需要的环回模式。并介绍了当前业界针对USB3.0的测试方案中是如何让被测DUT进入这两种测试模式的以及其存在的优缺点。
五、参考文档
1、USB3.0测试规范