眼图基础知识与详解

10分钟教会你看眼图

USB2.0 HUB眼图调试经验总结

一篇文章教你如何全面了解眼图测试!

预加重与去加重对眼图的影响

关于 USB 通信阻抗匹配的问题

硬件调试——眼图几个经典案例

眼图常见问题分析包含双眼皮的情况

PHY Tunning

  1. devicetree:
  2. qusb_phy0: qusb@1613000 {
  3. compatible = "qcom,qusb2phy";
  4. reg = <0x01613000 0x180>,
  5. <0x003cb250 0x4>,
  6. <0x01b40258 0x4>,
  7. <0x01612000 0x4>;
  8. qcom,qusb-phy-init-seq = <0xF8 0x80 QUSB_TUNE1 0x01613000+0x80 = 0x01613080
  9. 0xB3 0x84 QUSB_TUNE2
  10. 0x83 0x88 QUSB_TUNE3
  11. 0xC0 0x8C QUSB_TUNE4 (0x90 TUNE5)
  12. 0x30 0x08
  13. 0x79 0x0C
  14. 0x21 0x10
  15. 0x14 0x9C
  16. 0x9F 0x1C
  17. 0x00 0x18>;
  18. ...
  19. kernel:
  20. kernel/msm-4.19/drivers/usb/phy/phy-msm-qusb.c
  21. qusb_phy_probe
  22. qusb_phy_create_debugfs
  23. qphy->root = debugfs_create_dir(dev_name(qphy->phy.dev), NULL);
  24. debugfs_create_x8("tune1", 0644, qphy->root, &qphy->tune1);
  25. debugfs_create_x8("tune2", 0644, qphy->root, &qphy->tune2);
  26. qusb_phy_init
  27. if (qphy->qusb_phy_init_seq)
  28. qusb_phy_write_seq(qphy->base, qphy->qusb_phy_init_seq,
  29. qphy->init_seq_len, 0);
  30. /* If tune modparam set, override tune value */
  31. if (qphy->tune1) {
  32. writel_relaxed(qphy->tune1,
  33. qphy->base + QUSB2PHY_PORT_TUNE1);
  34. }
  35. if (qphy->tune2) {
  36. writel_relaxed(qphy->tune2,
  37. qphy->base + QUSB2PHY_PORT_TUNE2);
  38. }
  39. ...
  40. override:
  41. cd /sys/kernel/debug/1613000.qusb
  42. tune1 tune2 tune3 tune4 tune5
  43. echo 0xxF8 > tune1

Eye diagram

信号不可能每次高低电平的电压值都保持完全一致,也不能保证每次高低电平的上升沿、下降沿都在同一时刻。如图,由于多次信号的叠加,眼图的信号线变粗,出现模糊(Blur)的现象。所以眼图也反映了信号的噪声和抖动:

在纵轴电压轴上,体现为电压的噪声(Voltage Noise = 眼幅高与眼高之间的差值);

在横轴时间轴上,体现为时域的抖动(Jitter = 眼交叉比),太大会造成误码率增加,越小信号质量越好,发生误码的机率越低。

由于噪声和抖动,眼图上的空白区域变小。在除去抖动和噪声的基础上,眼图上空白的区域在横轴上的距离称为眼宽(Eye Width),在眼图上叠加的数据足够多时,眼宽很好的反映了传输线上信号的稳定时间;同理,眼图上空白的区域在纵轴上的距离称为眼高(Eye Height),在眼图上叠加的数据足够多时,眼高很好的反映了传输线上信号的噪声容限,同时,眼图中眼高最大的地方,即为最佳判决时刻。

套住模板只是眼图的最基本的要求,如果有覆盖到红色区域的,一般眼图的质量是最差的,可能更多的需要硬件去rework;如果出现双眼皮的情况,在上面转载的最后的两篇博客中写道,有可能是阻抗不匹配,也有可能有串扰需要加重处理。

  1. tune1 HS output impedance from 45 Ω Nominal in FSLS mode
  2. Tx swing等于输出电流乘以并联QCM/QCS USB 2.0 PHY 输出阻抗和接收器终端电阻的电阻,
  3. 在低速ls和全速模式fs下是电压驱动的,但在高速hs模式下是电流驱动的,所以仅能调整fsls的输出阻抗,
  4. 一般DP DM上有45Ω接地,USB线的特性阻抗为90Ω,想源端与USB线匹配就需要串电阻,具体阻值是要根据驱动器的输出阻抗来决定
  5. tune2 HS output current to increase Vlogic_high level + HSTX slew-rate
  6. slew-rate应该是影响眼图的斜率,tune1 + tune2 + tune4 结合可以调整眼图的质量,增加usb的驱动能力
  7. tune3 Receiver sensitivity, adjust the squelch threshold to compensate for a USB bus series loss
  8. 接受灵敏度作用时PCB上传输线的长度的增加,信道的损耗会变大,眼图的高度会变小,但不是说所有走线越短越好。
  9. tune4 add pre-emphasis to amplitude or no pre-emphasis
  10. 在高速信号传输中,信号链路对高频信号的衰减大于对低频信号的衰减,这就会导致高速信号中高频和低频之间巨大的幅度差,
  11. 反应在眼图上就是减小了眼高,并增大了Jitter(眼皮的厚度),预加重目的就是为了提升信号中的高频部分,尽量平衡高频和低频的分量
  12. tune5 Disconnection voltage,the software does not override this register
  13. 这个就字面意思上,应该时不需要去tunning的吧
  14. qcom,tune2-efuse-correction: The value to be adjusted from fused value for improved rise/fall times.
  15. 高通的有些平台可能会将生产时的fuse校准值写入 TUNE1 TUNE2 寄存器,所以还需要dtsi中做特殊处理
  16. 如果是qusb v2 driver的版本,支持一组单独的参数qusb-phy-host-init-seqhost模式下

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

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

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. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-58 - 文件下载

    1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...

  2. 【CentOS】rpm包安装Jdk

    1.系统环境检查 前提情要:[如果是使用虚拟机的Linux系统,强烈建议先打个快照备份一下,以免操作失误无法重来] 首先查看系统是否存在java环境 java -version 因为点选了环境工具,这 ...

  3. conda报错、anconda报错:requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

    anconda报错,报错信息: requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 不能使用c ...

  4. AI领域的国产显卡如何在现有技术下吸引用户 —— 廉价增加显存 —— 大显存

    先给出一个不大准确的但相差不差的背景介绍: 同样性能级别的显卡,NVIDA的24G的要3W,32G的要5W,48G的要7W, 80G的要10W. 国产同同性能的显卡32G的要10W,48G的要15W, ...

  5. Linux共享内存通信的C语言Demo代码

    重点注明: 本文代码来源于: https://blog.csdn.net/github_38294679/article/details/122360026 ===================== ...

  6. Git-HEAD 的含义

    在 Git 中,"HEAD" 是一个特殊的引用,它指向当前所处的分支或提交. 当你进行一些操作时,比如提交代码.切换分支等,HEAD 的指向会随之改变.下面是 HEAD 在不同情况 ...

  7. Python 潮流周刊#64:Python 的函数调用还很慢么?(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. QT中TreeWidget树控件的使用

    关于Item Widgets中Tree Widget的使用方法! TreeWidget树控件的使用 创建列表头, 该控件有什么属性 QStringList header_list; header_li ...

  9. 手把手教Linux驱动5-自旋锁、信号量、互斥体概述

    在Linux系统中有大量的临界资源需要保护,如何让各个任务有条不紊的访问这些资源,这涉及到Linux中并发访问的保护机制设计相关知识.后面会详细介绍这几个机制. (据可靠消息,锁的实现经常出现在笔试环 ...

  10. Win32 菜单添加复选标记和单选标记

    在菜单中添加复选标记用CheckMenuItem函数 CheckMenuItem函数原型: DWORD WINAPI CheckMenuItem( _In_ HMENU hMenu, //菜单句柄 _ ...