第三章(1):数据流

1. 传输层

    传输层将采样数据转换为不加扰得octet,JESD204提供以下几种映射方式。

  •     一个转换器对应一个link,该link只有一个lane;
  •     一个设备内有多个转换器,通过只有一个lane的link传输;
  •     一个转换器对应一个link,该link有多个lane;
  •     一个设备内有多个转换器,通过具有多个lane的link传输。

    传输层映射只应用于单个转换器设别的采样点。一组采样点或一组采样点的一部分组成了一帧内的F个octet。JESD204允许每帧传送一个转换器的多个采样点。采样数据在传输时可能会加入其他内容,比如控制位和尾部填充位(tail bits)。控制位和尾部填充位的作用都是用来和采样数据组合,保证将每个帧的每个octet都填充上数据。

1.1 无过采样情况下的映射

    下图描述了没有过采样情况下的映射方式。图中共有M个converter,每个converter的每个sample包含N个bit。尾号为0的事件最先发生。最左侧为MSB,最右侧为LSB。以下为从采样数据到octet的具体映射过程。

    1. 采样点映射按照线性递增的顺序进行,首先时converter0,然后时converter1,直到所有采样点均被映射。

    2. 采样点被映射为words。当word中没有控制位时,采样点和word位宽一致;当word中包含控制位时,则不一致。控制位有两种添加方式。

        a. 每个word中都包含控制位,控制位被附加在采样点之后(即采样点的LSB的右侧)。

        b. 每个word中只包含采样点,所有控制位被集中拼接在一起。当所有converter的采样点按顺序映射成word后,控制位拼接的word被附加在后面,以组成一个帧。

    3. 一个word如果不是4bits(nibble)的整数倍,那么通过在word后面附加tail bits的方式凑够nibble的整数倍。经过上述扩展后的word在图中用NG表示。该步骤是可选的,并不是强制要求。控制位和尾部填充位(tail bits)都可以用于填充,那么他们按照什么规则来使用呢?首先明确tail bits的涵义,他是用来填充在word的后面,将word凑成nibble整数倍的;控制位,顾名思义是具有一定实际意义的,比如超量程指示位。当CF(一帧中控制word的个数)等于0时,可以认为word里面没有控制位,也可以认为有控制位,但是该控制位和采样数据绑定在一起,不加区分。这其实只是一种理解方式差异,没有本质不同。此时,tail bits不能插入在数据和控制位之间,但是可以填充在控制位之后。当CF等于1时,则表示映射后数据和控制位分布在不同的word中。此时,每个采样点后面都可以使用tail bits进行填充。

    4. 如果必要,可以在采样点后附加tail bits,使所有bit为8的整数倍。

    5. 将上一步骤生成的数据组合成F个octets。

    

    在JESD204的2006版本的标准中,对tail bits出现的位置没有过多要求。但是在新版本的标准中,推荐将tail bits附加在每个采样点的后面,以补满8的整数倍,这样数据的格式更加整齐。如下图所示。

    

        上图给出的例子中,为了在每个采样点后面附加tail bits,付出了降低带宽的代价。可以采取其他方式,即满足tail bits位置的要求,又不用降低带宽。下图中,每个采样点有一个控制位,这些控制位被放在末尾,作为一个独立的word。然后将不足8bits的部分用tail bits补齐。这样做则没有带宽降低的代价。

    

1.2 过采样情况下的映射

    过采样情况下的映射与无过采样时的映射基本一致,只是每个converter有多个(S)采样点。映射时,先从采样点0开始完成所有converter0的采样点的映射,然后完成converter1的映射......直到所有converter全部完成映射。

1.3 多lane情况下的数据格式

    多lane模式下,首先进行采样点拼接(拼接原则参考上文),然后将拼接后的数据拆分成word,接着打包成多个octets。每F个octets形成一帧数据,在一个lane上传输。如下图所示。

    该模式下还需要遵循以下规则。

    1. HD参数决定一个采样点是否可以被分割到不同的lane进行传输。当HD为0时(Low Density),采样点不能被拆分成两部分,不能在不同lane传输。此时,在F个octets末尾,不能放置一个完整采样点的情况下,使用tail bits进行填充。当HD为1时,采样点可以被拆分。

    2. 参数CF表示一个link的一个帧内所包含的控制word的个数,该参数决定哪个lane传输控制word。当CF=0时,表示该link中不包含控制word。当CF不为0时,L个lane被分为L/CF个组,每组传输M/CF个converter的所有采样点。在每组中,当M/CF个converter的所有采样点传输完成后,在其后依次附加这些采样点的控制位。

    上图没有使用控制word,每个控制位附加在采样点后面(图中的C1:C0),然后使用tail bits补齐。此时一帧传输16个11bits的采样点需要8个lane。

    

    上图则使用了控制word。HD=1,所以当某个采样点在一个lane的一帧内不能完全放置时,采样点可以被分割。如图中lane0的Cr2。为了补齐nibble,个别地方使用tail bits填充(一个采样点可以分割到不同的lane,但是一个nibble内不能出现两个采样点的数据)。按照上述方式映射后,16个采样点的32bits控制位可以全部放在lane6的一帧内。注意F=4。

    

    上图采用了多lane模式下的方法2进行映射。L=8,CF=2,按照方法2,所有lane被分为CF组,每组L/CF个lane,每个lane传输M/CF个converter的采样点。lane0到lane3被分为一组,用来传输converter0到7的采样点,不够一个nibble的用tail bits补齐。然后将converter0到7的控制位附加到同组数据的最后,即lane3的16个T和lane7的16个T。

1.4 Tail bits

    Tail bits添加到未加扰的帧数据中,然后通过加扰器加扰。为了避免tail bits导致的无法产生帧同步symbol,或者大幅降低帧同步符号产生的频率,tail bits应该遵循以下规则。

  •     每帧的tail bits的序列都是一致的;
  •     或者tail bits是基于伪随机多项式产生,至少9阶多项式。

    需要注意,在不加扰的情况下,始终一致的tail bits序列可能导致频谱杂散增加。

1.5 Idle mode

    Idle mode是指一种总线状态,该状态下连接到同一个link的部分converter处于非活跃(inactive)状态,而接口依然处于活跃(active)状态,帧结构不变。

1.6 Test mode( Transport Layer)

    传输层测试模式是指,连接到同一个link的所有converter的采样数据都被预定义的测试数据所替代。

    Idle mode和Test mode一般情况下很少用到,而且Test mode多是对芯片厂商的要求,所以不在这里详细介绍。

2. 扰码

    扰码的内容比较多,而且很多内容不易理解。对于用户来说,扰码多数情况下只是IP中的一个选项,所以目前也不详细介绍。后续主要写数据链路层的内容,如果再有时间,可以尝试写扰码部分的内容。

    

    

    

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值