SerDes系列之电路技术概述

news2025/1/24 8:48:22

        现在的高速电路设计中,SerDes的应用几乎无处不在,如下图所示的一款SoC,其外设接口除了少量普通的IO,几乎都是SerDes专用接口,因此,电路设计中对于SerDes接口电路的熟知程度,几乎就决定了设计的成败。

        本文以概述的形式,陈述了SerDes电路设计中的关键技术元素,让读者了解这些基本概念的同时,也为后续的系列文章进行铺垫。

        SerDes有四种架构: 并行时钟、嵌入式时钟、8b/10b编码、位交错,常见的架构是一种基于8b/10b编码并且时钟嵌入进数据流中的架构。

8b/10b编码

        8b/10b编码是由IBM于1983年发明的,旨在解决系统互联以及吉比特(Gbit)数据传输问题。 是指将8bit的数据通过某种编码规则扩展成10bit,保证数据流中的“0”和“1”数量基本一致,通过降低效率来增加传输的数据恢复的可靠性。8b/10b 主要具有以下优点:

        1. 保证直流(DC)平衡:由于串行链路中会有交流耦合电容,信号频率越高,阻抗越低,反之频率越低,阻抗越高。当码型是高频的时候,基本上可以无损耗的传输,但是当码型为连续“0”或者“1”的情况时,电容的损耗就很大,导致幅度不断降低,带来的严重后果是无法识别到底是“1”还是“0”。因此编码就是为了尽量把低频的码型优化成较高频的码型,从而保证低损耗的传输过去。8b/10b编码方式总输出位数是10个,其中“0”与“1”出现组合总共存在三种,分别为“5个位0与5个位1”、“4个位0与6个位1”、“6个位0与4个位1”;

        2. 有利于提取时钟:时钟恢复依赖于“电平跳变沿“(后面会介绍),所以平衡”0“和”1“的数量,可以简化时钟恢复,降低接收机成本;

        3. 方便错误检查:8b/10b编码采用冗余方式,将8位的数据和一些特殊字符按照特定的规则编码成10位的数据,根据这些规则,能检测出传输过程中单个和多个比特误码。

        如图所示,为8b/10b编码的实例展示:

        一个完整的8b/10b SerDes模块,串行器(Serializer)由8b/10b编码器、PRBS码生成器、并串转换电路、差分信号发送器、PLL等模块构成;解串器(De-serializer)包括差分信号接收器、CDR(时钟数据恢复电路)、串并转换电路及8b/10b解码器。

        SerDes是典型的复杂数模混合系统,除编解码实现外,还有PRBS生成和检查、环回测试、自适应算法实现、系统状态控制数字实现等等,需要数字电路和模拟电路、信号与系统、通信原理、微波和射频电路、电磁场、信号和电源完整性等背景知识,对设计者的综合知识要求比较高。

扰码功能

        扰码是一种将数据重新排列或者进行编码以使其随机化的方法,但是必须能够解扰恢复。目的是为了打乱长的连“0”和长的连“1”序列,将数据随机化。扰码产生是通过循环移位寄存器来实现的,而扰码生成多项式决定循环移位寄存器的结构。 这样做的好处还有:能量被分散开,降低了EMI问题,同时又扩展了基带信号频谱,起到了加密的效果。

对齐逻辑

        接收端除了De-serializer之外,一般还有对齐功能逻辑(Aligner)。相对SerDes发送端,SerDes接收端起始工作的时刻需要判断从什么bit位置开始(哪里开始算是第一个数据),以分解组成正确的并行数据。对齐逻辑通过在串行数据流中搜索特征码字(Alignment Code)来决定串并转换的起始位置,这就需要用到了8b/10b的控制字符集,也就是我们常说的“K”字符,常见的K28.5、K28.0、K28.3、K28.4等。

前向反馈均衡(feed-forward equalization/equalizer)

        SerDes信号从发送芯片到达接收芯片所经过的路径称为信道(channel),包括芯片封装、PCB走线、过孔、电缆、连接器等元件。

        从频域看,信道可以简化为一个低通滤波器(LPF)模型(趋肤效应及介质损耗的影响),如果SerDes的速率大于信道的截止频率,就会一定程度上损伤信号(高频被滤掉了,数字信号边沿会变得平滑)。均衡器的作用就是补偿信道对信号的高频损伤。发送端的均衡器采用FFE(Feed forward equalizers)结构,从频域上看,FFE是一个高通滤波器(容易理解,信道损伤是一个低通滤波器,会抑制高频,那么均衡就补偿高频)。从时域上看,又叫加重器(emphasis)。加重分为去加重(De-emphasis)和预加重(Pre-emphasis)。De-emphasis 降低差分信号上升下降沿处的摆幅(swing)。Pre-emphasis增加差分信号上升下降沿处的摆幅。大部分应用会使用De-emphasis的方式,因为去加重补偿后的信号摆幅小,眼图高度低,从而功耗小、EMC辐射量小。

接收均衡器

        接收端均衡器的目标和发送均衡器是一致的。对于低速(<5Gbps)SerDes,通常采用连续时间域、线性均衡器(CTLE)实现,如尖峰放大器(peaking amplifier), 均衡器对高频分量的增益大于对低频分量的增益,增益补偿一般在10dB左右。对于高速(>5Gbps)SerDes,由于信号的抖动(如ISI相关的确定性抖动)可能会超过或接近一个符号间隔(UI,Unit Interval),单单使用线性均衡器不再适用。线性均衡器将噪声和信号一起放大,并没有改善信噪比(SNR)或者误码率(BER)。

        对于高速SerDes,采用一种称作判决反馈均衡(Decision Feedback Equalizer - DFE)的非线性均衡器。DFE通过跟踪过去多个UI的数据(history bits)来预测当前bit的采样门限,从而预测码间干扰。DFE只对信号放大,不对噪声放大,可以有效改善SNR。目前常见的CTLE+DFE均衡的最大增益在20dB左右。

        DFE设计的关键是确定DFE系数,如果DFE的系数接近信道的脉冲响应,就可以获取比较理想的结果。但是信道是一个时变的媒介,比如温度电压工艺的快慢(PVT corner)变化等因素会改变信道的特性。因此DFE的系数需要自适应算法(Self adaptive algorithm),自动补获和跟随信道的变化。这也是实际应用中DFE功能开启的时候,做环境试验的结果很多时候会出问题,因为DFE在信道特性变化的时候,自适应的速度没有跟上。DFE系数自适应算法非常学术,每个厂商的算法都是保密的,不对外公布。

        实际设计中,可以根据通道的插入损耗程度,进行大致的设计评估和功能预判:

        不论是发送端还是接收端的均衡器,本质上都是高通滤波器,因为数字信号采样都希望边沿越抖越好,边沿变缓之后就会产生码间干扰ISI。

时钟数据恢复(CDR)

        CDR( Clock and Data Recovery)即时钟和数据的恢复,是SerDes设计中非常重要的环节。CDR常用的技术有基于数字锁相环(PLL)和基于相位插值器两种。当数据经过时,CDR就会捕获数据边沿跳变的频率,如果数据长时间没有跳变,CDR就无法得到精确的训练,CDR采样时刻就会漂移,可能采到比真实数据更多的“0”或“1”。这就是前文所述为什么在发送的时候采用8b/10b编码或扰码来避免重复出现“0”或“1”,原因之一也在此。所以CDR有一个指标叫做最长连“0”或连“1”长度容忍(Max Run Length或者Consecutive Identical Digits)能力。 恢复了时钟之后,需要恢复数据。首先要将恢复出来的时钟与数据进行对齐(通过调整本地时钟的相位完成对带有通道损伤和各级模块噪声的TX 串行数据的重定时,找到最佳的采样时刻,以使RX本地时钟边沿与TX数据中心位置对齐,实现最佳采样,同时减小Jitter ),然后再将数据给读出来。在硬件原理上,就是使用PLL电路以及触发器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[数据集][目标检测]电力场景电力目标检测数据集VOC+YOLO格式476张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;476 标注数量(xml文件个数)&#xff1a;476 标注数量(txt文件个数)&#xff1a;476 标注类别…

在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 在Linux系统上使用nmcli命令配置各种网络&#xff08;有线、无线、vlan、vxlan等&#xff09;https://myweb.myskillstree.cn/123.html 更新于2024/5/13&…

在Python中防止某些字段被Pickle序列化

在Python中&#xff0c;如果你想防止某些字段被pickle序列化&#xff0c;可以使用__reduce__()方法来自定义pickle行为。__reduce__()方法允许你返回一个元组&#xff0c;其中包含要在对象被pickle时调用的函数以及传递给该函数的参数。下面就是我遇到的问题以及最终解决方案。…

银行风险系统的全面解析:功能作用与系统间的互联互通

银行风险管理系统是银行为控制风险而建立的一套重要系统&#xff0c;主要用于评估、监测和控制银行面临的各种风险&#xff0c;包括信用风险、市场风险、操作风险等。 一、主要功能 风险识别&#xff1a;系统首先识别在业务开展中可能会面临的各种风险。这通常涉及对客户信息、…

JSP+SQL学生成绩管理系统

Java版本&#xff1a;1.8 数据库&#xff1a;MySQL 框架&#xff1a;Spring Spring MVC MyBatis 服务器&#xff1a;Tomcat 前端解析框架&#xff1a;Thymeleaf 开发工具&#xff1a;Idea 2017 版本管理工具&#xff1a;Maven 版本控制工具&#xff1a;GitHub 经过对系统的需…

STM32HAL库-中断篇

中断 中断简介 中断是一种事件处理机制&#xff0c;可以暂停主程序的运行&#xff0c;转而处理特定事件程序。 中断的作用和意义&#xff1a; 实时控制 在确定事件内对响应事件做出相应 故障处理 检测到故障需要第一时间处理 数据传输 如串口通信&#xff0c;不确定数…

基于springboot+vue+Mysql的交流互动系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

程序员的实用神器之——通义灵码

通义灵码介绍 “通义灵码”是一款基于阿里云通义代码大模型打造的智能编码助手&#xff0c;产品于2023年10月31日云栖大会上&#xff0c;正式对外发布。新手亦能驾轻&#xff0c;老手恒常运&#xff0c;唯手熟尔。 通义灵码产品介绍_智能编码助手_AI编程_云效(Apsara Devops)…

测试图像中的环与透镜效果。

我做了三张图片&#xff0c;发现我之前提出的环与带居然都存在。 这个图片的环不明显&#xff0c;需要放大才能看得出来&#xff0c;但是透镜效果&#xff0c;这里只能称之为带了。 这张图的环比较清晰&#xff0c;因为我做了更小的缩放。 制作环和带的过程是需要抗干扰&#…

Spring Boot 自动配置-响应式编程-022

🤗 ApiHug {Postman|Swagger|Api...} = 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Next Generation API Development Platform…

【Unity-Timeline进度条显示与拖动】

利用Unity 自带的Timeline 可轻松实现场景的巡检漫游效果&#xff0c; 基本使用参考以下链接: Unity中的Timeline Unity学习笔记——TimeLine的简单使用方法&#xff08;一&#xff09; 这里主要介绍如何通过滑动条控制播放的进度&#xff0c;效果图附上。 话不多说&#xff…

上海亚商投顾:沪指低开低走 两市成交额跌破8000亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天震荡走低&#xff0c;三大股指尾盘均跌近1%。地产股逆势走强&#xff0c;光大嘉宝、天地源、云南城投…

数据库-索引(高级篇)

文章目录 索引概念&#xff1f;索引演示&#xff1f;索引的优劣&#xff1f;为什么使用索引就快&#xff1f;本篇小结 更多相关内容可查看 索引概念&#xff1f; 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统…

分布式与一致性协议之PBFT算法(一)

PBFT算法 概述 前面提到了拜占庭将军问题之后&#xff0c;有人可能会感到困惑:口信消息型拜占庭问题直接在实际项目中是如何落地的呢&#xff1f;事实上&#xff0c;它很难在实际项目中落地&#xff0c;因为口信消息型拜占庭问题之解是一个非常理论化的算法&#xff0c;没有与…

宝塔助手是以宝塔Linux面板提供的API开发的一款可以随时随地管理服务器的APP

【软件介绍】手机操控云服务器的神器软件&#xff0c;本人亲测在用&#xff0c;好用极了&#xff01; 【软件名称】宝塔助手 【软件包名】com.lensyn.zsbt 【软件版本】1.4.1 【软件大小】29.00M 【适用系统】安卓 【软件特色】宝塔助手是以宝塔Linux面板提供的API开发的一款可…

Unity 2021 升级至团结引擎

UnityWebRequest 报错 InvalidOperationException: Insecure connection not allowed 解决方法 不兼容jdk 8 需要安装 JDK11 64bit 必须JDK 11&#xff0c;高版本也不行 安卓环境hub 未给我安装完全。 Data\PlaybackEngines\AndroidPlayer 并没有NDK,SDK。但是 HUB 显示已经…

Maven 依赖排查

先从项目去看显而易见&#xff0c;假如我们有一个项目&#xff0c;父工程中包含一些子工程&#xff0c;如下&#xff1a; 我们想看一下samples-account中的依赖关系&#xff0c;那么我们可以打开 samples-account的pom文件&#xff0c;查看其maven依赖关系图。 我们可以看到此项…

【算法】基础算法005之位运算

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 1.基础位运算 &&#xff1a;…

计算机丢失concrt140.dl是什么意思,concrt140.dll丢失的8个修复方法

concrt140.dll是一个核心的系统文件&#xff0c;属于Microsoft Visual C 2015 Redistributable组件集的一部分&#xff0c;其全称为并发运行时库&#xff08;Concurrency Runtime&#xff09;。此动态链接库&#xff08;DLL&#xff09;文件在Windows操作系统中扮演着至关重要的…

iOS plist文件增删改查

一. plist简介 plist文件&#xff0c;即属性列表文件&#xff0c;全名是Property List&#xff0c;这种文件的扩展名为.plist&#xff0c;因此&#xff0c;通常被叫做plist文件。它是一种用来存储串行化后的对象的文件&#xff0c;在iOS开发中通常用来存储用户设置&#xff0c…