没有合适的资源?快使用搜索试试~ 我知道了~
8B10B编解码及FPGA实现(转)
需积分: 20 13 下载量 68 浏览量
2022-04-20
05:53:08
上传
评论
收藏 1.03MB PDF 举报
温馨提示
试读
5页
8B10B编解码及FPGA实现(转)
资源推荐
资源详情
资源评论
8B/10B 编解码及 FPGA 实现
王敏志
转自:http://bbs.ednchina.com/BLOG_ARTICLE_3015507.HTM
1 概述
在使用 ALTERA 的高速串行接口时,GXB 模块里硬件实现了 8B/10B 编码,用户只是“傻瓜”式的使用,笔者也一直没
有弄清楚。网上搜索了一些学习资料,结合参考文献希望能够对其进行消化。另外,ALTERA 现在已经提供 8B/10B IP,用
户可以直接使用,不过有时候为了代码可移植性需要自己写代码实现 8B/10B 编解码,笔者希望在这方面也做些实践。
2 8B/10B 编码概念
基本概念网上可以轻易找到答案,简单的说就是将 8bit 数据转换成 10bit 数据,显然这个转换过程有 20%的开销,大
部分公开资料提出 8B/10B 编码的开销是 25%,我同意开销大于 20%,因为码流中必然存在一些控制码,但是为何是 25%
而不是 24%或者 26%呢?
为什么要使用 8B/10B 编码呢?是因为 8B/10B 编码的特性之一就是保证直流平衡,即编码后二进制数据流中“0”和“1”
的数量基本保持一致,因为我们知道当高速串行流的逻辑 1 和逻辑 0 有多个位没有产生变化时(即所谓的长连 0 和长连 1),
信号的转换就会因为电压位阶的关系而造成信号错误,直流平衡最大好处就是可以克服这个问题。
8B/10B 编码是怎么做到 DC 平衡的呢?转换的时候,连续的“0”或者“1”数量不超过 5 位,即每 5 个连续的“0”或者“1”
后必须插入一位“1”或者“0”,从而保证信号 DC 平衡。这样可以保证串行数据可以在接收端被正确复原,同时利用一些特殊
代码(K 码)也可以帮助接收端进行复原工作,且可以在早期发现数据位传输错误,抑制错误继续发生。
通过以上解释,那么一个 8bit 的二进制位流,变成 10bit 后,10B 中 0 和 1 的位数只可能出现下面 3 种可能情况:
{C}
有 5 个 0 和 5 个 1
{C}
有 6 个 0 和 4 个 1
{C}
有 4 个 0 和 6 个 1
这样就引出一个新的名词“不均等性”,即 Disparity。就是 1 的位数和 0 的位数的差值,根据上述 3 种情况,那么就有
3 种 Disparity,即 0、-2、+2。
3 8B/10B 编码工作原理
图 1:8B/10B 编码器逻辑设计原理框图
如图 1 所示,8bit(HGFEDCBA,H 是 MSB,A 是 LSB)原始数据会被分成两部分,低 5bit 进行 5B6B 编码,高 3bit
则进行 3B4B 编码,这已成约定俗成的标准,所以 8bit 数据(0 到 255)也被表示为 D
x.y
的形式,其中 x 就是低 5bit 对应的
资源评论
yangkehai1234
- 粉丝: 1
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功