当前位置: 首页 > news >正文

IBERT 眼图机制

目录

  • IBERT 眼图机制
    • 眼图理论
    • 坐标系
    • 如何评价眼图
    • 手动眼图扫描

IBERT 眼图机制

眼图理论

在这里插入图片描述

左图是我们常用示波器看到的眼图效果,右图是使用 IBERT 的眼图。IBERT 眼图会比示波器眼图更小,是由于受到非常低概率抖动和噪声的影响,眼图有些许闭合。IBERT 的眼图颜色指示误码率高低。

  • data sample:通过 RX 均衡器后采样从均衡后的差分波形中恢复的 RXDATA 。水平采样位置由 CDR 函数确定,垂直位置为差分零点。
  • offset sample:为了实现眼睛扫描功能,提供了一个额外的可编程偏移量采样器。通过横向和纵向偏移采集的全部阵列构成眼图。

图 4-19 中灰色部分是 PMA 架构中支持眼睛扫描的部分

在这里插入图片描述

RX 接收数据在经过均衡器后被三个采样器采样,经过解串后输出给 PCS。其中

  • Rdata:数据样本
  • Sdata:偏移样本
  • HORZ_OFFSET :提供了采样时间的偏移
  • VERT_OFFSET: 改变了均衡波形比较的差分电压阈值

在这里插入图片描述

PMA 采集到的数据,在 PCS 内部进行比较

  • Sample Counter:统计采样的数量
  • Error Counter:统计数据样本和偏移样本不一致的数量

简单理解,最终在眼图上显示的每个点就是错误计数与采样计数的比值。用 Heat map 视图可以明显看出来

在这里插入图片描述

坐标系

来看 12.5Gb/s 速率的 IBERT 眼图,上图的 contour(Filled)视图
在这里插入图片描述

  • Y 轴

    Y 轴为电压维度,这里的单位是 codes,在【UG576】Table 4‐20 中可以找到对应关系

在这里插入图片描述

这里的 count 对应单位 codes,默认1.5 mV/count

  • X 轴

    X 轴为时间维度,这里的单位为 UI。手册中没有明显说明,参考社区回答

    Eye scan using IBERT (xilinx.com)

    UI 换算与 GT 的速率有关,以12.5 Gb/s 为例,1 UI = 1000/12.5 ps = 80 ps。图中 -0.5 UI ~ 0.5 UI 就对应 -40 ps ~ 40 ps。

  • Z轴

    我们知道,Z 轴表示 BER,那么 BER 的精度由什么来控制?在 create scan 界面可以看到 Dwell 选项里面有 BER 的选择,这里就决定了 BER 的精度。

在这里插入图片描述

但是选择精度更高意味着采样点数更多,例如 1e-5 精度每个 offset 需要采集 1e5 样本,这里的 offset 由设置中的 increment 决定。提高精度将大幅增加眼图所需的时间。

如何评价眼图

大部分的资料都有提及,眼图中蓝色区域越大表示信号完整性越好

那么眼图睁开到什么情况可以用呢?

手册中没有明显提及这个问题,但是根据社区回答,其实是有一个标准可以参考

too wide eye from 2D eye scan via in-system-ibert (xilinx.com)

Any parameters we can tune GTY transceiver to make eye open area bigger? (xilinx.com)

在这里插入图片描述

在这里插入图片描述

图中的 steps 对应眼图中的codes,当眼图中的蓝色区域大于图中临界值,说明信号完整性是满足要求的。

手动眼图扫描

利用 GT的 DRP 端口接口,以执行简单的眼部扫描。

64098 - Implementing RTL based Eye Scan in 7 Series GTX (xilinx.com)

67295 - Manual Eye Scan with UltraScale GTH in 9 steps (xilinx.com)

70872 - Manual Eye Scan with UltraScale+ GTH (xilinx.com)

66517 - Manual Eye Scan with UltraScale GTY in 10 steps (xilinx.com)

68785 - Manual Eye Scan with UltraScale+ GTY (xilinx.com)

相关文章:

  • 使用Poi-tl对word模板生成动态报告
  • 利用 Python 的包管理和动态属性获取(`__init__.py` 文件和 `getattr` 函数)特性来实现工厂方法模式
  • RHEL8 配置epel源
  • 深入探讨C语言中的高级指针操作
  • 生产环境中MapReduce的最佳实践
  • 微信小程序在不同移动设备上的差异导致原因
  • Startup-SBOM:一款针对RPM和APT数据库的逆向安全工具
  • Jenkins使用Publish Over SSH插件远程部署程序到阿里云服务器
  • vue3+ts+vite+pinia+element-plus搭建一个项目
  • 使用Docker-compose一键部署Wordpress平台
  • Bean对象生命周期流程图
  • Compose(2)声明式UI
  • 简简单单用用perf
  • Shell运算符
  • CDD数据库文件制作(五)——服务配置(0x19_DTC Code)
  • android 一些 utils
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • JavaScript 基础知识 - 入门篇(一)
  • JS字符串转数字方法总结
  • laravel with 查询列表限制条数
  • tweak 支持第三方库
  • TypeScript实现数据结构(一)栈,队列,链表
  • Vue学习第二天
  • 闭包--闭包作用之保存(一)
  • 搭建gitbook 和 访问权限认证
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 如何设计一个微型分布式架构?
  • 使用权重正则化较少模型过拟合
  • 问题之ssh中Host key verification failed的解决
  • Python 之网络式编程
  • Semaphore
  • #define、const、typedef的差别
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (剑指Offer)面试题34:丑数
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .Net 8.0 新的变化
  • .NET C# 使用GDAL读取FileGDB要素类
  • .Net core 6.0 升8.0
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Core中如何集成RabbitMQ
  • .NET DataGridView数据绑定说明
  • .NET 反射的使用
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .net的socket示例
  • /run/containerd/containerd.sock connect: connection refused
  • @angular/cli项目构建--http(2)
  • @RestController注解的使用
  • @Value获取值和@ConfigurationProperties获取值用法及比较(springboot)
  • [ A*实现 ] C++,矩阵地图
  • [.NET 即时通信SignalR] 认识SignalR (一)