当前位置: 首页 > 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.dtcms.com/a/274857.html

相关文章:

  • MCU芯片内部的ECC安全机制
  • 提升你的AI交互技能:使用Anthropic互动提示教程
  • c语言中的数组IV
  • Qt:布局管理器Layout
  • flutter鸿蒙版 环境配置
  • Deekseek 学习笔记
  • 北京-4年功能测试2年空窗-报培训班学测开-第四十八天
  • 信创 CDC 实战 | TiDB 实时入仓难点与解决方案解析(以 ClickHouse 为例)
  • 【面板数据】省级泰尔指数及城乡收入差距测算(1990-2024年)
  • 大模型人类反馈强化学习RLHF 凭什么火出圈?人类反馈 + 强化学习,解锁 AI 行为可控密码
  • 盛世美颜伴杭州--花皙蔻牡丹盛世美颜精华油获选“2025杭州特色伴手礼”
  • 【Quest开发】快速添加可手指触摸按钮
  • unity VR linerenderer的线会被UI盖住
  • 微算法科技基于格密码的量子加密技术,融入LSQb算法的信息隐藏与传输过程中,实现抗量子攻击策略强化
  • 20250710-2-Kubernetes 集群部署、配置和验证-网络组件存在的意义?_笔记
  • 车载诊断进阶篇 --- 关于网关转发性能引起的思考
  • JAVA入门——安装java环境
  • 智能运维管理平台:AI赋能的数字化转型引擎
  • 从大模型到云游戏,国鑫SY8108G-G4如何化身“全能AI引擎”?
  • 挥别Feign,拥抱Spring 6.1 RestClient:高可用HTTP客户端构建之路
  • 雷达遥感星座微波射频组件抗辐照MCU的选型与实践
  • HarmonyOS基础概念
  • windows 装了 python2 和 python3 如何切换默认版本
  • 1.1.2 运算符与表达式——AI教你学Django
  • 常见的数集 N,Z,R,Q,C
  • osgb转fbx,osgb转su,osgb转obj,osgb转3dmax,osgb转glb,osgb转gltf,osgb转通用格式osgb转SKP
  • Kubernetes服务暴露与负载均衡深度探析
  • SQL:数据库查询语言的核心技术
  • 无人设备遥控器之通信控制技术篇
  • Responsetype blob会把接口接收的二进制文件转换成blob格式