#PCIE#基础知识分解之 Symbol_Lock

news/2024/11/22 12:57:32/

一 . 前言

PCIe总线的的接收端链路上没有时钟,因此获取时钟的办法是通过接收到发送端发过来的报文信息(内部嵌入有时钟信息的数据流)中来获取时钟信息,将此过程称之为bit lock,同理symbol lock表示PCIe链路上获取开始训练的标记符COM字符的过程。

每条 lane symbol lock 过程 也即是:每 条 lane完成了COM字符鉴定过程

symbol lock:通过Oerdered-Sets中的COM,找到symbol0,此过程只在link trainingrecovery退出L0s时发FTS阶段完成。

Serdes传输协议有了解的同学都知道,如何在Serdes接收到的茫茫的bit流中找到边界是一件最基础的事情,然后才能谈数据传输。

我们举个例子,下面是Serdes接收端收到的bit流,你可能会疑惑,这里面都是啥?

.......
011111010101010010101010000010101010101101001100101010010101010110101010101010101010101001001001010101011010110110101110100111010
011010010101010000010101011111010100101101001100101010010101010110101010101010101010101001001001010101011010110110101110100111010
011111010101010010000010101010101101001010101100101010010101010110101010101010101010101001001001010101011010110110101110100111010
011100101010100001010101101001100101010010101001010101101010101110101010101010101010101001001001010101011010110110101110100111010
.......

假设我们直接通过Serdes去传输我们想要的数据,那么对于接收端而言,它并不知道数据是什么时候开始,因为发送端没有告诉它什么时候开始。显而易见,发送端需要和接收端约定好一个特殊的标志。

于是自然而然,我们就会想,用什么标志合适呢?假设我们用0101101001011010为标志(也就是5A5A),可行吗?

答案显然是不可行,因为你没法确保数据中是否恰好包含5A5A。假如数据中也包含5A5A,那就彻底错位了。当然这是一个概率问题。

那么,最好的办法就是无论对于标志位还是数据本身,我们都按照一定的长度L切割开来,而且每段长度内,都需要符合一定的规律,这样接收端就可以根据预先约定好的规则验证接收数据流的正确性。

于是,在Serdes的通信中,引入了编码(Encode),对于接收端而言,就需要解码(Decode)。

二. 数据编码

上面举例子列举的数据流其实就是128b/130b编码的例子。

在这个编码中,每130bit的数据我们姑且称之为编码单元,在PCIe的概念里8bit为一个Symbol(这里注意:对于Gen1/2速率,每一个symbol 含有10 bits, 而对于Gen3/4/5速率,每个symbol 含有8bits ),所以该编码单元里包含16Symbol。剩下的2bitSync Header。这里面Sync Header只允许为01或者10.

  • 如果是01开始,那后面就会是控制字(Order Set
  • 如果是10开始,那后面就是数据本身

【实际应用】在链路建立链接的过程中,都会有Link Training的过程,在这个过程中,会一直发送Order Sets,所以对于接收端而言,每隔一个130bit长度就预期会收到01开头的控制字。

所以,对于Serdes接收端,我们只需要在茫茫bit流中不断的按照130bit为间隔,寻找是否连续的130bit都是01开头,那么这就是Symbol Lock

那么,为什么是8130bit呢?这也是概率问题。考虑本身的链路误码率(1E-12),在链路训练阶段,恰好8130bit都是以01开头,却并不是真正Symbol Lock的概率已经微乎其微。

所以,8b10b编码或者64b66b编码也都是类似原理。


http://www.ppmy.cn/news/507170.html

相关文章

VIRTIO PCI 设备

Virtio的代码主要分两个部分:QEMU和内核驱动程序。Virtio设备的模拟就是通过QEMU完成的,QEMU代码在虚拟机启动之前,创建虚拟设备。虚拟机启动后检测到设备,调用内核的virtio设备驱动程序来加载这个virtio设备。 对于KVM虚拟机&am…

【我所認知的BIOS】—PCI 的中斷(PIC下)

【我所認知的BIOS】—>PCI 的中斷(PIC下) LightSeed 2009-5-13 1、PCI中斷概述 注:整篇都是討論在PIC(8259)下的中斷過程。當PCI設備插到主板上後(本來南橋裏含有的當然就不用插啦&…

2D降噪3D降噪(NR:Noise Reduce)

2D降噪:只在2维空间域上进行降噪处理。基本方法:对一个像素将其与周围像素平均,平均后噪声降低,但缺点是会造成画面模糊,特别是物体边缘部分。因此对这种算法的改进主要是进行边缘检测,边缘部分的像素不用来…

语音增强与降噪

目前,语音信号处理已经从传统的信号处理发展到深度学习方法,基本上所有的问题都有了对应的深度学习方法,可以说深度学习无孔不入、遍地开花。 之所以有需求,还是因为问题的存在。特别是在直播中,噪声的问题更为严重。…

信号降噪方法

傅里叶变换 只能获取一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻并无所知。“对非平稳过程,傅里叶变换有局限性”。 短时傅里叶变换(Short-time Fourier Transform, STFT) 把整个时域过程分解成无数个等长的小过…

降噪耳机简介及降噪技术-ANC、ENC、DSP、CVC

一、降噪技术 降噪是指利用某种方法达到降低噪音。 目前降噪技术有两种分别为:主动降噪和被动降噪。 1、物理背景 (1)噪声的本质:是频率、强弱变化无规律、杂乱无章的机械波。机械波又可以按人耳的识别程度分为一下几个部分&am…

消灭非稳态噪音的利器 - AI 降噪

一、轻量级神经网络降噪——ZegoAIDenoise 当下,用户在进行音频通话时常常置身于各种不同的场景中,嘈杂的背景声音以及非稳态噪音往往会对通话产生干扰,其中非稳态噪音是指在时间分布上不连续,并有其形态特征的噪声,是…

堆叠降噪自动编码器 Stacked Denoising Auto Encoder(SDAE)

原文链接 自动编码器(Auto-Encoder,AE) 自动编码器(Auto-Encoder,AE)自编码器(autoencoder)是神经网络的一种,经过训练后能尝试将输入复制到输出。自编码器内部有一个隐…