作者:一博科技
* x5 ?6 `& M1 A
! B7 H& ?1 `6 `, N2 ~) ], W( K7 ^$ o' R* ~
之前一直在讲高速串行的协议,MAC,PHY,PMD层,PMA层吗,PCS层。。。看大家回答的数量也不是很多,弱弱的问一句大家都消化了吗?的确,讲到各个层的功能,数据在芯片内部如何去运作协调这方面的确有点高深。其实坦白说哈,作为同组的一员,我也对上面的文章和刘工深感佩服(点赞点赞)。既然上层的东西不那么好理解的话,我们还是说回点接地气的吧。我们知道,无论上层如何运作,最终还是要去到物理层上面去,最终我们的数据就在上面传输,而传输的方式就是各种不同速率的码型。从本期开始,我们将介绍下关于码型的一些东西。. a" l- b: K# W/ G
+ q0 \1 t1 ~9 t# U9 s* U PRBS:Pseudo-Random Binary Sequence,中文翻译叫做伪随机二进制序列,江湖人简称它为伪随机码。做过测试的朋友们都应该特别熟悉,就是使用PRBS这种伪随机码进行高速串行通道的测试,主要是测试误码率的情况,例如我们常用的一些协议,PCIE,USB,以太网或者下图的光模块的测试等等……" _' }# M t' z9 n; e
6 `% T. r; b% ?7 W# Y! f- N当然我们信号高速串行信号仿真的时候,也会有各种prbs码型进行,一个10G-SFP+光模块PCB通道的仿真模型如下:
) t ~: t. N ?* h+ T7 w9 Z3 \# h# v6 _6 j% O8 Z9 D4 q
% m" r$ i* J5 [为什么业界公认选择这种prbs码型进行测试(仿真)呢?主要原因是这种码型与真实链路的数据传输情况非常接近。因为在真实情况中,所以的数据组合都是随机出现的,没有任何规律可言。 而PRBS 的码流在很大程度上具有这种“随机数据”的特性,“0”和“1”随机出现,这种码流的频谱特征和白噪声非常接近,所谓“白噪声”就是在一个比较宽的频域里功率密度谱均匀分布,也就是所有的频率都具有相同的能量,因此该码型能够模拟各种不同频率数据组成的情况,使测试更符合真实的情况。
3 ~. _/ d7 c+ Q0 q* [+ ~
% p% f, {6 B( E/ q' `6 r, m, Q& Q那prbs这种随机码真的就是没有任何规律的吗??当然不是,不然的话为什么还要分prbs1-31那么多种呢。之所以要叫伪随机码,其实就是码流在周期内部是随机的,但是在各个周期里面又是完全相同的。咋一看,好像说了等于没有,大家可能有疑问,在周期内部是随机的,那不还是随机嘛?其实这个随机是要打个问号的,正确来说是“有顺序的随机”。所谓顺序就是通过不同阶数的prbs码来体现,例如,我们常用的有阶数7、9、11、15、20、23、31,也就是我们常说的PRBS7、PRBS9、PRBS11、PRBS15、PRBS20、PRBS23、PRBS31。& B9 z$ E2 K6 F; Q: ~
前面说了,不同的阶数会有不同的码型,那它们之间有什么规律呢?不同阶数是怎样生成码型的呢?我们以PRBS3进行说明。6 U( T8 _! b. _4 |! ]& L$ r+ ^" \4 ~
0 y# `+ O5 u5 D7 j* {, I% Y
PRBS码型是由PRBS码型发生器产生的,下面是一个简单发生器的示意图:6 b% p! h0 k8 m
. T/ ]: F) h" D
+ t8 }* \. @/ g2 t y2 M+ U
架构很简单,就由两部分组成:移位寄存器和异或运算器。首先移位寄存器,顾名思义作用就是移位,1个bit发送后,把下一个bit推向前准备发送;异或运算,简单点说就是两个不一样就是“1”,两个一样就是“0”,因此有“1”和“1”是0,“0”和“0”是0,“1”和“0”是1。那像上面这个PRBS3发生器,进行异或的位是第二位和第三位,因此用一个多项式命名它,叫做1+X2+X3。
# @% ?" \$ G8 R# P: j0 [: M G6 F# r, X( \* k* T
这样我们可以开始进行计算了。首先我们有一个初始状态“111”。我们就有了下面这么一个计算过程(画得不好,大家看内容就好)。简单说明一下,红色为异或运算过程,蓝色为每次移位后的bit,绿色为输出的数据bit,紫色说明绕一圈之后又回到了原先,循环了一次。
0 N; J* C0 s3 X0 R J9 S+ v/ z2 R0 H, J" f0 J8 d' g7 D
+ Z& L$ W% I1 m, k经过本文之后,大家是不是对感觉很高深神秘的prbs码型有了更接地气的认识和理解了呢?当然,本文举例的prbs3是比较简单的,感觉它没经过几位就可以循环一次了,大家推导起来也比较方便。
) d6 f4 {. E+ n" Z1 f |