xilinx cpri ip 开发记录

CPRI是无线通信里的一个标准协议,连接REC和RE的通信。
Xilinx有提供CPRI IP核。

区别于其它通信协议,如以太网等,CPRI是一个同步系统。

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

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

在这里插入图片描述

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

接下来,分析CPRI的数据帧格式,以帮助我们进一步了解这些不同类型的数据,是如何共同复用CPRI通道的。
image.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数据。

在这里插入图片描述

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

image.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这一排四个控制字,会在协议通信,对照信息的时候,都有各自不同的用途定义。

在这里插入图片描述

于是,我们结合Xilinx IP,看下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状态,可以开始进行正常的业务数据收发工作了。

image.png

Xilinx IP核手册编号为pg056,首先通过配置好IP核,生成example工程,该IP为付费IP,需要特定lic文件,硬件设计部分和普通SFP类似,本项目采用通信速率10.137G
在这里插入图片描述
IP核可分为master和slave两种模式
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

客户端动态降级系统

本文字数:4576字 预计阅读时间:20分钟 01 背景 无论是iOS还是Android系统的设备,在线上运行时受硬件、网络环境、代码质量等多方面因素影响,可能会导致性能问题,这一类问题有些在开发阶段是发现不了的。如何在线上始终…

【命名空间详解】c++入门

目录 命名空间的定义 1.命名空间的正常定义 2.命名空间还可以嵌套 3. 命名空间可以合并 命名空间的使用 1.加命名空间名称及作用域限定符 2.使用using将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入 输入,输出 输出 命名空间的定义 …

Java技术学习|Git

学习材料声明 尚硅谷Git入门到精通全套教程(涵盖GitHub\Gitee码云\GitLab) GIt Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。 它具有…

英伟达大跳水!一夜暴跌10%,市值蒸发2000亿

相信大家已经在各大社交平台上看到了,英伟达一夜蒸发了2000亿美元! GPT-3.5研究测试: https://hujiaoai.cn GPT-4研究测试: https://higpt4.cn Claude-3研究测试(全面吊打GPT-4): https://hic…

大语言模型隐私防泄漏:差分隐私、参数高效化

大语言模型隐私防泄漏:差分隐私、参数高效化 写在最前面题目6:大语言模型隐私防泄漏Differentially Private Fine-tuning of Language Models其他初步和之前的基线微调模型1微调模型2通过低秩自适应进行微调( 实例化元框架1) 在隐…

Vue2 —— 学习(九)

目录 一、全局事件总线 (一)全局总线介绍 关系图 对图中的中间商 x 的要求 1.所有组件都能看到 2.有 $on $off $emit (二)案例 发送方 student 接收方 二、消息订阅和发布 (一)介绍 &#xff08…

虚拟机中的打印机,无法打印内容,打印的是白纸或英文和数字,打印不了中文

原因:打印机驱动设置不正确 解决方案: 打开打印机属性 -> 高级 -> 新驱动程序 下一页 -> Windows 更新 耐心等待,时间较长。 选择和打印机型号匹配的驱动,我选择的是: 虽然虚拟机和主机使用的驱动不…

跨境电商指南:防关联浏览器和云主机有什么区别?

跨境电商的卖家分为独立站卖家和平台卖家。前者会自己开设独立站点,比如通过 shopify;后者则是入驻亚马逊或 Tiktok 等平台,开设商铺。其中平台卖家为了扩大收益,往往不止开一个店铺,或者有店铺代运营的供应商&#xf…

皇后之战:揭秘N皇后问题的多维解法与智慧【python 力扣52题】

作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…

Go之map详解

map的结构 map实现的两个关键数据结构 hmap 定义了map的结构bmap 定义了hmap.buckets中每个bucket的结构 // A header for a Go map. type hmap struct {count int // 元素的个数flags uint8 // 状态标记,标记map当前状态,是否正在写入B …

css层叠性,继承性,优先级

前言 本文概要:讲述css的三大特性,层叠,继承和优先级。 层叠性 描述:我们试想以下这种情况:我们定义了同一个选择器,但是定义的属性不同。属性有相同的也有不同的,那么最后我们这个页面会听谁的…

CSS display属性

目录 概述: 设置display示例: none: block: inline: inline-block : 概述: 在CSS中我们可以使用display属性来控制元素的布局,我们可以通过display来设置元素的类型。 在不设置…

封装个js分页插件

// 分页插件类 class PaginationPlugin {constructor(fetchDataURL, options {}) {this.fetchDataURL fetchDataURL;this.options {containerId: options.containerId || paginationContainer,dataSizeAttr: options.dataSizeAttr || toatalsize, // 修改为实际API返回的数据…

ppt技巧:​如何将两个PPT幻灯片文件合并成一个?

第一种方式:复制粘贴幻灯片 1. 打开第一个PPT幻灯片文件,确保你已经熟悉该文件的内容和布局。 2. 打开第二个PPT幻灯片文件,浏览其中的所有幻灯片,选择你想要合并到第一个文件中的幻灯片。 3. 使用快捷键CtrlC(Wind…

虚拟ip地址怎么弄到手机上

在当下的社会,手机已经变得至关重要,它融入了我们的日常生活,无论是上网冲浪、社交互动,还是工作学习,都离不开它。但有时候,由于某些限制,我们可能无法充分享受网络带来的便利。这时&#xff0…

Nginx part2.1

目录 搭建目录网页 为网页设置用户登录 做一个文件目录网页,并进行登陆 示范 搭建目录网页 启动nginx: systemctl start nginx 开机自启动nginx: systemctl enable nginx 启动完服务后,查看自己的nginx的状态:sys…

【JavaWeb】Day47.Mybatis基础操作——删除

Mybatis基础操作 需求 准备数据库表 emp 创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动、lombok) application.properties中引入数据库连接信息 创建对应的实体类 Emp(实体类属性采用驼峰命名&#xf…

【C++提高】常用容器

常用容器 引言:迭代器的使用一、vector容器1. vector基本概念2. vector的迭代器3. vector构造函数4. vector赋值操作5. vector容量和大小6. vector插入和删除7. vector数据存取8. vector互换容器9. vector预留空间 二、deque容器1. deque容器的基本概念2. deque容器…

python免费调用阿里云通义千问(q-wen-max)大模型API

文章目录 通义千问开通免费API Keypython调用阿里云通义千问API 通义千问 通义千问,是基于阿里巴巴达摩院在自然语言处理领域的研究和积累。采用更先进的算法和更优化的模型结构,能够更准确地理解和生成自然语言、代码、表格等文本。 支持更多定制化需…

HarmonyOs开发:导航tabs组件封装与使用

前言 主页的底部导航以及页面顶部的切换导航,无论哪个系统,哪个App,都是最常见的功能之一,虽然说在鸿蒙中有现成的组件tabs可以很快速的实现,但是在使用的时候,依然有几个潜在的问题存在,第一&a…