Serdes 原理及调试学习

2023-05-16

Serdes原理与设计实践之一:Serdes简介

1. Serdes简介

为了提高接口传输带宽,设计中经常采用并行总线设计。并行总线通过提高时钟速率和数据位宽来提高传输带宽。限制接口传输带宽主要有2个方面:

a. 时钟速率。它决定了发送和接收端的采样速率。
随着时钟速率的提高,由于传输通路的非理想性,会带来严重的信号完整性问题,导致接收端无法正确解析接收到的信号。较高的时钟速率对应的采样窗口缩小,对芯片设计也提出了较高要求。

b. 数据位宽。它决定了每次传输的数据量。
提高数据位宽,需要占用较多的芯片IO。同时,不同IO之间的Skew也会导致采样困难。

因此,在实际设计中,不可能无限制的提高时钟频率和数据位宽。SerDes技术在一定程度上帮助解决了这一问题。

在这里插入图片描述

Serializer:串行器。将n bit并行数据串化为1 lane的高速串行数据。

CODE:编码器。对高速串行数据进行编码,例如:8b/10b,128b/130b等。主要有两个方面的作用:一是平衡传输中0和1的个数,防止共模点偏离零点;二是保证信号线有一定的翻转,使CDR能够从数据流中获得时钟;三是保证数据复杂度,使接收端可以对CTLE、DFE等模块正确进行training。接收端接收数据后CTLE和DFE要做training,以获得对恢复数据最有效的参数。如果数据码型过于简单,则接收端training后得到的参数无法适应复杂码型的恢复。

FFE:Feed Forward Equalization前馈均衡器,即预加重均衡器。非理想信道的传输对高频分量有较大的衰减。为了补偿传输过程中的衰减,在将信号发送到传输信道上之前,对编码后的传输数据进行高频分量补偿,这就是预加重均衡。FFE由延迟电路(D)、乘法器和加法器组成,延迟电路的时间延迟正好是1 bit时间。以一阶延迟电路为例:输出bit电压=n bit电压+c1*(n-1) bit电压+c2*(n-2) bit电压+…。其中,c1/c2为乘法器系数,n-1代表前1 bit,下同。下图为一阶抽头电路的图例,其中c1=-0.2:

在这里插入图片描述

在这里插入图片描述

PCB:物理传输通道。由于是非理想通道,信号在传输过程中会衰减,高频分量的衰减大于低频分量的衰减。

CTLE:Continuous-time Linear Equalization连续时间线性均衡器。它是一个模拟均衡器,作用等效于放大器+高通滤波器。接收到信道上传输的信号后,先将整个信号等比放大,然后通过高通滤波器,低频分量衰减的多,高频分量只有少量衰减。目的也是加大高频分量与低频分量的能量比。

DFE:Decision Feedback Equalizer判决反馈均衡器。它是一个数字均衡器,由FIR滤波器、加法器和用于符号判决的判决器组成。FIR滤波器由n阶乘法器和延迟电路组成,延迟电路将输入延迟1 bit时间。判决器将模拟信号数字化。以三阶延迟电路为例:n bit输出=n bit值+c1*(n-1) bit值+c2*(n-2) bit值+c3*(n-3) bit值。其结果也是增强高频分量,加大了高频分量与低频分量的能量比。在实际应用中,DFE会根据接收到的数字眼图,经过training,对乘法器系数进行调整,以达到最优结果。正是因为DFE的training功能,发送端更需要对传输的数据进行编码,使DFE能够获得更多的码型进行处理。

Decode:解码器。对高速串行数据进行解码,恢复出来源码。

De-serializer:解串器。将高速串行数据恢复成n bit并行数据。

在整个数据通路中,信号通过PCB会造成较大的高频衰减,FFE、CTLE、DFE则通过各种方式解决高频衰减的问题。

Serdes的基本原理就介绍到这里,后续将继续介绍Serdes的设计和调试。
————————————————
版权声明:本文为CSDN博主「轻漂漂」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44098748/article/details/85002027

Serdes原理与设计实践之二:Serdes设计流程

2. Serdes设计流程

确定系统的传输能力(仿真、测试)

有的芯片厂商在芯片spec中已经提供了设计指导,一般是链路衰减限制或在某种板材、层叠下PCB上走线最长限制。如果没有设计指导,就需要设计者进行前仿真,以确定传输能力极限。可按照下面几个步骤实现:

1)获取TX、RX的仿真模型。

2)搭建仿真链路。

3)进行仿真,看仿真结果是否满足接收端要求。通常是观察接收端信号是否满足眼图要求。

4)根据仿真结果,调整传输通道的参数,使其达到接收端极限值。此时得到的传输通道参数即为系统传输能力极限。

如果应用环境接近仿真的极限结果,还需要通过测试进行实际验证。因为实际应用环境比仿真环境要复杂的多。

实际应用测试可按照下面几步去实现:

1)收发芯片不直接相连,两端都预留出连接器。

2)设计带有不同长度传输线的PCB,两端预留与带有收发芯片的板子对接的连接器。根据仿真和实际应用确定传输线长度。例如,传输线有5inch、10inch、20inch、30inch等等。

3)通过高频电缆将2)中的传输线与收发芯片板相连,测试出在哪种长度下,接收端误码不再满足要求。

最后,对比仿真和实测结果是否吻合。

在这里插入图片描述
设计传输通道,保证通道损耗在传输能力范围内

在确定了系统的传输能力的情况下,我们就可以在设计中去具体实现了。

根据系统的传输能力及项目其它需求,确定传输通道设计方案。初步设计完成后,需进行后仿真,验证接收端是否满足要求,同时也要留有足够的裕量。

具体PCB设计时,主要考虑两方面:

1)降低传输通道损耗

使用低损耗板材。

走线长度应尽量短。

差分对要等长,过孔位置要一致,减少P/N之间的skew。

走线不要太细。特定情况下可以通过隔层参考增加线宽。

减少换层,保证通路上最多只有两端有换层孔。

过孔设计。如果采用通孔设计,最好是使用背钻。过孔旁边要有伴地孔。

如果收发之间有连接器,尽量选用低损耗、有阻抗控制的连接器。

2)控制收发之间的串扰及周围信号对收发信号的串扰。

收发最好不同层。

由于条件限制,收发必须同层的话,要保证收发之间有足够的隔离。

如果收发连接使用了连接器,进行pin分配时,要确保收发pin之间有足够的隔离。同时信号pin要邻地。

根据具体实现,确定各补偿模块补偿值

传输通道确定后,通过后仿真确定传输损耗。根据仿真得到的和传输通道损耗值,合理分配发送端和接收端各补偿模块的补偿值。最后进行整个链路的时域仿真,确定接收端眼图是否满足要求。

后续将继续介绍Serdes如何调试。
————————————————
版权声明:本文为CSDN博主「轻漂漂」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44098748/article/details/85109634

 

Serdes原理与设计实践之三:Serdes调试过程

3. Serdes调试过程

1. 确定可配置参数及可获得的参数

Serdes可配置参数一般包括发送端的预加重、接收端的CTLE和DFE。具体有哪些参数可配置,需要查发送端和接收端芯片的spec来确定。
预加重:通常可配置前一阶和后一阶乘法器的系数。
CTLE:多数情况下是自适应的,某些设计是可配置的。通过查看接收端芯片spec来确定。
DFE:通常可配置的参数有DFE控制和tap数。
数字眼图:中高端芯片通常可以提供数字眼图功能,可以通过读寄存器等方式获得芯片接收机内部经过补偿后的眼图质量。

2. 确定接收端要求

数据速率较低时,接收端芯片一般是有实际眼图的要求。
数据速率较高时,接收端芯片一般是有数字眼图的要求。如果spec里没有,可与接收端芯片厂家沟通,获得数字眼图的要求。在芯片厂家无法提供这一要求的情况下,就需要在确定系统传输能力时,通过测量得出误码率和数字眼图的关系,以此来作为调试标准。

3. 调整可配置参数,使接收端满足spec要求

当数据速率较低时(一般不超过5Gbps),可使用示波器直接测量接收端实际眼图。通过调整预加重参数,实时测量,并与spec提供的眼图模板进行比较,看是否满足接收端要求。
当数据速率较高时,直接测试误差较大,需要使用数字眼图功能评估链路质量。需先确定CTLE和DFE的参数,然后调整Tx端预加重参数。每调整一次预加重参数,可以得到一个数字眼图,将其与spec里数字眼图要求进行比较,确定是否满足要求。

4. 进行压力测试

压力测试在高低温环境下进行。一般情况下,只调整预加重参数。测试通常分为两部分:
1)测试现有配置参数是否能够通过压力测试。如果不能通过测试,证明现有配置参数不太合理,需要进行调整。
2)将已配置好的参数向两端适当调整,看是否能够通过压力测试。如果不能通过测试,则说明现有配置参数可能处在配置范围的边缘,需根具情况将配置参数向中间调整,以保证系统有足够的裕量。
————————————————
版权声明:本文为CSDN博主「轻漂漂」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44098748/article/details/85240083

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Serdes 原理及调试学习 的相关文章

  • Shell知识点回顾

    shell基本的语法 xff1a 定义变量 xff1a key 61 value 注意 xff1a 等号两边不能有空格 xff0c 使用字母数字下划线命名 xff0c 但是不能以数字开发头 xff0c 系统变量建议全大写字母 撤销变量使用的
  • PVE一些记录

    目录 1 简介 2 qm Qemu KVM 虚拟机管理器 3 vmdk img raw转qcow2 4 PVE网卡直通 5 一些位置映射 6 外挂硬盘操作参考 7 查看 修改ip 1 简介 PVE是基于debian的系统 xff0c 使用a
  • ARM架构 Linux 安装 gitlab

    Docker 安装 GitLab 由于 GitLab 官网上下载提供的全是 x86 架构的 xff0c 因此需要安装 ARM 的就需要自己通过源码编译 xff0c 编译的过程也比较繁琐 xff0c 这里使用的则为 Docker 镜像安装 x
  • debian下创建新用户useradd

    1 使用sudo sudo useradd m abc g sudo s bin bash d home abc sudo passwd abc 2 直接在root用户下 xff1a groupadd abc useradd m abc g
  • 第11周 动态规划二

    11 1 买房问题 题目描述 xff1a 蒜头君从现在开始工作 xff0c 年薪 N 万 他希望在蒜厂附近买一套 60平米的房子 xff0c 现在价格是 200 万 假设房子价格以每年百分之 K 增长 xff0c 并且蒜头君未来年薪不变 x
  • IntelliJ IDEA必须使用最新jdk问题解决

    最近碰见一个问题 xff0c 公司的项目大部分是jdk1 7的 xff0c 然后下了最新的IntelliJ IDEA居然需要1 8才能启动 xff0c 这就尴尬了 难道要改java home xff1f 上网搜了下 xff0c 在一个评论区
  • Win7上从硬盘安装Debian

    最近一直想将笔记本搞成Win7 43 Debian双系统 xff0c 因为不管如何优化 xff0c 2G内存的Win7笔记本上开个Linux虚拟机都实在吃力 经过一段时间的资料搜索 xff0c 并阅读Debian官方的安装文档 xff0c
  • 深度探索C++对象模型

    深度探索C 43 43 对象模型 参考链接 第1章 关于对象 Object Lessons C 43 43 的额外成本三种对象模型简单对象模型表格驱动对象模型C 43 43 对象模型 class和struct关键字的差异三种编程典范一个类的
  • 用单片机控制直流电机

    一 设计方案比较与分析 xff1a 1 电机调速控制模块 xff1a 方案一 xff1a 采用电阻网络或数字电位器调整电动机的分压 xff0c 从而达到调速的目的 但是电阻网络只能实现有级调速 xff0c 而数字电阻的元器件价格比较昂贵 更
  • python-类

    面向对象 在编程语言中 xff0c 我们将变量看成数据 xff0c 它用来存储多种形式的值 xff1b 我们将函数看成操作 xff0c 它用来对数据进行某些处理 所有的代码都由数据和操作构成 xff0c 程序运行的本质就是对数据进行各种操作
  • 求模逆元算法的C/C++实现

    include lt stdio h gt Name Copyright Author 64 dujianjian Date 01 11 12 11 26 Description 递归 三元组gcd a b 61 61 ax 43 by 6
  • python显示当前时间

    1 先导入库 xff1a import datetime 2 获取当前日期和时间 xff1a now time 61 datetime datetime now 3 格式化成我们想要的日期 xff1a strftime xff08 xff0
  • pandas中Series的使用

    文章目录 pandas的应用创建Series对象索引花式索引布尔索引Series对象的常用属性describe 方法 xff1a value count 方法unique 方法数据处理的方法 isnull 和notnull dropna 和
  • 什么是数据挖掘

    文章目录 什么是数据挖掘1 分类问题2 聚类问题3 回归问题 数据挖掘相关的标准库 数据挖掘模型训练分类问题聚类问题回归问题关联问题 模型集成模型评估评估指标混淆矩阵与标准率指标泛化能力评估 什么是数据挖掘 数据挖掘就是寻找数据中隐含的知识
  • Json数据传递参数

    文章目录 Json数据传递参数集合参数 xff1a Json格式POJO参数 xff1a json格式集合参数 xff1a json格式 64 RequestBody与 64 RequestParam的区别时间参数的转换 Json数据传递参
  • MybatisPlus的知识点

    文章目录 MybatisPlus的知识点常用注解分页功能 条件查询方式按条件查询NULL值处理查询投影查询条件的设定字段映射与表名映射id生成策略 xff08 insert xff09 逻辑删除 xff08 Delete Update xf
  • cookie和session

    文章目录 会话跟踪技术Cookie基本使用 Session服务器重启后 xff0c Session中的数据是否还在 会话跟踪技术 会话 xff1a 用户打开浏览器 xff0c 访问web服务器的资源 xff0c 会话建立 xff0c 直到一
  • 【Django】修改端口号与地址

    在启动 Django 项目时 xff0c Django 默认监听的端口号为 8000 xff0c 设置的默认 IP 地址为 127 0 0 1 如果需要修改默认的端口号和 IP 地址 xff0c 可以通过命令行 配置文件 PyCharm 这
  • 【mdk报错】Error: L6218E: Undefined symbol XXXX (referred from main.o)

    一种情况就是没有在用户文件夹中添加文件 xff08 如LED c xff09 第二种错误 xff1a 错误描述为 xff1a OBJ Template axf Error L6218E Undefined symbol main refer
  • Codeforces 1462 C. Unique Number

    Codeforces 1462 C Unique Number 题目链接 xff1a https codeforces com problemset problem 1462 C You are given a positive numbe

随机推荐

  • nohup: failed to run command 'java': No such file or directory

    文章目录 问题现象 xff1a 解决办法 xff1a 问题现象 xff1a 在Ambari平台启动某个服务时 xff0c 会在ambari server节点执行类型nohup java jar XX jar这样的指令 如果把这个指令单独拿出
  • opencv学习笔记(二)-对xml和yaml文件的读写操作

    一 xml和yaml的简单介绍 所谓的xml 就是eXtensible Markup Language 翻译成中文就是 可扩展标识语言 首先XML是一种元标记语言 xff0c 所谓 元标记 就是开发者可以根据自己的需要定义自己的标记 xff
  • 图形化CentOS7.5安装Xrdp服务使通过Windows远程桌面连接

    文章目录 安装启动远程连接 安装 离线的操作系统iso中没有这个包 xff0c 这里使用阿里的yum原下载安装 span class token comment 备份本地源 span span class token function mv
  • centos7 安装FreeSWITCH1.10.7

    好长时间没有安装新的FreeSWITCH了 xff0c 只是知道1 10 4以后spandsp和sofia sip分离出来 xff0c 需要单独编译 xff0c 但上次的实际操作还是很久之前 xff0c 今天又安装了一次 xff0c 索性将
  • Golang实现字符串长度截取,支持正反向

    func main fmt Println SubStr 34 helloword 34 1 1 start xff1a 起始下标 xff0c 负数从尾部开始 xff0c 1为最后一个 length xff1a 截取长度 xff0c 负数表
  • 配置CDN加速域名

    cdn域名加速配置教程 xff0c 切记加速域名与源站域名不能是同一个 第一步 xff1a 打开服务器管理控制台 找到cdn管理 第二部 xff1a 配置源站信息 第三步 xff1a 点击下一步进行审批 第四步 xff1a 审批通过后进行配
  • Proxmox VE(PVE) 添加Web控制台显示CPU和主板温度

    PVE 默认是没有CPU和主板温度显示的 xff0c 为方便使用 xff0c 我们自己加上 实际效果 版本和软件 Virtual Environment 6 1 3putty 或 PVE自带的Shell 或 MobaXterm 等工具 安装
  • python logging 日志输出 学习笔记 时间格式化

    一 logging介绍 Logging是python自带的模块 xff0c 这个模块支持输出不同级别的日志 xff0c 可以输出到控制台和写入文件 xff0c 支持 TCP HTTP GET POST SMTP Socket等 协议 xff
  • vim编辑器的工作模式及切换

    vim编辑器的工作模式及切换 vim编辑器包括哪几种模式 xff0c 各自的作用是什么 xff0c 如何切换 xff1f 主要包括三种工作模式 xff1a 命令模式 xff1a 启动vim编辑器后默认进入命令模式 xff0c 该模式中主要完
  • opencv学习之(三)-LBP算法的研究及其实现

    一 xff0c 原始LBP算法 LBP的基本思想是对图像的像素和它局部周围像素进行对比后的结果进行求和 把这个像素作为中心 xff0c 对相邻像素进行阈值比较 如果中心像素的亮度大于等于他的相邻像素 xff0c 把他标记为1 xff0c 否
  • opencv学习之(五)-直方图计算和绘制图像直方图

    1 直方图 灰度直方图的定义 灰度直方图是灰度级的函数 xff0c 描述图像中该灰度级的像素个数 xff08 或该灰度级像素出现的频率 xff09 xff1a 其横坐标是灰度级 xff0c 纵坐标表示图像中该灰度级出现的个数 xff08 频
  • 学习opencv之(六)-图像切割,使用ROI

    一 ROI介绍 在OpenCV中我们能够非常方便地获取指定ROI区域的子图像 如果你对图像设置了ROI xff0c 那么 xff0c Opencv的大多数函数只在该ROI区域内运算 xff08 只处理该ROI区域 xff09 xff0c 如
  • 虚拟机Ubuntu蓝屏闪屏解决方法

    问题分析 启动 Ubuntu 可以进入登录界面 xff0c 但是系统界面蓝屏 xff0c 说明系统是可以运行起来的 证明系统是没有问题的 应该是系统插件发生了错误 没有发生大块的核心数据损坏 xff0c linux 系统一般都以修复 xff
  • meta标签清理缓存

    meta标签清理缓存 如果需要在html页面上设置不缓存 xff0c 这在 lt head gt 标签中加入如下语句 xff1a lt meta http equiv 61 34 Pragma 34 content 61 34 no cac
  • Go语言入门(二)——Ubuntu系统中Go的安装

    下载并安装 安装包地址 xff1a https golang google cn dl 选择这个下载 xff0c 稍等几秒即可 下载下来的压缩包在Downloads文件夹中 解压二进制文件 将下载的二进制包解压至 usr local目录 x
  • /etc/apt/sources.list" E212: Can't open file for writing解决方案

    w sudo tee gt dev null 解决 转载于 https www cnblogs com tangyouwei p 10109090 html
  • poj 1947 树形dp(得到含P个节点联通块的最小切边数)

    题意 xff1a 给定一颗树 xff0c 通过删除边要得到一个含有P个节点的连通块 xff0c 问最小的删边数 思路 xff1a 树形DP dp x i 记录x结点 xff0c 要得到一棵i个节点的子树去掉的最少边数 搜索到x节点时 xff
  • BMC相关

    BMC基本概念介绍 xff1a BMC xff1a 基板管理控制器 Baseboard Management Controller BMC xff08 Baseboard Management Controller xff0c 基板管理控制
  • ARM ASPEED 2500 uboot openbmc linux 启动记录

    支持原创 xff0c 转载请注明出处 ARM ASPEED 2500 uboot openbmc linux 启动记录 前言 其实openbmc 官方推荐的方法是使用Yocto poky方法来定制aspeed 2500相关的组件 xff0c
  • Serdes 原理及调试学习

    Serdes原理与设计实践之一 xff1a Serdes简介 1 Serdes简介 为了提高接口传输带宽 xff0c 设计中经常采用并行总线设计 并行总线通过提高时钟速率和数据位宽来提高传输带宽 限制接口传输带宽主要有2个方面 xff1a