chanon的个人空间 https://blog.eetop.cn/56214 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

8B/10B编码(转)

已有 1539 次阅读| 2014-3-16 17:04

B/10B编码是目前高速串行通信中经常用到的一种编码方式,直观的理解就是把8bit数据编码成10bit来传输,为什么要引入这种机制呢?其根 本目的是“直流平衡”。当高速串行流动逻辑1或逻辑0有多个位没有产生变化时,信号的转换就会因为电压位阶段关系而造成信号错误,直流平衡的最大好处便是 可以克服以上问题。

将8bit编码成10bit后,10B中0和1的位数只可能出现3中情况:

1.有5个0和5个1

2.有6个0和4个1

3.有4个0和6个1

这样引出了一个新术语“不均等性”,就是1的位数和0的位数的差值,根据上面3种情况就有对应的3个Disparity0、-2、+2.

工作原理

8bit原始数据会分成两部分,其低5位进行5B/6B编码,高3位则进行3B/4B编码,这两种映射关系在当时已经成为了一个标准化的表格。人们喜欢把8bit数据表示成Dxx.y的形式,其中x=5LSB,y=3MSB。

例如一个8bit数据101 10101,x=10101(十进制为21) y=101(十进制为5),现在我们就把这8bit数据写成D21.5,明白了吧!

Dx.y形式在进行5B/6B和3B/4B编码中表示更直观,下面我们来看看两张编码表:

对于8bit数据,它在表中的位序为HGFEDCBA,即H为最高位,A为最低位,EDCBA经过5B/6B编码为abcdei,HGF经过3B/4B编码为fghj。传送10bit编码的顺序为abcdeifghi。

8B/10B编码(转) - huihui - 接着飘

8B/10B编码(转) - huihui - 接着飘

对 于D.x.7,当和5B/6B组合时D.x.P7和D.x.A7编码时必须选择一个来避免连续的5个0或1.遇上连续5个0或1的情况下使用“逗号码” (comma)来进行校准。D.x.A7用在x=17 x=18 x=20且RD=-1时或者x=11 x=13 x=14且RD=+1时。当x=23 x=27 x=30时,使用K.x.7进行编码。其他情况下D.x.A7码不能被使用,他将导致和其他“逗号序列”产生冲突。

候补编码K.x.y允许K.28.1 K.28.5 K.28.7作为“逗号码”来保证数据流中的唯一性。

你 们也许注意到了表中有个RD标志,它是Running Disparity的缩写,它的目的就是保持8B/10B编码中的直流平衡。它跟上面提到的Disparity其实是一样的意思,+1用来表示1比0 多,-1用来表示0比1多,-1是它的初始化状态。下面我们来看一张表来加深理解:

8B/10B编码(转) - huihui - 接着飘

 

 上面我们提到的“逗号码”和“逗号序列”,其实都是当初在规划8B/10B编码机制的时候,所谓的控制代码(Control Characters)的其中之一。8B/10B标准中使用了12个特殊的控制代码,他们能在数据中被发送,还可以组合成各种“原语”。

8B/10B编码(转) - huihui - 接着飘

 

在控制代码中,K.28.1 K.28.5 K.28.7 是逗号序列,逗号序列是用来校准用的,如果K.28.7没有被使用,序列0011111 或者 1100000 是不会出现在任何编码中的。

在实际编码中如果K.28.7可以被使用,一种更复杂的校准规范需要?被使用,它们能组合成各种“原语”,在任何情况下多个K.28.7序列不允许被同时使用,它将导致不可探测的逗号序列。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 2

    粉丝
  • 0

    好友
  • 13

    获赞
  • 50

    评论
  • 2787

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-19 17:59 , Processed in 0.024863 second(s), 13 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部