当前位置: 首页 > news >正文

编码技术: PRBS, 8B/10B

刚进SI这个行业的时候(现在也还是小菜鸡XD),很多技术名词其实常常搞不清楚。就像之前辈交代说: 明天客户想确认这条高速线到conector的眼图,帮我跑个quick eye的模拟。 结果一打开前辈整理的Spec,看到data rate, V-high, V-low, rise time 都还可以理解,看到PRBS 11? 8B/10B?当下Nick Young的脸浮现在眼前。直到后来工作一阵子后,才知道这是测试高速线的编码技术名称。

Nick Young, 俗称黑人问号

首先要先分清楚码型编码这两个名词

PRBS码型:

PRBS(Pseudo Random Binary Sequence)字面翻译是伪随机二进制序列(伪随机码)。随机指在周期内是码型是随机的,也就是乱中有序,这个序就会根据阶数来产生不同位元的码型。用途是用来测试高速讯号的误码率,像是USB PCIE…等,当然也会延伸不同的测试码型PRBS 7, PRBS 9, PRBS 11…PRBS 31,其中数字表示的阶数。那是什么意思呢? 为什要用PRBS来做为测试码型?

主要原因是PRBS码型与真实讯号传输的状况很相近,在真实讯号传输也是属于随机的发生,没有理由和规律。且这种码型的频域特征很贴近”白噪音”[1]。意思是说在一个比较宽频域中功率密度均匀的分布,每个频点的能量都一样,不是指溪流声的那种,不要搞错了XD

至于阶数可以简单理解成码型序列的长度,阶数越高序列长度越长,在频域表现出更多的频点的能量分布。至于产生的架构可以参考一博科技的文章,写得很浅显易懂,里面用PRBS 3的架构来说明[3]

不同阶数的PRBS码频域分布[2]

8B/10B编码

常见的编码有4B/5B, 8B/10B, 64B/66B, 128B/130B等编码方式,这些都是属于NRZ编码其中常见的方式。 NRZ? Nick Young? 不懂可以先参考网际星空里面提到编码调变技术的文章PAM4 and MIPI,写得很详细[4]

回归正题,每个编码都有适应的信号协议。其中编码的数字代表些什么? 以8B/10B编码来说,就是把8 bit的数据扩增至10 bit,增加了20%的非实际数据传输。这时候就会想说这样传输的效率不就下降了吗?没事干嘛增加2 bit没用的数据? 这就跟人生一样,常常有时候做白工才是最有效率的(欸欸欸,偏题了XD)

其主要目的是用来直流平衡,原因是高速讯号线上的通常都会摆耦合电容隔离低频的杂讯,频率越低阻抗越大(Zc=1/2pi*f*C)。但有时候要传输的讯号是连续0或1不就会被当作低频杂讯被衰减隔离掉,但事实上那是要传输的讯号不应该被衰减的。利用这种编码方式就可以降低频讯号提升到高频,降低直流低频的损耗。其实有还有另一格作用是保证讯号有足够的翻转密度,让Clock Data Recovery有更多的边沿变换,对减小抖动和数据采样有帮助,至于CDR有机会再跟大家介绍。至于编码的详细机制可以参考[6]

高速线上的耦合电容[5]

直接用频谱看使用8B/10B编码的效果最简单粗暴了,没用之前讯号再低频的能量很多(红色),用了之后改善了低频能量的分布(蓝),低频信号明显减小,相当于通过一个高通滤波器,起到emphasis的作用,减缓ISI的干扰,让眼睛更明亮。仔细想想发明这个编码的人还真神啊XD

f频谱图[7]

结论PRBS是产生的码型,而8B/10B是编码方式。最后的理解可以用一句话来结尾。”用PRBS的码来编出NRZ 8B/10B的讯号做高速讯号的测试”

参考文献:

[1] https://zh.wikipedia.org/zh-tw/%E7%99%BD%E9%9B%9C%E8%A8%8A

[2] PRBS码, https://zhuanlan.zhihu.com/p/597585635

[3] PRBS码是什么? PRBS生成原理, https://zhuanlan.zhihu.com/p/29658418

[4] PAM4 and MIPI, 网际星空PAM4 and MIPI

[5] USB 3.0硬件设计, https://www.twblogs.net/a/5d06fcdfbd9eee1e5c80ebbd

[6] 8B/10B编码, https://www.twblogs.net/a/5d06fcdfbd9eee1e5c80ebbd

[7] 答题 | 高速信号编码之8B/10B

 

http://www.xdnf.cn/news/1102609.html

相关文章:

  • 无锁队列:从零构建生产者-消费者数据结构
  • 数据结构 之 【链式二叉树】(C语言实现二叉树的前序中序后序层序遍历,节点个数、树的高度、第K层的节点个数、查找、完全二叉树的判别、销毁创建二叉树)
  • Redis5.0.5 漏洞
  • uni-app获取手机当前连接的WIFI名称
  • GIC控制器 (三)
  • 飞算JavaAI进阶:重塑Java开发范式的AI革命
  • 语音对话秒译 + 视频悬浮字 + 相机即拍即译:ViiTor 如何破局跨语言场景?
  • 上位机知识篇---Docker
  • SpringCloud之Ribbon
  • 从延迟测试误区谈起:SmartPlayer为何更注重真实可控的低延迟?
  • 飞算JavaAI 实战笔记
  • 从零实现一个GPT 【React + Express】--- 【3】解析markdown,处理模型记忆
  • 继承和多态扩展学习
  • 没有Mac如何完成iOS 上架:iOS App 上架App Store流程
  • Django--02模型和管理站点
  • 【Springboot】Bean解释
  • CPT203-Software Engineering: Project Managent 项目管理
  • 继承 示例
  • 飞算 JavaAI:开启 Java 开发新时代
  • 使用Python将目录中的JPG图片按后缀数字从小到大顺序纵向拼接,很适合老师发的零散图片拼接一个图片
  • Set 二分 -> 剑指算法竞赛
  • 【9】PostgreSQL 之 vacuum 死元组清理
  • Ant ASpin自定义 indicator 报错
  • 模拟开关、可编程增益仪表放大器电路
  • VLM-R1 + GRPO 算法完整复现全过程日志
  • 随手记录第二十话 -- Python3版本虚拟环境安装与AI的接入使用
  • RuoYi+Uniapp(uni-ui)开发商城系统
  • python学习DataFrame数据结构
  • 数据结构第一章复杂度的认识
  • 【java17】使用 Word 模板导出带替换符、动态表格和二维码的文档