AD9371 Crossbar 和 I、Q数据 映射JESD204B传输层

news2025/1/11 10:15:11

AD9371 系列快速入口

AD9371+ZCU102 移植到 ZCU106 : AD9371 官方例程构建及单音信号收发

ad9371_tx_jesd -->util_ad9371_xcvr接口映射: AD9371 官方例程之 tx_jesd 与 xcvr接口映射

AD9371 官方例程 时钟间的关系与生成 : AD9371 官方例程HDL详解之JESD204B TX侧时钟生成(一)

JESD204B相关IP端口信号 : AD9371 官方例程HDL JESD204B相关IP端口信号

裸机程序配置 AD9528、AD9371、FPGA IP: AD9371 官方例程裸机SW 和 HDL配置概述(一)

AD9371 主函数: AD9371 官方例程 NO-OS 主函数 headless 梳理(一)

AD9371 主函数: AD9371 官方例程 NO-OS 主函数 headless 梳理(二)

文章目录

  • 前言
  • 一、TXDeframer 的 DAC Crossbar 和 Lane Crossbar
  • 二、RXFramer 的 ADC Crossbar 和 Lane Crossbar
  • 三、ObsRxFramer 的 ADC Crossbar 和 Lane Crossbar
  • 四、TX 的 I、Q 映射关系
  • 五、RX 的 I、Q 映射关系
  • 六、RX_OS 的 I、Q 映射关系
  • 总结

前言


从FPGA中的 JESD204B 传输层 tx/rx 基带数据时,I、Q两路 谁占据传输层 组/解帧 时转换器 M0 的位置,谁占据转换器 M1 的位置,才能正确通过AD9371射频 ?

TX传输层要求格式 , [ M3S1, M3S0, M2S1, M2S0, M1S1, M1S0, M0S1, M0S0]
RX传输层输出格式 , [ M3S0, M2S0, M1S0, M0S0]
RX_OS传输层输出格式,[ M1S1, M1S0, M0S1, M0S0]

Lane通道之间的连接关系见 AD9371 官方例程之 tx_jesd 与 xcvr接口映射


一、TXDeframer 的 DAC Crossbar 和 Lane Crossbar

官方例程 TX 分配 4个 LANE和4个转换器M

DAC Crossbar 被一直配置为 framerADC_XBar = 0xB1 = 1011 0001

Lane crossbar 被一直配置为 laneXbar= 0xE4 = 1110 0100;

即 :
LANE0 —> DEFRAMER INPUT 0 —> DEFRAMER OUTPUT 0 —> Tx1 I
LANE1 —> DEFRAMER INPUT 1 —> DEFRAMER OUTPUT 1 —> Tx1 Q
LANE2 —> DEFRAMER INPUT 2 —> DEFRAMER OUTPUT 2 —> Tx2 I
LANE3 —> DEFRAMER INPUT 3 —> DEFRAMER OUTPUT 3 —> Tx2 Q
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
即:

SERDIN0 ——> LANE 0 ——>DEFRAMER INPUT 0 ——> DAC0 ——> DEFRAMER OUTPUT 0 ——> Tx1 I
SERDIN1 ——> LANE 1 ——>DEFRAMER INPUT 1 ——> DAC1 ——> DEFRAMER OUTPUT 1 ——> Tx1 Q
SERDIN2 ——> LANE 2 ——>DEFRAMER INPUT 2 ——> DAC2 ——> DEFRAMER OUTPUT 2 ——> Tx2 I
SERDIN3 ——> LANE 3 ——>DEFRAMER INPUT 3 ——> DAC3 ——> DEFRAMER OUTPUT 3 ——> Tx2 Q

二、RXFramer 的 ADC Crossbar 和 Lane Crossbar

官方例程 RX 分配 2个 LANE和4个转换器M

ADC Crossbar 被一直配置为 framerADC_XBar = 0xB1=1011 0001

Lane Crossbar 根据RX 转换器M 的数量
M=4,framerLaneXbar = 0x08=0000 1000; 使用 Rxframer outputs 0 and 2
M=2,framerLaneXbar = 0x04; 使用 Rxframer outputs 0 and 1

文章后续默认 M=4,framerLaneXbar = 0x08;

在这里插入图片描述

Rx1 I ——>RXFramer INPUT 0 ——>ADC0 ——> RXFramer OUTPUT 0 ——> LANE 0 ——> SERDOUT0
Rx1 Q ——>RXFramer INPUT 1 ——>ADC1 ——> RXFramer OUTPUT 0 ——> LANE 0 ——> SERDOUT0
Rx2 I ——>RXFramer INPUT 2 ——>ADC2 ——> RXFramer OUTPUT 2 ——> LANE 1 ——> SERDOUT1
Rx2 Q ——>RXFramer INPUT 3 ——>ADC3 ——> RXFramer OUTPUT 2 ——> LANE 1 ——> SERDOUT1

三、ObsRxFramer 的 ADC Crossbar 和 Lane Crossbar

官方例程 ObsRx 分配 2个 LANE和2个转换器M

ADC Crossbar 被一直配置为 framerADC_XBar = 0xB1=1011 0001

Lane Crossbar 被一直配置为 framerLaneXbar = 0x40=0100 0000; 使用 ObsRxframer outputs 0 and 1
在这里插入图片描述

在这里插入图片描述

Rx_OS I ——> ObsRxFramer INPUT 0 ——>ADC0 ——> ObsRxFramer OUTPUT 0 ——> LANE 2 ——> SERDOUT2
Rx_OS Q ——>ObsRxFramer INPUT 1 ——>ADC1 ——> ObsRxFramer OUTPUT 1 ——> LANE 3 ——> SERDOUT3

四、TX 的 I、Q 映射关系

第一节内容结合 Lane通道之间的连接关系 AD9371 官方例程之 tx_jesd 与 xcvr接口映射 ,可得到TX:

tx_phy0(tx_jesd) ——> SERDIN0 ——> Tx1 I
tx_phy1(tx_jesd) ——> SERDIN1 ——> Tx1 Q
tx_phy2(tx_jesd) ——> SERDIN2 ——> Tx2 I
tx_phy3(tx_jesd) ——> SERDIN3 ——> Tx2 Q


链路层:

而在 axi_ad9371_tx_jesd/tx IP核逻辑中输入数据 tx_data 经过加扰,字符替换标志后,输出 phy_data

tx_data(tx_jesd) ——> phy_data (tx_jesd)

phy_data [ 31: 0] (tx_jesd) = tx_phy0(tx_jesd)
phy_data [63:32] (tx_jesd) = tx_phy1(tx_jesd)
phy_data [95:64] (tx_jesd) = tx_phy2(tx_jesd)
phy_data [127:96] (tx_jesd)= tx_phy3(tx_jesd)


传输层

dac_ddata(tpl_core) ——> link_tdata(tpl_core) ——> tx_data(tx_jesd)

dac_ddata 格式 :[ M3S1, M3S0, M2S1, M2S0, M1S1, M1S0, M0S1, M0S0]

经过 组帧得到 link_tdata,link_tdata格式 Octets LSB first :

[ M3S1[OL], M3S0[OL], M2S1[OL], M2S0[OL], M1S1[OL], M1S0[OL], M0S1[OL], M0S0[OL]]

注意 : MmSn[OL] = { MmSn [7:0] ,MmSn [15:8] }

即:

M0S1, M0S0 ——> M0S1[OL], M0S0[OL] ——> tx_phy0(tx_jesd) ——> SERDIN0 ——> Tx1 I
M1S1, M1S0 ——> M1S1[OL], M1S0[OL] ——> tx_phy1(tx_jesd) ——> SERDIN1 ——> Tx1 Q
M2S1, M2S0 ——> M2S1[OL], M2S0[OL] ——> tx_phy2(tx_jesd) ——> SERDIN2 ——> Tx2 I
M3S1, M3S0 ——> M3S1[OL], M3S0[OL] ——> tx_phy3(tx_jesd) ——> SERDIN3 ——> Tx2 Q


五、RX 的 I、Q 映射关系

第二节内容结合 Lane通道之间的连接关系 AD9371 官方例程之 tx_jesd 与 xcvr接口映射 ,可得到RX:

{ Rx1 Q[7:0],Rx1 Q[15:8],Rx1 I[7:0],Rx1 I[15:8] } ——> SERDOUT0 ——> rx_phy0(rx_jesd)
{ Rx2 Q[7:0],Rx2 Q[15:8],Rx2 I[7:0],Rx2 I[15:8] } ——> SERDOUT1 ——> rx_phy1(rx_jesd)


链路层:

phy_data [ 31: 0] (rx_jesd) = rx_phy0 (rx_jesd) = rx_0 (ad9371_xcvr)
phy_data [63:32] (rx_jesd) = rx_phy1 (rx_jesd) = rx_1 (ad9371_xcvr)

而在 rx_jesd/rx IP核逻辑中,输入数据 phy_data 经过解扰等操作后输出 rx_data

phy_data(rx_jesd) ——> rx_data(rx_jesd) ——> link_data(rx_ad9371_tpl_core/tpl_core)


传输层

link_data(rx_ad9371_tpl_core/tpl_core) ——> adc_data(rx_ad9371_tpl_core/tpl_core)

link_data 格式 :[ M3S0[OL], M2S0[OL], M1S0[OL], M0S0[OL]]

注意 : MmSn[OL] = { MmSn [7:0] ,MmSn [15:8] }

经过 解帧得到 adc_data,adc_data 格式 samples LSB first :

[ M3S0, M2S0, M1S0, M0S0]

即:

M1S0, M0S0 ——> M1S0[OL], M0S0[OL] ——> rx_phy0 (rx_jesd) ——> Rx1 Q,Rx1 I
M3S0, M2S0 ——> M3S0[OL], M2S0[OL] ——> rx_phy1 (rx_jesd) ——> Rx2 Q,Rx2 I

即:
Rx1 I ——> M0S0,Rx1 Q ——> M1S0,Rx2 I ——> M2S0,Rx2 Q ——> M3S0


六、RX_OS 的 I、Q 映射关系

第三节内容结合 Lane通道之间的连接关系 AD9371 官方例程之 tx_jesd 与 xcvr接口映射 ,可得到RX_OS:

Rx_OS I [OL] —— > SERDOUT2 ——> rx_2(xcvr) ——> rx_phy0(rx_os_jesd)
Rx_OS Q [OL] ——> SERDOUT3 ——> rx_3(xcvr) ——> rx_phy1(rx_os_jesd)

Rx_OS 类似 RX 中的形式,简略为 Rx_OS I、Q [OL]


链路层:

phy_data [ 31: 0] (rx_os_jesd) = rx_phy0 (rx_os_jesd) = rx_2 (ad9371_xcvr)
phy_data [63:32] (rx_os_jesd) = rx_phy1 (rx_os_jesd) = rx_3 (ad9371_xcvr)

而在 rx_os_jesd/rx IP核逻辑中,输入数据 phy_data 经过解扰等操作后输出 rx_data

phy_data(rx_os_jesd/rx) ——> rx_data(rx_os_jesd) ——> link_data(tpl_core)


传输层

link_data(tpl_core) ——> adc_data(tpl_core)

link_data 格式 :[ M1S1[OL], M1S0[OL], M0S1[OL], M0S0[OL]]

注意 : MmSn[OL] = { MmSn [7:0] ,MmSn [15:8] }

经过 解帧得到 adc_data,adc_data 格式 samples LSB first :

[ M1S1, M1S0, M0S1, M0S0]

即:

M0S1, M0S0 ——> M0S1[OL], M0S0[OL] ——> rx_phy0 (rx_os_jesd) ——> Rx_OS I
M1S1, M1S0 ——> M1S1[OL], M1S0[OL] ——> rx_phy1 (rx_os_jesd) ——> Rx_OS Q


总结

TX 传输层输入 I、Q 排列如下:

[ Tx2 Q S1,Tx2 Q S0, Tx2 I S1, Tx2 I S0, Tx1 Q S1,Tx1 Q S0, Tx1 I S1, Tx1 I S0 ]

RX 传输层输出 I、Q 排列如下:

[ Rx2 Q, Rx2 I,Rx1 Q, Rx1 I]

RX_OS 传输层输出 I、Q 排列如下:

[ Rx_OS Q S1, Rx_OS Q S0,Rx_OS I S1, Rx_OS I S0 ]

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

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

相关文章

vim相关命令讲解!

本文旨在讲解vim 以及其相关的操作! 希望读完本文,读者会有一定的收获!好的,干货马上就来! 初识vim 在讲解vim之前,我们首先要了解vim是什么,有什么作用?只有了解了vim才能更好的理…

ModStartBlog v8.5.0 评论开关布局调整,系统后台全面优化

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 …

怎么用电脑开发安卓app?能外包吗?

随着智能手机的普及,安卓应用程序的开发需求也越来越高,许多人都想开发自己的安卓应用程序,但苦于缺乏相关知识和技能,本文将介绍如何使用电脑开发安卓应用程序,以及是否可以将开发工作外包给专业的开发团队。 一、了…

7天入门python系列之第三天Python的函数和模块

第3天主要是学习Python的函数和模块 编者打算开一个python 初学主题的系列文章,用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python,这是一个紧凑的学习计划。但并不是不可完成的。第三天开始python函数和…

python3GUI--PyQt5打包心得(二)nuitka、inno Setup(详细图文演示、附所有软件)

文章目录 一.前言二.准备1.nuitka1.1介绍1.3项目地址1.3安装 2.mingw641.1介绍1.2下载安装 3.Inno Setup1.1介绍1.2安装 三.nuitka打包1.打包2.装mingw643.装ccahe4.打包完成 四.测试效果五.inno Setup制作安装软件1.配…

呼叫中心系统如果对接大模型

电话机器人对接大模型的例子 介绍 自chatgpt3.5发布以来,各种大模型飞速发展,各行各业都有接入大模型的需求,呼叫中心行业非常适合通过接入大模型用AI来回答用户的各种咨询,降低人力资源,使用顶顶通呼叫中心中间件&a…

日志收集的方式和优点

日志是组织 IT 环境中发生的所有事情的记录。它们通常是一系列带有时间戳的消息,可为您提供有关网络中所有活动的第一手信息。 网络中的每个设备和应用程序都会生成日志数据以及用于监控网络流量的 NetFlow 数据,日志是安全信息和事件管理(S…

宠物医院信息展示预约小程序的效果如何

养宠家庭越来越多,随之带来的就是宠物健康问题,生活条件稍微好点的家庭,只要宠物生病或洗护、寄养、美容等就会前往宠物医院,而近些年来,市场中的宠物医院也在连年增加,可以预见市场需求度较高。 而对宠物…

Linux shell编程学习笔记23:[] [[]]的用法小结

上回梳理 了Linux Shell编程中 () 、$()和 (())的用法,现在接着梳理 [] 和[[]]的用法。 1 单中括号(方括号)[] 1.1 检测某个条件是否成立 [和test等同,是 Shell 内置命令,用来检测某个条件是否成立。条件成立时退出状…

vue实战——登出【详解】

登出逻辑 弹窗询问用户是否确定登出清除登录状态 登录状态通常存储在 vuex 和 sessionStorage 中&#xff0c;更彻底的登出还可以把所有本地存储数据都清除掉&#xff0c;如 Cookie 和 localStorage 。跳转到登录页面 代码实现 <div class"loginBox" v-if"is…

操作系统:输入输出管理(一)系统概述与设备独立性软件

一战成硕 5.1 I/O系统概述5.1.1 I/O设备5.1.2 I/O控制方式5.1.3 I/O软件层次结构5.1.4 应用程序的I/O接口 5.2 设备独立性软件5.2.1 与设备无关的软件5.2.2 高速缓存与缓冲区5.2.3 设备分配与回收5.2.4 spooling技术&#xff08;假脱机技术&#xff09; 5.1 I/O系统概述 5.1.1…

合并两个链表 --- 递归回溯算法练习二

目录 1. 分析题意 2. 分析算法原理 2.1. 递归思路&#xff1a; 1. 挖掘子问题&#xff1a; 3. 编写代码 3.1. step one 3.2. step two 3.3. step three 3.1. 递归写法 4. 补充 --- 迭代写法 5. 总结 1. 分析题意 力扣上原题链接如下&#xff1a; 21. 合并两个有序链表…

ubuntu16.04 交叉编译 mbedtls

在为客户交叉编译项目时需要依赖 mbedtls&#xff0c; 客户的机器是 arm64 的 ubuntu 16.04&#xff0c; 交叉编译过程中遇到几个问题。 首先&#xff0c; mbedtls 需要依赖 python, 在 cmake 的过程中&#xff0c; 如果不是使用系统默认的 cmake 可能会导致&#xff0c;mbedt…

6.4翻转二叉树(LC226—送分题,前序遍历)

算法&#xff1a; 第一想法是用昨天的层序遍历&#xff0c;把每一层level用切片反转。但是这样时间复杂度很高。 其实只要在遍历的过程中去翻转每一个节点的左右孩子就可以达到整体翻转的效果。 这道题目使用前序遍历和后序遍历都可以&#xff0c;唯独中序遍历不方便&#x…

赛氪中西部外语翻译大赛入榜2023国内翻译赛事发展评估报告

中西部外语翻译大赛入选中国外文局CATTI项目管理中心和中国外文界平台联合发布《2023国内翻译赛事发展评估报告》 近日&#xff0c;中国外文局CATTI项目管理中心和中国外文界平台联合发布了《2023国内翻译赛事发展评估报告》&#xff0c;报告对国内主流外语翻译赛事进行了问卷调…

Centos8安装出错问题

科普介绍&#xff1a; CentOS 8 是一个基于 Linux 的操作系统&#xff0c;是 Red Hat Enterprise Linux &#xff08;RHEL&#xff09;的免费和开源版本。它提供了稳定、安全和可靠的基础设施&#xff0c;适用于服务器和桌面环境。CentOS 8 是 CentOS 系列中最新的版本&#x…

Nginx(五)

负载均衡 官网文档 Using nginx as HTTP load balancer nginx中实现反向代理的方式 HTTP&#xff1a;通过nginx配置反向代理到后端服务器&#xff0c;nginx将接收到的HTTP请求转发给后端服务器。使用 proxy_pass 命令 HTTPS&#xff1a;通过nginx配置反向代理到后端服务器&…

Amazon Aurora MySQL 与 Amazon Redshift 的 Zero ETL 集成已全面可用,一起轻松上手!

“数据是应用、流程和商业决策的核心。” 亚马逊云科技数据库、 数据分析和机器学习全球副总裁 Swami Sivasubramanian 如今&#xff0c;客户常用的数据传输模式是建立从 Amazon Aurora 到 Amazon Redshift 的数据管道。这些解决方案能够帮助客户获得新的见解&#xff0c;进而…

【狂神说Java】linux详解

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;狂神说Java &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c;永远…

Llama2通过llama.cpp模型量化 WindowsLinux本地部署

Llama2通过llama.cpp模型量化 Windows&Linux本地部署 什么是LLaMA 1 and 2 LLaMA&#xff0c;它是一组基础语言模型&#xff0c;参数范围从7B到65B。在数万亿的tokens上训练的模型&#xff0c;并表明可以专门使用公开可用的数据集来训练最先进的模型&#xff0c;而无需求…