USB HS-PHY眼图调试

1 USB2 PHY AFE
1.1 ULPI PHY
1) USB控制器复位后,向ULPI发送复位,0x5写0x20。
2) USB控制器使能,向ULPI 0x4写0x41(PHY in normal operation,FS mode)。
3) host接入后,USB控制器向0x4写0x45,上拉DP。
4) USB控制器监控到host的复位,2.5us后,向ULPI 0x4写0x54;向ULPI发送txcmd 0x40,紧跟着数据0。PHY开始发送Chirp K,持续时间大于1ms,小于7ms。
5) USB控制器检测到3对以上的Chirp KJ码后,500us内,向ULPI 0x4写0x40,进入HS模式。

1.2 电阻参数
USB host端:D+和D-各接一个15kΩ的下拉电阻;
USB slave端:高速和全速D+接一个1.5kΩ电阻上拉到3.3V;低速在D-上接一个1.5kΩ电阻上拉到3.3V。高速chirp KJ握手(Chirp KJ的频率大概是10KHz)成功后,自动断开D+上的1.5kΩ上拉;当高速设备进入suspend时,使能D+上的1.5kΩ上拉到3.3V,退出suspend时,断开D+上的1.5k上拉。

集线器的全速驱动器和设备的全速驱动器在功能上等效成每个都是45Ω电阻,合成90Ω的差分电阻产生一个0系数的反射。这样才产生了cable的特征阻抗是90Ω的需求。

HS模式DP/DM对地单端阻抗为45Ω(由全速驱动器形成的一个阻抗为45Ω的终端电阻),串联的匹配电阻必须是0,否则眼图有问题;LS/FS的DP/DM上必须有大于0的匹配电阻。 HS模式DP/DM的DC-level是17.78mA x (45Ω//45Ω) = 17.78mA x 22.5Ω = 400mV,其中17.78mA是电流源(一般需要PHY外接参考电阻), 所以差模电压是800mV。DC-level of LS/FS is 3.3V。

HS PHY DP/DM上串联10Ω电阻带来的信号完整性问题如下计算所示。

Center

Udevice = 17.78mA*(45//(10+45)) = 440.1mV, Uhost = (45/(45+10))*440.1 = 360.1mV

1.3 Capture the USB2.0 Reset Signals
Capture the USB signals Dm and Dp with a scope (preferably 1 GHz or better) during the reset.
Set timebase to 20 ms/div, trigger on falling edge of Dp with trigger level set to 1.5V. Trigger position at the left of the screen.

1.4 Chirp握手
USB 2.0 controller sets ULPI.Function Control.OpMode[4:3] = 10b (Chirp mode, Disable bit-stuff and NRZI encoding), which will generate ChirpK when reset is receiving from Host downstream.
1)Chirp K信号
Chirp K的电压幅值为800 mV = (host 45 Ohm // device 1.5 K Ohm) x 17.78 mA,持续时间约1到7 ms。
2)Chirp KJ信号
设备检测到Hub发送的3对KJ序列后,切换到高速收发器,此后Hub发送的KJ序列电压幅值降为400 mV = (host 45 Ohm // device 45 Ohm) x 17.78 mA,Chirp KJ的频率大概是10KHz。

1.5 Tx和Rx Tuning
1.5.1 far end and near end
far end: more than 10cm cable, iPhone connected to HU via cable
near end: less than 10cm cable, USB flash drive connected to HU
bad cable: Remove ESD

1.5.2 4个放大器
发送放大器,接收放大器,静噪检查放大器(检测地板电压),断开检测放大器(检测天花板电压)。

1.5.3 Tx
USB2 Pre-emphasis:预加重,可以放大发送信号的高频部分。
rise/fall time:You can raise these values for quick slew rate.

1.5.4 Rx
USB2 squelch:接收探测包络(静噪检测)。例如,设成100mV, 就是说DP/DM的DC-level在100mV 以下的信号USB2 XCEIV 认为都是噪音,因为USB2 的DP/DM的DC-level大概是400mV。

detail:squelch level = envelop, 静噪(包络)检测电压,在PHY parameters里面这个电压可以设置的,假如设置了这个值是100mV,意思就是当PHY Rx 从DP/DM上接收到的电压绝对值小于100mV的信号,PHY认为是噪音,直接丢弃。

Host disconnect threshold adjustment:
USB断开时,由于2个并联的45 Ohm电阻只剩一个,瞬时反射电压是45 Ohm * 17.78 mA = 800 mV,所以一般取一个折中的数据625 mV,大于该阈值就表示USB连接已经断开。

1.6 PHY Retention
一种低功耗Power Gating技术。

1.7 QCOM Chipidea USB2 PHY tuning
HSETT:HS Electrical Test Tool,USB-IF官方测试device眼图的PC软件,运行时,会将Windows默认的EHCI驱动替换成USB-IF官方写的驱动,百佳泰提供USB-IF认证测试。
Device眼图:单眼皮形状。
Host眼图:双眼皮形状。如果眼图是双眼皮,可判断出信号可能有串扰或预(去)加重。
0x82:PARAMETER_OVERRIDE_C
bit 6:0 -- for decreasing rise/fall time(slew-rate) and raising pre-emphysis
// /sys/module/phy_msm_usb/parameters/override_phy_init
// format
// <val addr [...] val addr 0xffffffff>;
&usb_otg {
        [...]
        qcom,hsusb-otg-phy-init-seq =
        <0x44 0x80 0x68 0x81 0xXX 0x82 0x13 0x83 0xffffffff>;
};

1.8 Mstar
Mstar 6A938 (2016) uses own USB2.0 PHY.

2 APL xHCI HS眼图调试
2.1 EHCI眼图调试寄存器设置流程
第一步:把寄存器USBCMD的bit4和bit5设成0
第二步:把寄存器USBCMD的bit0和bit6设成0
第三步:
- 对应的USB port的PORTSC,port suspend(bit7)设置成0
- 然后把测试模式selector(取值范围:>0,<5,这个数字对应眼图夹具上的那个开关的拨弄的编号)写到PORTSC中(selector << 16)

2.2 xHCI每个port的4个寄存器
- EHCI每个port都有一个寄存器PORTSC
- APL (Gen9, A39X0) xHCI中每个2.0和3.0 port entry的寄存器个数(包括PORTSC)都是4,并且每个port entry占了16个字节

2.3 xHCI HS眼图调试寄存器设置流程
第一步:把寄存器USBCMD的bit0设成0
第二步:
- 对应的USB port的PORTSC,port power(bit9)设置成0
- 然后把测试模式selector(取值范围:>0,<5,这个数字对应眼图夹具上的那个开关的拨弄的编号)写到PORTPMSC中(selector << 28)

验证方法:
- 把selector的值设成1,这时候你用万用表去量D+的电压为高(0.4V),而D-的电压为0,就说明寄存器设置对了
- 要测试眼图,只要把selector设成4就行了

注意点:
1)测试Host眼图时Golden Device参考板使用Cypress Ref Board
2)Intel xHCI HS不支持修改DC level(400mV)

2.4 xHCI HS Roothub眼图测试patch
in xhci-hub.c
int xhci_hub_control(struct usb_hcd *hcd,
    u16 typeReq, u16 wValue,
    u16 wIndex, char *buf, u16 wLength)
{
    [...]
    unsigned selector;
    [...]

        case SetPortFeature:
            if (IS_ENABLED(
                CONFIG_USB_EHSET_TEST_FIXTURE))
                selector = wIndex >> 8;
            [...]
            /* p320, s4.19.6 Port Test Modes
             * in xhci spec
             */
            case USB_PORT_FEAT_TEST:
                if (!IS_ENABLED(
                CONFIG_USB_EHSET_TEST_FIXTURE))
                {
                    (void)selector;
                    goto error;
                }

                if (hcd->speed >= HCD_USB3)
                    goto error;

                if (!selector || selector > 5)
                    goto error;

                spin_unlock_irqrestore(&xhci->lock,
                    flags);
                xhci_quiesce(xhci);
                spin_lock_irqsave(&xhci->lock,
                    flags);

                /*
                 * Put all enabled ports into
                 * Disabled state, Port Power = 0
                 * FIXME: only can set
                 * port_array[#wIndex] to PP = 0
                 */
                temp = readl(port_array[wIndex]);

                temp &= ~(1 << 9);
                writel(temp, port_array[wIndex]);
                temp = readl(port_array[wIndex]);

                spin_unlock_irqrestore(&xhci->lock,
                    flags);
                retval = xhci_halt(xhci);
                spin_lock_irqsave(&xhci->lock,
                    flags);

                temp = readl(port_array[wIndex] +
                    PORTPMSC);
                temp &= ~(0xf << 28);
                temp |= selector << 28;
                writel(temp, port_array[wIndex] +
                    PORTPMSC);

                break;
    [...]
}

3 EMC测试
3.1 出问题的RF频点
步长20MHz,380MHz和440Mhz容易出问题。

3.2 EMC干扰后,USB设备断开走的代码路径
- U盘,走hub.c的usb_reset_device();USB设备使用过程中复位与设备第一次连接复位的区别是udev->config非空;获得syspath路径函数kobject_get_path(kobj, GFP_KERNEL)
- USB转以太网,走hub.c的EM interference
- 表现与手工插入、移除一样

3.3 寄存器判断 - xHCI
宏中有大写C(change)的表示描述的是wPortChange。
每次insertion有多次portsc寄存器打印,是因为:
- USB reset前,调用hub_port_debounce()多次轮训portsc寄存器,确认设备连接
- USB reset时,调用hub_port_wait_reset()多次轮训portsc寄存器确认复位是否成功(检查portsc.bit1是否为1,1表示成功,否则失败)

wPortStatus(对应到xHCI portsc.bit0 - portsc.bit15):
bit0 - 有无设备连接,portsc.bit0
bit1 - 端口是否使能,portsc.bit1
bit4 - 端口是否有复位信号,portsc.bit4
bit8 - 端口电源,portsc.bit9,for USB2
bit8...bit5 - PORT_LINK_STATE,portsc.bit8...portsc.bit5,for USB3
wPortChange(对应到xHCI portsc.bit17 - portsc.bit31):
bit0 - 端口连接改变位,portsc.bit17
bit1- 端口使能/禁止改变位,portsc.bit18

4 TDR
- 时域反射计:又称为电缆雷达,测量传输线、FPC、USB线缆等的阻抗是否均匀
- TDR测试设备:USB VNA(Vector Network Analyzer),矢量网络分析仪
- TDR测试时的激励脉冲(TDR阶跃脉冲发生器)的周期需要与真实波形的周期一样,譬如480MHz的USB HS数据
- iAP2或者U盘数据传输的过程中出现usb_reset_device(),可以在这个函数中对cable dpdm进行放电处理,这样可以消除由于cable的TDR测试不合格并且长时间运行导致容抗或者阻抗变化(USB眼图中,容抗越大,上升沿和下降沿越慢)而致使的USB设备断开后无法重新re-enumerate
- 差分信号为什么在高速传输中电压往往会很低呢?原因就是为了获得更短的上升沿时间,这样数据传输速率就上去了

5 URLs
daisho USB
http://www.greatscottgadgets.com/daisho/

6 Abbreviations
AFE:USB PHY Analog Front-end
ARC:Argonant RISC Core
BYOD:bring-your-own-device,CarPlay和Android Auto就属于BYOD
CCGP:Windows USB Common Class Generic Parent,Linux内核类似的驱动就是usb_generic_driver(generic.c)
CCGP MI_:Common Class Generic Parent Multi Interface
Cross-talk:测试串扰使用的字节一般是0x55和0xAA
CYPRESS TD_Poll:Task Dispatch
Daisho:大小
DWC2:Design Ware Controller 2,Apple的嵌入式设备,包括iPad和iPhone都是使用的DWC2
giveback:归还 - ehci_urb_done() -> usb_hcd_giveback_urb()。USB PD中的giveback(= 1)指sink会响应source的GotoMin请求,返还部分电力给source。
halt:停车或者站住,来自于德语;USB endpoint停止运行,返回stall handshake。recovery方法:control ep接收下一次SETUP PID时,自动清除halt标志;其它ep使用clear_feature复位ep halt。
HSSQ:USB PHY High-speed Squelch
HX3C:USB Type-C Hub with PD
IAAD:EHCI Interrupt on Async Advance
ISP1161:Philips' Integrated host Solution Pairs 1161,“Firms introduce USB host controllers”,https://www.eetimes.com/document.asp?doc_id=1290054
nds:Nintendo Dual Screen,ULPI NXT、DIR、STP
PIPE:PHY Interface for PCI Express
SL811HS:Cypress/ScanLogic 811 Host/Slave,性能上与ISP1161(Integrated host Solution Pairs 1161)相当
SSUSB-QMP:QCOM Multiple Protocol Phy
suspendM:UTMI suspend Macrocell
TDI:TransDimension Inc.,该公司首先发明了将TT集成到EHCI RootHub中的方法,这样对于嵌入式系统来说,就省去了OHCI/UHCI的硬件,同时降低了成本,作为对该公司的纪念,Linux内核定义了宏ehci_is_TDI(ehci);产品UHC124表示USB Host Controller;收购了ARC USB技术;现已被chipidea收购,chipidea又被mips收购
TDR: Time Domain Reflectrometer
TT:Transaction Translator(事务转换器,将USB2.0的包转换成USB1.1的包)
TVS:Transient Voltage Suppressor,特殊二极管,连到VBUS、DP/DM、GND,防止浪涌电流(Surge)
USB BH reset:Bigger Hammer or Brad Hosler,表示warm reset;you may be confused why the USB 3.0 spec calls the same type of reset "warm reset" in some places and "BH reset" in other places. "BH" reset is supposed to stand for "Big Hammer" reset, but it also stands for "Brad Hosler". Brad died shortly after the USB 3.0 bus specification was started, and they decided to name the reset after him. The suggestion was made shortly before the spec was finalized, so the wording is a bit inconsistent.
USB3 BULK Stream ID:对应到SCSI Tag或者SATA Tag
USB Host枚举时-71错误码可能原因:DP和DM走线太长导致眼图差;DP和DM接反了
USB PET:USB Protocol and Electric Test Instrument
VNA:Vector Network Analyzer,矢量网络分析仪
共模电感:会导致USB眼图变差,所以要选择好一点的共模电感

### 回答1: C-Phy和D-Phy是两种不同的物理层传输技术,用于在电子设备之间传输数据。它们都是用于实现高速数据传输的接口标准。 C-Phy是指"Camera-Physical",主要用于相机系统中的数据传输。它是一种串行接口技术,能够通过相机传输器和图像接收器连接相机传感器和图像处理器。C-Phy提供了较高的带宽和速度,可以支持高分辨率和高质量的图像传输。它还具有较低的功耗,对于电源管理来说非常重要。C-Phy还能够通过单根线缆同时传输图像和控制信号,提高了系统的整体性能和效率。 D-Phy是指"Display-Physical",主要用于显示系统中的数据传输。与C-Phy类似,D-Phy也是一种串行接口技术,用于连接图像源和显示器。D-Phy接口支持高分辨率和高刷新率的视频传输,可以用于手机、平板电脑、电视等各种显示设备。D-Phy还具有抗干扰性能强、传输距离较远等特点,可以保证稳定的数据传输质量。 总结来说,C-Phy和D-Phy是两种不同的物理层接口标准,用于相机系统和显示系统中的数据传输。它们都提供了高速、高质量的数据传输能力,促进了电子设备的发展和应用。 ### 回答2: C-Phy和D-Phy是两种不同的物理层协议,用于传输高速串行数据,主要应用在移动设备和显示器之间的接口协议中。 C-Phy是一种采用串行方式传输数据的物理层协议。它利用并行通道将数据划分为多个通道,每个通道传输不同的数据位。这种方式能够提供高带宽和低功耗的传输,适用于像摄像头和显示器等需要大量数据传输的设备。C-Phy的优点是可以同时传输多个并行的数据通道,提高传输效率和速度。 D-Phy是一种差分信号传输的物理层协议。它通过在传输中使用正负两种电平来表示数据位,能够减少噪声和电磁干扰,提高数据传输的稳定性和可靠性。D-Phy通常应用于高速串行接口协议,如MIPI(移动行业处理器接口)系列标准中的摄像头和显示器接口。D-Phy的优点是可以在长距离传输中保持信号的完整性和质量。 总结来说,C-Phy和D-Phy是两种不同的物理层协议,用于高速串行数据传输。C-Phy适用于需要高带宽和低功耗传输的设备,可以同时传输多个并行通道的数据。而D-Phy则适用于长距离传输和对信号稳定性要求较高的场景,通过差分信号传输提高传输的可靠性。这两种协议在移动设备和显示器接口中发挥重要作用,促进了高速、稳定、可靠的数据传输。 ### 回答3: C-Phy和D-Phy是两种常见的电子设备之间进行数据传输的物理层协议。这两种协议都是为了在不同设备之间实现高效的数据传输而设计的。 C-Phy是指Camera-Phy,它是一种用于摄像头模块和处理器之间进行数据传输的协议。它采用了串行的数据传输方式,通过差分信号进行高速数据传输。C-Phy主要用于移动设备中的摄像头和相关的处理器之间进行通信,如智能手机、平板电脑等。 D-Phy是指Display-Phy,它是一种用于显示器和处理器之间进行数据传输的协议。它同样采用了差分信号进行高速数据传输,可以支持高分辨率的显示。D-Phy主要用于移动设备中的显示器和相关处理器之间进行通信,如智能手机、平板电脑等。 C-Phy和D-Phy的优点在于它们都支持高速数据传输,可以有效地满足现代移动设备对于数据传输速度的需求。此外,它们采用了串行传输方式和差分信号,可以减少信号的干扰和失真,提高数据传输的稳定性和可靠性。 总而言之,C-Phy和D-Phy是两种用于不同设备之间进行高速数据传输的物理层协议。它们的应用领域主要集中在移动设备中,可以提供高效、稳定和可靠的数据传输。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值