Android Qcom USB Driver学习(六)

该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零)

眼图基础知识与详解
10分钟教会你看眼图
USB2.0 HUB眼图调试经验总结
一篇文章教你如何全面了解眼图测试!
预加重与去加重对眼图的影响
关于 USB 通信阻抗匹配的问题
硬件调试——眼图几个经典案例
眼图常见问题分析包含双眼皮的情况

PHY Tunning

devicetree:
qusb_phy0: qusb@1613000 {
                compatible = "qcom,qusb2phy";
                reg = <0x01613000 0x180>,
                      <0x003cb250 0x4>,
                      <0x01b40258 0x4>,
                      <0x01612000 0x4>;

                qcom,qusb-phy-init-seq = <0xF8 0x80   QUSB_TUNE1  0x01613000+0x80 = 0x01613080
			                  0xB3 0x84   QUSB_TUNE2
			                  0x83 0x88   QUSB_TUNE3
			                  0xC0 0x8C   QUSB_TUNE4    (0x90  TUNE5)
			                  0x30 0x08
			                  0x79 0x0C
			                  0x21 0x10
			                  0x14 0x9C
			                  0x9F 0x1C
			                  0x00 0x18>;
			   ...

kernel:
kernel/msm-4.19/drivers/usb/phy/phy-msm-qusb.c
qusb_phy_probe
    qusb_phy_create_debugfs
        qphy->root = debugfs_create_dir(dev_name(qphy->phy.dev), NULL);
        debugfs_create_x8("tune1", 0644, qphy->root, &qphy->tune1);
        debugfs_create_x8("tune2", 0644, qphy->root, &qphy->tune2);

qusb_phy_init
    if (qphy->qusb_phy_init_seq)
        qusb_phy_write_seq(qphy->base, qphy->qusb_phy_init_seq,
            qphy->init_seq_len, 0);

/* If tune modparam set, override tune value */
    if (qphy->tune1) {
        writel_relaxed(qphy->tune1,
            qphy->base + QUSB2PHY_PORT_TUNE1);
    }
  
    if (qphy->tune2) {
        writel_relaxed(qphy->tune2,
            qphy->base + QUSB2PHY_PORT_TUNE2);
    }
       ...

override:
cd /sys/kernel/debug/1613000.qusb
tune1  tune2  tune3  tune4  tune5
echo 0xxF8 > tune1

Eye diagram

在这里插入图片描述在这里插入图片描述

    信号不可能每次高低电平的电压值都保持完全一致,也不能保证每次高低电平的上升沿、下降沿都在同一时刻。如图,由于多次信号的叠加,眼图的信号线变粗,出现模糊(Blur)的现象。所以眼图也反映了信号的噪声和抖动:
    在纵轴电压轴上,体现为电压的噪声(Voltage Noise = 眼幅高与眼高之间的差值);
    在横轴时间轴上,体现为时域的抖动(Jitter = 眼交叉比),太大会造成误码率增加,越小信号质量越好,发生误码的机率越低。
    由于噪声和抖动,眼图上的空白区域变小。在除去抖动和噪声的基础上,眼图上空白的区域在横轴上的距离称为眼宽(Eye Width),在眼图上叠加的数据足够多时,眼宽很好的反映了传输线上信号的稳定时间;同理,眼图上空白的区域在纵轴上的距离称为眼高(Eye Height),在眼图上叠加的数据足够多时,眼高很好的反映了传输线上信号的噪声容限,同时,眼图中眼高最大的地方,即为最佳判决时刻。
    套住模板只是眼图的最基本的要求,如果有覆盖到红色区域的,一般眼图的质量是最差的,可能更多的需要硬件去rework;如果出现双眼皮的情况,在上面转载的最后的两篇博客中写道,有可能是阻抗不匹配,也有可能有串扰需要加重处理。

tune1           HS output impedance from 45 Ω Nominal in FSLS mode
                Tx swing等于输出电流乘以并联QCM/QCS USB 2.0 PHY 输出阻抗和接收器终端电阻的电阻,
                在低速ls和全速模式fs下是电压驱动的,但在高速hs模式下是电流驱动的,所以仅能调整fsls的输出阻抗,
                一般DP DM上有45Ω接地,USB线的特性阻抗为90Ω,想源端与USB线匹配就需要串电阻,具体阻值是要根据驱动器的输出阻抗来决定
tune2           HS output current to increase Vlogic_high level   +  HSTX slew-rate
                slew-rate应该是影响眼图的斜率,tune1 + tune2 + tune4 结合可以调整眼图的质量,增加usb的驱动能力
tune3           Receiver sensitivity, adjust the squelch threshold to compensate for a USB bus series loss
                接受灵敏度作用时PCB上传输线的长度的增加,信道的损耗会变大,眼图的高度会变小,但不是说所有走线越短越好。
tune4           add pre-emphasis to amplitude or no pre-emphasis
                在高速信号传输中,信号链路对高频信号的衰减大于对低频信号的衰减,这就会导致高速信号中高频和低频之间巨大的幅度差,
                反应在眼图上就是减小了眼高,并增大了Jitter(眼皮的厚度),预加重目的就是为了提升信号中的高频部分,尽量平衡高频和低频的分量
tune5           Disconnection voltage,the software does not override this register
                这个就字面意思上,应该时不需要去tunning的吧

qcom,tune2-efuse-correction: The value to be adjusted from fused value for improved rise/fall times.
高通的有些平台可能会将生产时的fuse校准值写入 TUNE1 或 TUNE2 寄存器,所以还需要dtsi中做特殊处理
如果是qusb v2 driver的版本,支持一组单独的参数qusb-phy-host-init-seq在host模式下

    眼图测试还分近端和远端,一般近端的要求会比远端的苛刻,并不说是只跟数据线的距离有关
    以上是我的个人理解的基础知识,不同平台用的寄存器含义是不同的,所以基础原理我觉得差不多,具体问题具体平台需要具体分析。

<think>好的,用户之前问过关于FPGA中SerDes模块的介绍,现在他们又问“预加重/去加重是什么”。我需要先回顾一下之前的对话,确保回答的连贯性。之前我在介绍SerDes的发送端时提到了预加重和去加重,是用来补偿高频信号衰减的。现在用户可能想更深入了解这两个技术的具体作用、原理和应用场景。 首先,用户可能是工程师或学生,正在学习高速数字电路设计,或者在项目中遇到信号完整性问题。他们需要了解预加重和去加重的基本概念、工作原理以及实际应用中的区别。可能还想知道在具体设计时如何选择使用哪一种,或者它们如何影响系统性能。 我需要确保解释清晰,从基本定义入手,分点说明预加重和去加重的目的、实现方式、优缺点以及应用场景。还要比较两者的区别,帮助用户理解在不同情况下如何选择。可能还需要提到相关的技术,如均衡器,但这里主要聚焦于预加重和去加重。 需要注意避免过于技术化的术语,但也要保持准确性。例如,解释高频信号衰减的原因时,可以提到趋肤效应和介质损耗,但需要用简单易懂的语言。同时,举例说明不同标准中的使用情况,比如PCIe和USB,这样用户能联系实际应用。 另外,用户可能在设计PCB或选择FPGA的SerDes配置时需要这些信息,所以需要强调实际应用中的考虑因素,如传输距离、数据速率和信道特性。可能还需要提到测试和仿真,比如眼图分析,来验证预加重或去加重的效果。 最后,总结部分要简明扼要,强调两者都是为了改善信号完整性,但适用场景不同。预加重适合发射端补偿,而去加重适合减少高频噪声。这样用户能快速抓住要点,应用到实际项目中。</think>在高速数字通信中(如FPGA的SerDes模块、PCIe、以太网等),**预加重(Pre-emphasis)**和**去加重(De-emphasis)**是两种用于补偿信号在传输过程中高频衰减的技术。它们的核心目标是**改善信号完整性**,确保接收端能够正确识别数据。 --- ### **1. 为什么需要预加重/去加重?** - **问题背景**: 高频信号在通过电缆、PCB走线或背板传输时,由于**趋肤效应**(高频电流集中在导体表面)和**介质损耗**,信号的高频分量衰减更快,导致波形失真(如边沿模糊),进而引发码间干扰(ISI)和误码。 - **直观现象**: 信号在传输后,原本陡峭的上升/下降沿变得平缓,接收端难以准确判断数据比特的边界。 --- ### **2. 预加重(Pre-emphasis)** #### **原理** - **发射端增强高频分量**:在信号发送时,人为地**提升信号跳变边沿(高频分量)的幅度**,补偿传输过程中的高频衰减。 - **实现方式**: 在发送端对数据波形进行预畸变,例如: - 在信号从0→1或1→0的跳变时,短暂提高驱动电流(增大幅度)。 - 保持连续相同比特(如多个0或1)时的幅度较低。 #### **典型波形** ``` 原始信号: _|‾|_|‾|_|‾|_ 预加重信号: _|‾¯¯|_|‾¯¯|_|‾¯¯|_ (跳变时幅度更高,后续恢复为正常电平) ``` #### **优点与缺点** - **优点**: - 改善信号边沿的陡峭度,减少接收端误码。 - 适合中短距离传输(如芯片间、板级互连)。 - **缺点**: - 可能增加发射端功耗和电磁干扰(EMI)。 #### **应用场景** - PCIe、SATA、HDMI等接口的发射端。 - FPGA的SerDes模块中常见配置选项(通过调整预加重系数)。 --- ### **3. 去加重(De-emphasis)** #### **原理** - **发射端抑制低频分量**:在信号发送时,**降低连续相同比特(低频分量)的幅度**,间接突出跳变边沿的相对强度。 - **实现方式**: 在发送端对连续相同比特的幅度进行衰减,例如: - 当数据比特连续重复(如多个0或1)时,降低驱动电平。 - 仅在数据跳变时保持正常幅度。 #### **典型波形** ``` 原始信号: _|‾|_|‾|_|‾|_ 去加重信号: _|‾|___|‾|___|‾|___ (连续相同电平时幅度降低,跳变时恢复为正常电平) ``` #### **优点与缺点** - **优点**: - 减少信号整体幅度波动,降低功耗和EMI。 - 适合长距离传输或高频损耗严重的信道。 - **缺点**: - 可能降低信号平均幅度,需接收端配合均衡器使用。 #### **应用场景** - USB 3.0/3.1、DisplayPort、高速背板互连。 - 与接收端均衡器(如CTLE、DFE)结合使用效果更佳。 --- ### **4. 预加重 vs 去加重的核心区别** | **特性** | **预加重(Pre-emphasis)** | **去加重(De-emphasis)** | |----------------|------------------------------------|-----------------------------------| | **核心思想** | **增强跳变边沿的高频分量** | **衰减连续相同比特的低频分量** | | **实现方式** | 跳变时短暂提高幅度 | 连续相同电平时降低幅度 | | **功耗** | 较高(需瞬时高驱动能力) | 较低 | | **适用场景** | 中短距离、高频损耗适中 | 长距离、高频损耗严重 | | **典型协议** | PCIe, SATA, HDMI | USB 3.x, DisplayPort | --- ### **5. 技术细节与设计考虑** 1. **参数配置**: - 预加重/去加重的强度通常可调(如3dB、6dB),需根据信道特性(损耗、长度)优化。 - 过高的预加重可能引发过冲(Overshoot)或振铃(Ringing),反而恶化信号质量。 2. **与均衡器的协同**: - 去加重常与接收端的**均衡器**(如CTLE连续时间线性均衡器、DFE判决反馈均衡器)配合使用,进一步提升信号完整性。 3. **协议依赖**: - 不同通信标准对预加重/去加重的定义和实现可能不同(例如PCIe Gen3使用去加重,而Gen4/5转向更复杂的均衡技术)。 --- ### **6. 总结** - **预加重**和**去加重**本质是通过发射端的信号预畸变,对抗信道的高频衰减,二者目标一致但实现方式相反。 - **选择依据**: - 预加重更适合需要突出边沿的场景(如短距离、低损耗)。 - 去加重更适合抑制低频噪声的场景(如长距离、高损耗)。 - 实际设计中需结合协议要求、信道仿真(如S参数模型)和实测(眼图分析)来优化参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值