资讯详情

Serdes基础知识汇总

Serdes总结基础知识

从知乎https://zhuanlan.zhihu.com/p/423321485转载

在开始了解高速接口时,必然会涉及到SerDes。serdes事实上,有很多知识点,很多文章都有不同的侧重点。有的整体测重,有的侧重细节,我综合提取,帮助像我这样的初学者初步建立正确的关系SerDes理解清楚。

1. 简介

SerDes是Serializer/Deserializer缩写,即串行器和解串器,顾名思义,是将并行数据转换为串行数据发送,将接收到的串行数据转换为并行数据的装置。对于FPGA对于工程师来说,串并转换再熟悉不过了,只是SerDes用于高速传输的高级串并转换装置,是一种需要数模硬件实现的装置。至于接口从串口到并口的历史发展,可以阅读相关文献,了解系统同步和源同步的技术瓶颈。目前,商业基础SerDes单通道56的最高通信协议Gbps(似乎已经达到了112Gbps)在未来,高带宽、低成本的应用将越来越广泛。

SerDes主要有以下优点:

减少布线冲突(串行,无单独时钟线,嵌入数据流,解决限制数据传输速率的信号时钟偏移问题); 抗噪声、抗干扰能力强(差异传输); 降低开关噪声; 扩展能力强; 功耗和包装成本较低;

题外话:看完文献才知道。PCIE、JESD204B都是基于SerDes的协议,用OSI类比网络分层模型,SerDes更接近物理层,强调电气属性,PCIE和JESD204B相当于覆盖数据链路层、网络层和传输层SerDes通常也叫物理层(PHY)器件。其实和很多人没有区别RS232和URAT关系是一样的。

2. 整体架构

SerDes有四种架构:1)并行时钟SerDes;2)嵌入式时钟SerDes;3)8b/10b编码SerDes;4)位交错SerDes。(注:至于这四种所谓的架构有什么区别,有什么特点,我还没有找到专门的文献来解释)。

常见的SerDes结构是基于8的b/10b编码时钟嵌入数据流中的架构(是上面2、3的组合吗?),主要由物理介质相关子层组成( PMD)、物理媒介附加子层(PMA)物理编码子层( PCS )如下图所示:

浅绿色子模块背景色为浅绿色PCS层,负责数据流的编码/解码,是标准的可综合CMOS数字逻辑可以用硬逻辑实现或使用FPGA实现软逻辑。

浅棕色子模块的背景色PMA层,是数模混合CML/CMOS理解电路负责串化/解串化SerDes与并行接口不同的关键。

PMD是负责串行信号传输的电气块(未画出)。

PLL模块(PLL Block)负责产生SerDes每个模块所需的时钟信号,并管理时钟之间的相位关系。

一个SerDes通常还要有调试能力,如伪随机码流的生成和比较,各种环回测试,控制状态寄存器和访问接口,LOS因此,还需要相应的功能测试模块进行检测、眼图测试等。

整个过程可以简述为:

FPGA软逻辑(fabric)通过接口发送的并行信号FIFO(Interface FIFO),送给8b/10b编码器(8b/10b encoder)或扰码器(scambler),为避免数据中0或1过长,然后送到串行器(Serializer)进行并->串转换。通过均衡器串行数据(equalizer)由驱动器调节(driver)发送出去。

线性串行信号由线性平衡器组成(Linear Equalizer)或DFE (Decision Feedback Equalizer,判断反馈均衡)调节结构均衡器,去除部分确定性抖动(Deterministic jitter)。CDR从数据中恢复出采样时钟,经解串器变为对齐的并行信号。8b/10b解码器(8b/10b decoder)或解扰器(de-scambler)解码或解扰完成。若为异步时钟系统(plesio-synchronous system),在用户FIFO以前也要有弹性FIFO补偿频差。

注意:我发现系统的把手SerDes细节清晰的文献不多,还有一些SerDes接口芯片并不完全是上述结构。在实际过程中,每个制造商可能会根据性能进行不同的算法优化,具体的模块可能会使用不同的技术,所以不要片面地理解上述结构Serdes唯一的结构。

3. 发送端模块说明

8b/10b编码是由IBM发明于1983年,旨在解决系统互联和GB以太网传输的问题。 是指将8b数据通过一定的编码规则扩展到10b,通过降低效率,保证数据流中的0和1数量基本一致,提高传输数据恢复的可靠性。b/10b 主要有以下优点:

直流平衡是什么意思?如上图所示,信号频率越高,阻抗越低,因为我们的串行链路中会有交流耦合电容,反之亦然。因此,在上述情况下,当代码类型是高频时,它基本上可以不损失地传输过去,但当代码类型是连续的0或1时,电容器损失非常大,导致范围不断减少,严重后果是无法确定是1还是0。因此,编码是将低频码型优化为高频码型,以保证低损耗的传输。

8b/10b编码方法的总输出位数为10位,其中0和1的次数仅存在于5位0与5位1、4位0与6位1、6位0与4位1三种场合。有一个8b/10b编码技术术语不均匀性(Disparity),其含义是指10位中位0与位1出现次数的差异。换句话说,8b/10b编码的“Disparity”就仅有“ (4个位0和6个位1) 0(5位0与5位1)和-2(6位0与4位1)三种情况。

时钟恢复依赖于电平跳变沿(稍后介绍),因此平衡0和1可以简化时钟恢复,降低接收机成本。

8B/10B编码采用冗余方式,按照特定规则将8位数据和一些特殊字符编码成10位数据。根据这些规则,在传输过程中可以检测到单个和多个比特误码。

有关8b/10b编码算法可以进一步查阅相关文献。SerDes除了8b/10b除了编码,还有64b/66b编码等;

3.2 扰码

扰码是重新排列或编码数据以使其随机化的一种方法,但必须能够解除扰码恢复。我们希望打乱长连0和长连1序列,随机化数据。扰码生成是通过循环移位寄存器实现的,扰码生成多种类型决定了循环移位寄存器的结构。那么,干扰信号有什么好处呢?

当数据重复传输时,能量将集中在一定的频率上EMI噪声;数据加扰后,集中能量可以分散,几乎变成白噪声。

同时扩展了基带信号频谱,具有加密效果 综上所述,看网友提问,提醒我。问题是:在这里SerDes中先进行8b/10b编码之后再进行扰码,感觉两个的作用类似,只是扰码进一步增加“0”和“1”的随机性,还有没有其他更重要的作用?先加扰再编码有没有问题?初学者总有很多疑问。 3.3 串行器/解串器 串行器Serializer将并行信号转换为串行信号。Deserializer将串行信号转换为并行信号。平行信号一般为8 /10bit或者16/20bit串行信号的宽度为1bit宽度(也可分阶段串行,如8bit->4bit->2bit->equalizer->1bit以降低equalizer工作频率)。

Serializer/Deserializer采用双边实现(DDR)采用面积换速策略,降低了电路中高频电路的比例,从而降低了电路的噪声。

除了接收方向Deserializer此外,还有对齐功能逻辑(Aligner)。相对SerDes发送端,SerDes接收端的工作时间是任意的,接收器正确接收的第一个 bit发送任何数据都可能是任意的bit位置。因此,需要对齐逻辑来判断从哪里来bit位置开始(第一个数据在哪里开始),以形成正确的并行数据。对齐逻辑在串行数据流中搜索特征码(Alignment Code)来决定串并转换的起始位置,这就需要用到了8b/10b我们常说的控制字符集K字符,常见的是什么?K28.5、K28.0、K28.3、K28.4等,在JESD204B他们也被称为/K/、/R/、/A/、/Q/字符。

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

SerDes从发送芯片到接收芯片的信号路径称为信道(channel),包括芯片包装,pcb接线、穿孔、电缆、连接器等元件。从频域来看,信道可以简化为低通滤波器(LPF)模型,如果SerDes如果速率大于信道的截止频率,则会在一定程度上损坏信号如果高频被过滤掉,数字信号的边缘会变得光滑)。平衡器的作用是补偿信道对信号的损害。

使用发送端的平衡器FFE(Feed forward equalizers)从频域来看,结构,FFE是高通滤波器(容易理解,信道损伤是低通滤波器,会抑制高频,所以平衡会补偿高频)。从时域上看,也叫加重器(emphasis)。加重分为去加重(de-emphasis)和预加重(pre-emphasis)。De-emphasis 减少差分信号的摆幅(swing)。Pre-ephasis增加差分信号的摆幅。由于目前芯片都需要追求降低功耗,所以大部分使用de-emphasis的方式,加重越强,信号的平均幅度会越小。

4. 接收端模块说明

接收端均衡器的目标和发送均衡器是一致的。对于低速(<5Gbps)SerDes,通常采用连续时间域、线性均衡器实现如尖峰放大器(peaking amplifier), 均衡器对高频分量的增益大于对低频分量的增益。

对于高速(>5Gbps)SerDes,由于信号的抖动(如ISI相关的确定性抖动)可能会超过或接近一个符号间隔(UI,Unit Interval),单单使用线性均衡器不再适用。线性均衡器对噪声和信号一起放大,并没有改善SNR或者说BER。对于高速SerDes,采用一种称作DFE的非线性均衡器。DFE通过跟踪过去多个UI的数据(history bits)来预测当前bit的采样门限,从而预测码间干扰。DFE只对信号放大,不对噪声放大,可以有效改善SNR。

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

如下图所示,系统传输一个“11011”的码流,如果没有均衡器,信号受到信道损伤,信号展宽,出现码间干扰,导致中间的“0”,无法被检测到。

DFE设计的关键是确定DFE系数,如果DFE的系数接近信道的脉冲相应,就可以到的比较理想的结果。但是信道是一个时变的媒介,比如温度电压工艺的慢变化等因素会改变信道的特性。因此DFE的系数需要自适应算法,自动扑获和跟随信道的变化。这也是实际应用中DFE功能开启的时候,做环境试验的结果很多时候会出问题,因为DFE在信道特性变化的时候,自适应的速度没有跟上。DFE系数自适应算法非常学术,每个厂商的算法都是保密的,不对外公布。 最开始接触SerDes的是,说“没有单独的时钟线,时钟嵌入在数据流中的”,脑海里第一反应就是在数据中插入一定规则的编码代表时钟的高电平或者低电平,回头一想,那时钟频率不就远低于数据的采集频率了吗?实际上,所谓的“时钟嵌在数据中”的意思,是时钟嵌在数据的跳变沿里。不难理解,极端情况下,假设一串数据流是"1"和"0"交替发送,那这不就是一个时钟了吗。

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)能力。

恢复了时钟之后,需要恢复数据。第一步首先要将恢复出来的时钟与数据的边缘进行对齐,然后再将数据给读出来。在硬件原理上,使用PLL电路以及触发器即可。

以上是总结的有关SerDes的基础知识,希望能帮助像我一样的初学者建立初步的认识。SerDes每一个模式深入下去都有很多硬件、信号完整性(包括眼图的评价机制)的知识,想做到非常清晰的认识有一定的难度。目前,对于FPGA工程师来说,SerDes作为phy芯片或者集成在IP核中,先掌握应用,需要的时候再深入

标签: 解码器的耦合电容可以去掉吗

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台