8b/10b编码技术系列(一):Serdes、CDR、K码

和大家分享一下关于8b/10b编码的知识点,如有什么错误之处或大家有什么额外的见解欢迎大家公众号后台留言!

一、Serdes高速收发器

在传统的源同步传输中,数据和时钟分离,在速率较低(<1000M)时问题不大,关于M?推测单位应该是Mbps。

                           

在传输速率越来越高时,由于传输线的时延和抖动存在(个人理解为时序约束中的routing布线延迟和时钟Jitter--也就是时钟周期差异),导致接收端不能正确的采样数据,时钟边沿无法与数据中心对齐。

为了解决该问题,可以将数据从时钟中恢复(CDR技术,Clock Data Recovery),这样就不会存在延迟不一致的情况,有轻微Jitter也不会影响采样(恢复的时钟随着数据一起抖动)。

But!but!but!将数据和时钟混合,接收端从接收数据中恢复出时钟的话,那么数据接收方要和数据发送方共地。

这样的话就会增加接口线路,且往往很难实现,所以数据传输采用差分传输,抗共模噪声。

那么问题又来了,差分传输的话,由于电压的绝对值较大,变化速率更快(斜率更大),数据接收端的电流会存在过大问题,在接收端使用交流耦合电容进行交流耦合,隔直流通交流(链路交流耦合)。

如下图所示,直流平衡时,数据流中的0和1交替出现,可以认为是交流信号,可以顺利通过耦合电容,DC不平衡时,数据流中出现多个连续的0或者1,可认为这段时间内的信号是直流,通过电容时会产生传输错误,所以就有了8b/10b(64b/66b)编码,高速串行总线采用编码技术的目的是平衡数据流中的0和1,从而实现DC平衡。

二、CDR技术

Clock Data Recovery时钟恢复电路一般是通过PLL电路(鉴相器PD、环路滤波器LF、压控振荡器VCO)实现,其作用是从数据流中准确的恢复出时钟和数据信息。

参考时钟输入到鉴相器(PD),鉴相器比较的是两个相位,一个是参考时钟,一个是数据恢复时钟,两个时钟之间存在两种差异,一种是频率差,另一种是相位差,当恢复时钟相位与参考时钟相位之间存在差异的话会产生一个对应比例的积分值,根据积分值的大小,控制数据时钟提取电路的时钟进行偏移,从而使得数据恢复时钟和参考时钟相位进行对齐,此时认为输出时钟锁定,即所向为认为时钟已经锁定到了所需要的相位或者频点上,就可以作为一个可以使用的时钟。

三、Comma码(K码)

在serdes上的高速串行数据流在接收端需要重新串并转换成多个字节的并行数据,如何有效的识别32bit数据边界?这就需要一个特殊的序列,即为Comma码。在任意数据组合中,Comma码只作为控制字符出现,在数据负荷部分不会出现,所以使用comma码字符只是帧的开始和结束标志,或者修正和数据流对齐的控制字符

接收器在输入数据流中扫描搜寻特定的比特序列(comma),如果找到序列,解串器调整字符边界以匹配检测到的Comma字符序列。

SATA应用中使用K28.5(Align原语的第一个字节)作为comma字符

K码有多个,比如K28.0、K28.1、K28.5等,K码标志帧开始、帧结束、时钟修正和数据对其等功能,K指的是Comma码,K和小数点之间的数字指的是8位数据的后5位,小数点后面的数字指的是8位数据的前3位【K码格式,好重要的,在PCIe部分这个K码搞了好久才理解】。

以K28.5为例:

28表示8位数据的后五位为27,即5’b1_1100

5表示的8位数据的前三位为5,即3’b101

故K28.5的二进制形式为:8’b1011_1100,即8’hBC

K28.5字符用于识别一帧数据的开始,数据发送时以字为单位传输,在接口处数据是32位,用于字节对齐与数据同步。检测到帧同步信号(K28.5)时,根据所处的位置将同步字符提取出来删掉,剩余部分为有效数据,比如:

接收到的数据是32’h08bc0706,此时帧同步信号为4’h4==4’b0100,即表示K字符位于第三byte,一共4个字节,byte0~3,需要将byte2去掉。

K码表:

其中K28.1,K28.5,K28.7可以作为分隔码,也叫comma码,用于接收端在串行的数据流中找到字节边界。常用的K28.5即0xBC。

祝大家521快乐,到了学校一堆事要做,可能以后不能天天更新了,请理解~~~~

                        ~~~~感谢阅读~~~~谢谢!

  • 69
    点赞
  • 315
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Aurora 8b/10b是一种序列化器/解序列化器(SerDes)的数据传输编码方式,用于高速串行数据通信。它广泛应用于各种通信标准和协议中,如PCI Express(PCIe)、Gigabit Ethernet(GbE)等。下面我将详细介绍一下Aurora 8b/10b的工作原理。 Aurora 8b/10b是一种差分编码方式,将每8个输入比特(bits)映射为一个10比特的输出字。这里的8b表示每个代组由8个输入比特组成,10b表示每个输出字由10个比特组成。 Aurora 8b/10b编码过程如下:首先,对于输入的每个8比特数据,会通过特定的编码表将其转换为对应的10比特输出字。编码表的作用是保证输出的字具有特定的性质,比如保持DC平衡、时钟恢复等。然后,将编码后的输出字通过差分解调器进行差分编码,增强了其抗干扰性能。 解过程正好相反。首先,通过差分解调器还原出编码前的差分信号,然后,根据编码表将差分信号还原为相应的8比特数据。 Aurora 8b/10b的主要优点是具有较好的抗噪性、抗失配性和时钟恢复特性。其中,抗噪性指的是它能够有效地抵抗噪声干扰,提高数据传输的可靠性;抗失配性指的是它能够自适应地调整串行数据的时钟相位,以适应信道失配等问题;时钟恢复特性指的是它能够从接收端的数据中提取出正确的时钟信号,实现数据的正确解析。 总结来说,Aurora 8b/10b是一种高速串行数据传输编码方式,通过特定的编码和解工作方式,能够有效地提高数据传输的可靠性和抗干扰能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值