M和N
M表示单片芯片上转换器的个数。
N表示转换器的分辨率。
比如一个4通道14位的ADC器件,M为4,N为14.
N’
N’ 定位为word 长度。N’的计算为首先把N打散成一个个的nibble,每个nibble为4bit.对于14bit和16bit的分辨率,都是4个nibble,12位的就是3个nibble.
N’就是使用nibble个数乘4得到的值。如果在发送和接收端把N’设定为16,可以实现8bit到16bit之间的转换器的通信。这允许同一个发送和接收端实现多个转换器,简化了系统设计。如果Nibble没有被数据填满的话,多余的位置可以传输控制位(CS)或者尾码(T)。
N’=N+CS+T.
对于一个14bit的分辨率ADC,一个work中有两个bit用作CS/T.如下图:
如果分辨率刚好满足Nibble划分,一个word中就没有CS/T。比如对于16bit的ADC.数据传输的时候,是MSB先发送。最左边的是MSB,CS/T会跟在LSB后面。
S(samples)
S表示每一个转换器每一侦中的采样次数。一般情况下,S都是1。 S必须是整数。协议中允许S大于1,但是S等于1的时候可以保证侦时钟和采样时钟相等。比如S=1,则一个500MSPS的转换器,侦时钟也为500M。
L(Lanes)
使用下面的公式定义通道速率:
Lane Rate = (M x S x N’ x 10/8 x FC)/L (公式1)
必须保证通道速率在高速串行通道的最高速率以下。对于一个4个转换器的14位ADC,采样率为500MSPS的时候,N’=16,S=1.
Lane Rate=40/L Bit/s。因为数据通道最大传输速率只有12.5Gbit/s,所以L最小值应该为4。
F(number of octets transmitted per frame)
F的计算公式如下:
F = (M x S x N’)/(8 x L) (公式2)
对于上面的例子,F=(4 x 1 x 16)/(8 x 4) = 2. 所以每一侦中需要传送两个8位数据。
两个8位的二进制数据会先经过一个 8b/10b编码器然后才会串行输出到链路上。这也解释了公式1中 10/8 这个乘法因子的来历。下图展示了一个N’=16的数据分成了两个8位数据。然后经过8b/10b编码最后形成20bit。
对于M=4,L=4的设计中,8b/10b编码之后每个转换器输出的数据会同时在4个通道上传输。就是说4个转换器的输出会自动在接收端对齐。如下图,每个通道依此传送第0个采样的work0和word1。
一直到word(n-1)和word(n) 被传输。
但是考虑如果一个链路的最大带宽只有5Gbits的时候。必须把L扩大才能满足整个系统的传输带宽。这里如果L=8 来传输4个转换器上的数据的时候。Lane0 和lane1 会先送出 word0 和word 2 ,再送出word1 和word3。