0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CPRI的数据帧结构与初始化流程

XILINX开发者社区 来源:XILINX开发者社区 2023-10-20 09:55 次阅读

本文作者:AMD 工程师Gary Pan

CPRI 是无线通信里的一个标准协议,连接 REC 和 RE 的通信。AMD有提供 CPRI IP 核。区别于其它通信协议,如以太网等,CPRI 是一个同步系统。

这就意味着两端的 Master 和 Slave 应当是同源时钟的,两边不存在频差,并且内部延时也都是固定的,每次运行可以通过计算获得,供上层应用使用。因此,可以让 Master 有一个参考时钟使用,而 Slave 则利用 GT 从串行数据中恢复出来的时钟,经过外部一个 Cleanup 的 PLL,产生参考时钟送回来,供 Slave 参考使用。这样,两端就能同源了。

注意,由于 AMD 的 GT 模块限制,这里外部需要提供一个,在还没有恢复钟送到,就能自主产生相同频率(但有 ppm 差异)时钟的 PLL;等到 Slave 收到数据,同步并产生恢复时钟后,外部的这个 PLL 也能将频率渐渐对齐到恢复时钟(即对端 Master 真正频率上面),最终实现整个同步系统。

f215da58-6ea2-11ee-939d-92fbcf53809c.png

CPRI 的内部结构如下图所示。CPRI 数据,主要指的是 IQ 数据通道,另外还有控制数据,包括 Vendor Specific,Slow C&M(即 HDLC 数),Fast C&M(即 Ethernet 数),这些数据共同分享 CPRI 物理层通道。

接下来,分析 CPRI 的数据帧格式,以帮助我们进一步了解这些不同类型的数据,是如何共同复用 CPRI 通道的。

f2232fd2-6ea2-11ee-939d-92fbcf53809c.png

无线通信中,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 数据。

f22fb1c6-6ea2-11ee-939d-92fbcf53809c.png

进一步,CPRI 每隔 10ms 是一个完整的无线帧,其中由150 个超帧(hyperframe)组成,每个超帧又由 256 个上面的基本帧组成。

f244430c-6ea2-11ee-939d-92fbcf53809c.png

之前已经提到过,每个基本帧的第 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 这一排四个控制字,会在协议通信,对照信息的时候,都有各自不同的用途定义。

f2596f0c-6ea2-11ee-939d-92fbcf53809c.png

于是,我们结合 AMDIP,看下 CPRI 是如何收发数的。由于 CPRI 是一个完全同步的系统,用户在使用 CPRI IP 的时候,需要主动每隔 10ms,给 IP 一个 nodebfn_tx_strobe 输入。IP 会根据用户此输入,对应每隔一个基本帧的时间,给出一个 iq_tx_enable 输出。

基本帧的开头几个 bytes 为 control words,来自于各个对应控制数据接口;用户不用在 IQ 数据接口(iq_tx,iq_rx)管这几个数,后面则是正常的 IQ 数据收发。

f26e47c4-6ea2-11ee-939d-92fbcf53809c.png

了解了 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 状态,可以开始进行正常的业务数据收发工作了。

f282baec-6ea2-11ee-939d-92fbcf53809c.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5505

    浏览量

    134751
  • 无线通信
    +关注

    关注

    58

    文章

    4612

    浏览量

    144017
  • pll
    pll
    +关注

    关注

    6

    文章

    781

    浏览量

    135364
  • CPRI
    +关注

    关注

    1

    文章

    10

    浏览量

    8787
  • 数据帧
    +关注

    关注

    0

    文章

    47

    浏览量

    6807

原文标题:开发者分享|CPRI 的数据帧结构与初始化流程

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview顺序结构中的初始化问题

    Labview中顺序结构,我想让第一执行完成后,程序初始化,再执行第二,以此类推执行九,因为是一个AO,AI口不停地接收发送,不
    发表于 12-25 11:37

    STM32F1 EXTI初始化流程

    1.EXTI初始化流程建立EXTI、GPIO、NVIC初始化结构体。 EXTI_InitTypeDefEXTI_InitStructure
    发表于 01-13 06:24

    NVIC初始化流程是怎样的

    1.NVIC初始化流程配置中断优先级分组void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);建立NVIC初始化结构
    发表于 01-17 07:08

    基本定时器定时初始化流程

    1.基本定时器定时初始化流程建立时基初始化结构体与中断NVIC结构体TIM_TimeBaseInitTypeDefTIM_TimeBaseS
    发表于 01-20 06:02

    USART初始化流程是怎样的

    1.USART初始化流程建立GPIO、USART、NVIC初始化结构体USART_InitTypeDefUSART_InitStructure
    发表于 02-14 07:38

    USART初始化结构体详解

    USART 初始化结构体详解标准库函数对每个外设都建立了一个初始化结构体,比如USART_InitTypeDef,结构体成员用于设置外设工作
    发表于 02-22 06:08

    基于SQL的数据初始化通用方法

    如何对开发的网络测量系统的数据库部分进行初始化,一直是影响测量系统使用的一个难题。文章总结了几种对应用程序的数据库部分进行初始化安装的方法,比较了它们的不足,提出
    发表于 09-26 17:07 0次下载

    RDA1846S初始化设置

    RDA1846S初始化设置RDA1846S初始化设置RDA1846S初始化设置
    发表于 01-15 17:08 0次下载

    LCD1602初始化流程图及程序的两种方法

    本文介绍LCD1602初始化程序及其LCD1602初始化流程、具体步骤实现的两种方法,供电子爱好者及实验使用。
    发表于 10-08 10:01 4.8w次阅读
    LCD1602<b class='flag-5'>初始化</b><b class='flag-5'>流程</b>图及程序的两种方法

    stm32初始化流程图解析

    STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。本文主要以stm32初始化流程而展开的讨论。
    发表于 11-16 11:39 2w次阅读
    stm32<b class='flag-5'>初始化</b><b class='flag-5'>流程</b>图解析

    基于深度学习的人脸跟踪自动初始化方法

    针对机器学习领域的人脸跟踪研究,其人脸首初始化由人工手动标注的问题,提出了一种基于深度学习的人脸跟踪自动初始化方法。通过建立栈式稀疏自编码神经网络,对大量未标注的样本采用近似恒等
    发表于 11-21 09:01 13次下载
    基于深度学习的人脸跟踪自动<b class='flag-5'>初始化</b>首<b class='flag-5'>帧</b>方法

    8251a有几个端口地址_对8251a进行初始化流程

    本文首先介绍了8251a内部结构框图,其次分析了8251a有几个端口地址和初始化编程流程及程序,最后介绍了8251A的应用。
    的头像 发表于 05-23 15:34 2.1w次阅读
    8251a有几个端口地址_对8251a进行<b class='flag-5'>初始化</b>及<b class='flag-5'>流程</b>

    uboot中进行LCD初始化流程免费下载

    本文档的主要内容详细介绍的是uboot中进行LCD初始化流程免费下载。
    发表于 08-12 08:00 11次下载
    uboot中进行LCD<b class='flag-5'>初始化</b>的<b class='flag-5'>流程</b>免费下载

    eMMC初始化命令发送流程

    eMMC初始化命令发送流程通过stm32单片机驱动eMMC芯片,在完成项目的过程中,命令发送和响应很令人头疼,所以整理出一篇文档供各位开发者参考。初始化命令发送流程1、第一步发送CMD
    发表于 12-05 19:21 18次下载
    eMMC<b class='flag-5'>初始化</b>命令发送<b class='flag-5'>流程</b>

    RT-Thread全球技术大会:如何使用组件以及自动初始化流程

    RT-Thread全球技术大会:如何使用组件和自动初始化流程           审核编辑:彭静
    的头像 发表于 05-27 15:16 1011次阅读
    RT-Thread全球技术大会:如何使用组件以及自动<b class='flag-5'>初始化</b><b class='flag-5'>流程</b>