CPRI 是无线通信里的一个标准协议,连接 REC 和 RE 的通信。AMD有提供 CPRI IP 核。区别于其它通信协议,如以太网等,CPRI 是一个同步系统。
这就意味着两端的 Master 和 Slave 应当是同源时钟的,两边不存在频差,并且内部延时也都是固定的,每次运行可以通过计算获得,供上层应用使用。因此,可以让 Master 有一个参考时钟使用,而 Slave 则利用 GT 从串行数据中恢复出来的时钟,经过外部一个 Cleanup 的 PLL,产生参考时钟送回来,供 Slave 参考使用。这样,两端就能同源了。
注意,由于 AMD 的 GT 模块限制,这里外部需要提供一个,在还没有恢复钟送到,就能自主产生相同频率(但有 ppm 差异)时钟的 PLL;等到 Slave 收到数据,同步并产生恢复时钟后,外部的这个 PLL 也能将频率渐渐对齐到恢复时钟(即对端 Master 真正频率上面),最终实现整个同步系统。
CPRI 的内部结构如下图所示。CPRI 数据,主要指的是 IQ 数据通道,另外还有控制数据,包括 Vendor Specific,Slow C&M(即 HDLC 数),Fast C&M(即 Ethernet 数),这些数据共同分享 CPRI 物理层通道。
接下来,分析 CPRI 的数据帧格式,以帮助我们进一步了解这些不同类型的数据,是如何共同复用 CPRI 通道的。
无线通信中,UTRA-FDD 的 Chip Rate 为 3.84MHz(fc)。因此在 CPRI 的协议中,一个基本帧(Basic Frame)的时间长度就是 1/fc=260.416667ns。
那么,CPRI 的基本帧的结构就如下图所示,如果是614.4Mbps 的 CPRI 应用,那 Y 就只会等于 0,数据为 Z.X.0 打头,有 16 个 bytes 数组成,第 1 个 byte 一般做控制用,后 15 个 bytes 就是 IQ 数据。
如果是 2457.5Mbps 的 CPRI 应用,带宽更大,Y 就可以为 0,1,2,3,按照下图所展示的发送顺序发数,一个基本帧里有 Z.X.0,Z.X.1,Z.X.2,Z.X.3,四个控制字,和 60 个 bytes 的 IQ 数据。
进一步,CPRI 每隔 10ms 是一个完整的无线帧,其中由150 个超帧(hyperframe)组成,每个超帧又由 256 个上面的基本帧组成。
之前已经提到过,每个基本帧的第 1 个 byte 一般做控制用;下图就展示了一个超帧,里面含有 256 个基本帧,这样一个超帧里就有 256 个 bytes 可作控制用途,非 IQ 数据的 Control Words。
并且,由图里的位置,可以看到每个 control words 的用途,如 Z.0.0 是用作同步的帧头数据;Z.1.0 作为 Slow C&M,也就是 HDLC 数据用;而 Z.2.0,Z.66.0,Z.130.0,Z.194.0 这一排四个控制字,会在协议通信,对照信息的时候,都有各自不同的用途定义。
于是,我们结合 AMDIP,看下 CPRI 是如何收发数的。由于 CPRI 是一个完全同步的系统,用户在使用 CPRI IP 的时候,需要主动每隔 10ms,给 IP 一个 nodebfn_tx_strobe 输入。IP 会根据用户此输入,对应每隔一个基本帧的时间,给出一个 iq_tx_enable 输出。
基本帧的开头几个 bytes 为 control words,来自于各个对应控制数据接口;用户不用在 IQ 数据接口(iq_tx,iq_rx)管这几个数,后面则是正常的 IQ 数据收发。
了解了 CPRI 的数据业务如何使用之后,再来看下 CPRI 的初始化流程。CPRI IP 支持自协商,根据用户选择的 IP 的可支持速率,从高到低依次下降,与对方互通,直到通信成功为止。
初始化状态机的运行可以观察 IP 的 stat_code[3:0] 输出信号。该状态机参考 CPRI 协议设计,如下。因此其具体细节,建议直接参照 CPRI 协议。例如,如果初始化状态机卡在状态 B 不前进,那意味着此时 IP 无法实现与对端任何通信,可能是 GT 初始化有问题,或者 link 没有成功,可以先做下近端环回实验。注意,如果这是一个 Slave 的 CPRI IP,需要先使能 Slave Transmit Enable,再做环回。或者卡在状态 C 的话,按照 CPRI 协议,是 Protocol Setup 两边没有对应上,需要检查 IP 的相关设置,或者看下两边收发的 Z.2.0 这个数是否是相一致。
最终,这个 stat_code 状态走到 F 或者 G,IP 达到了 link 状态,可以开始进行正常的业务数据收发工作了。
审核编辑:汤梓红
-
amd
+关注
关注
25文章
5505浏览量
134751 -
无线通信
+关注
关注
58文章
4612浏览量
144017 -
pll
+关注
关注
6文章
781浏览量
135364 -
CPRI
+关注
关注
1文章
10浏览量
8787 -
数据帧
+关注
关注
0文章
47浏览量
6807
原文标题:开发者分享|CPRI 的数据帧结构与初始化流程
文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
labview顺序结构中的初始化问题
STM32F1 EXTI初始化流程
NVIC初始化流程是怎样的
USART初始化流程是怎样的
USART初始化结构体详解
基于SQL的数据库初始化通用方法
LCD1602初始化流程图及程序的两种方法
![LCD1602<b class='flag-5'>初始化</b><b class='flag-5'>流程</b>图及程序的两种方法](https://file1.elecfans.com//web2/M00/A6/93/wKgZomUMPs-AcKj3AAAdFoQdjFY091.jpg)
stm32初始化流程图解析
![stm32<b class='flag-5'>初始化</b><b class='flag-5'>流程</b>图解析](https://file1.elecfans.com//web2/M00/A6/E7/wKgZomUMQSmAQL2AAAAZJVsDhAw364.jpg)
基于深度学习的人脸跟踪自动初始化首帧方法
![基于深度学习的人脸跟踪自动<b class='flag-5'>初始化</b>首<b class='flag-5'>帧</b>方法](https://file.elecfans.com/web2/M00/49/60/poYBAGKhwKmAZYeNAAAaHnYx7EY029.jpg)
eMMC初始化命令发送流程
![eMMC<b class='flag-5'>初始化</b>命令发送<b class='flag-5'>流程</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论