#PCIe# 为什么引入编码机制?

写在前言

 

今天主要补充点小知识,学习PCIE的道路很坎坷,至少对我来讲,不懂的欠缺的知识点天多了,每天补充一点点吧,相信自己。

一、为什么PCI-e需要引入8b/10b(Gen1 & Gen2)or 128b/130b(Gen3) 编码?

1. 为什么要编码机制

首先,为什么要编码?原来的码型有什么不好的地方吗?其中最主要的原因用下面这个图来进行解释:

 

大家看明白了吧,由于我们的串行链路中会有交流耦合电容,我们知道理想电容的阻抗公式是Zc=1/2πf*C,因此信号频率越高,阻抗越低,反之频率越低,阻抗越高。因此上面的情况,当码型是高频的时候,基本上可以不损耗的传输过去,但是当码型为连续“0”或者“1”的情况时,电容的损耗就很大,导致幅度不断降低,带来的严重后果是无法识别到底是“1”还是“0”。因此编码就是为了尽量把低频的码型优化成较高频的码型,从而保证低损耗的传输过去。

2. 8B/10B的编码方式的算法

如上图,关于8B/10B编码算法有下面几点需要理解:

1, 低5位(ABCDE)中间加一位,进行5B/6B编码,高三位(FGH)中间加一位,进行3B/4B编码;

2, 编码后的bit仅会出现这三种情况:5个“0”与5个“1”、4个“0”与6个“1”、6个“0”与4个“1”;

3, 有两个术语要知道:不均等性(disparity)和极性偏差(running disparity,RD)。

不均等性是指编码后的码型数据是“1”多还是“0”多,如果是“1”多,则极性偏差RD为-RD,如果是“0”多则为+RD。那定义+-RD有什么意义呢?+-RD代表着同一个码型的两种编码方式。我们本身就是编码的目标就是为了缓解长“0”或长“1”的影响,因此在编码后如果“1”多的话,我们下一次的编码就要把这种码型做一个修正,因此从-RD码型变成+RD码型。如果是“0”和“1”一样多,极性则不用变,如下图:


4, 我们怎么知道编码后映射成什么码型呢?因此会有一个专门的编码表,我们只需要在上面找到我们的原始码型,然后就一目了然了。编码表如下所示(部分截图):

说了那么多,还不如举个例子更直观。

我们以上面的D3.0码型进行仿真验证:

原始的码型如下:

仿真得到8B/10B编码后的码型如下:

 

对照上面的编码表,结果完全相同,从RD-的模型出发,编码后RD-的码型“1”比较多,因此极性变成RD+的编码码型,接着RD+的编码码型“0”比较多,极性又变回RD-,因此码型就是RD-和RD+之间循环下去。

总结

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值