眼图基础知识与详解

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模式下

眼图测试还分近端和远端,一般近端的要求会比远端的苛刻,并不说是只跟数据线的距离有关

以上是我的个人理解的基础知识,不同平台用的寄存器含义是不同的,所以基础原理我觉得差不多,具体问题具体平台需要具体分析。

Android Qcom USB Driver学习(六)的更多相关文章

  1. Delphi 调试连接 任意Android手机/平板/盒子(要安装Google USB Driver,并且还有USB的相关许多文章)

    Delphi有时候无法连接调试一些手机,解决方案: 1.安装Google USB Driver 2.通过设备管理器查看手机或平板USB的VID,PID 3.修改你的电脑上的android_winusb ...

  2. CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android. Buffer Overflow Vulnerability reported by #plzdonthackme, Soctt.

    CVE-2016-2502-drivers/usb/gadget/f_serial.c in the Qualcomm USB driver in Android.Buffer Overflow Vu ...

  3. Android自动化测试之Monkeyrunner学习笔记(一)

    Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...

  4. Android Wear(手表)开发 - 学习指南

    版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...

  5. Android群英传笔记——第六章:Android绘图机制与处理技巧

    Android群英传笔记--第六章:Android绘图机制与处理技巧 一直在情调,时间都是可以自己调节的,不然世界上哪有这么多牛X的人 今天就开始读第六章了,算日子也刚好一个月了,一个月就读一半,这效 ...

  6. Android 音视频开发学习思路

    Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 初级入门篇: Android 音视频开发(一) ...

  7. Head First Android --- Enable USB debugging on your device

    1. Enable USB debugging on your device    On your device, open “Developer options” (in Android 4.0 o ...

  8. Android命令行工具学习总结

    15.setting命令 setting命令可以很方便的更改系统设置中的参数(如修改系统默认输入法) 安卓Settings模块浅析:https://www.jianshu.com/p/ed8508fe ...

  9. 移动设备 小米2S不显示CD驱动器(H),便携设备,MTP,驱动USB Driver,MI2感叹号的解决方法

    小米2S不显示CD驱动器(H),便携设备,MTP,驱动USB Driver,MI2感叹号的解决方法 by:授客 QQ:1033553122 用户环境 操作系统:Win7 手机设备:小米2S   问题描 ...

  10. android的USB MTP && USB CDC/USBnet(ECM, NCM, ACM) && USB gardget

    MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议.早在智能手机普及前,数码相机和MP3播放器等都使用了MTP的前身PTP(Pictu ...

随机推荐

  1. 测试工程师-年终总结PPT

    2022年年终总结-xxx 一.首页 2022年年终总结暨2023年工作计划 汇报人:测试组-xxx 日期: 2023.1.13 二.目录 1.年度工作概述 2.工作亮点展示 3.持续精进点 4.明年 ...

  2. 【Spring-Security】Re07 持久化的记住我

    Security记住我功能底层实现依赖于SpringJDBC组件,如果有持久层框架的话,就由持久层框架实现 演示案例的选型,MysqlJdbc + MybatisStarter <depende ...

  3. 神奇的发现——所有的aarch64架构的CPU平台下的深度学习框架均不原生支持CUDA

    一个记录: 神奇的发型--所有的aarch64架构的CPU平台下的深度学习框架均不原生支持CUDA 不论是mindspore.pytorch.TensorFlow框架只要是aarch64架构的CPU下 ...

  4. Google公司的python编码规范指南

    原文地址: https://google.github.io/styleguide/pyguide.html ============================================= ...

  5. Kotlin 布尔值教程:深入理解与应用示例

    Kotlin 布尔值 在编程中,您经常需要一种只能有两个值的数据类型,例如: 是 / 否 开 / 关 真 / 假 为此,Kotlin 有一种布尔数据类型,可以取 true 或 false 值. 布尔值 ...

  6. 白鲸开源CEO郭炜在2024 DataOps发展大会上获聘专家

    2024年5月15日,白鲸开源CEO郭炜在2024 DataOps发展大会上被正式聘任为DataOps专家,并获得了荣誉证书.本次大会由中国通信标准化协会主办,中关村科学城管委会提供支持,大数据技术标 ...

  7. Next.js 中为什么 App Router 可能是未来,但 Pages Router 仍然重要?

    Next.js 作为一个强大的 React 框架,为开发者提供了两种路由系统:App Router 和 Pages Router.这两种路由系统各有特色,适用于不同的场景.本文将深入探讨这两种路由系统 ...

  8. Camera | 6.v4l2拓扑架构

    一. 设备节点.模块.拓扑结构关系 拓扑结构是我们了解MIPI-CSI内部模块以及与摄像头连接关系的最直观最便捷的方法. 1. 如何表示拓扑结构? file视角 v4l2视角 来自: 参考文档< ...

  9. vite.config.ts基础配置分享

    更多配置参考:https://vitejs.dev vite.config.ts import vue from '@vitejs/plugin-vue' import vueJsx from '@v ...

  10. JavaScript设计模式样例六 —— 抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern) 定义:抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来.或者说,是其他工厂的工厂.目的:提供一个创建一系列相关或 ...