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

2023-11-07 10:12

本文主要是介绍AD9371 官方例程 NO-OS 主函数 headless 梳理(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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配置概述(一)

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

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

文章目录

  • 六、AD9371 初始化步骤
    • 6.11 使能 Rx 和 ORx 接收 SYSREF
    • 6.12 关闭 TX Deframer SYSREF 、复位 Deframer
    • 6.13 使能FPGA 中JESD TX 的物理层
    • 6.14 使能FPGA 中JESD TX 的链路层
    • 6.15 使能 AD9371 的Deframer 接收 SYSREF,并产生SYSREF脉冲
    • 6.16 使能FPGA 中 RX和RX_OS JESD的物理层和链路层
    • 6.17 请求SYSREF脉冲
    • 6.18 检查 AD9371的 Framer 和 Deframer 状态
    • 6.19 启用跟踪校准
    • 6.20 AD9371 进入 radio on 状态
    • 6.21 ObsRx 路径设置为 OBS_INTERNAL_CALS
    • 6.21 验证硬件平台的同步和链接状态


AD9371 官方例程 NO-OS 主函数 headless 梳理(一),DAC(TX) 对于FPGA 是 framer ,对于AD9371是 Deframer 。ADC时相反。

执行 MCS 时发送的 SYSREF 脉冲用于多个AD9371之间的多芯片同步,但由于 【6.4节执行 MCS】 代码运行时 AD9371 的 framers/deframers 还不能接收 SYSREF 信号 。并且 FPGA 中 JESD204B 的物理层 和 链路层等IP还未使能,不能工作,所以确定性延时这一步并未完成,还需要 SYSREF 脉冲来复位同步 AD9371和FPGA链路层中的LMFC,以保证确定性延迟。

六、AD9371 初始化步骤

6.11 使能 Rx 和 ORx 接收 SYSREF

Rx和ORx Framer 忽略 SYSREF (enable = 0),令enable = 1,允许设备外部的SYSREF(AD9528)到达 Rx 和 ORx framer 中的SYSREF输入端口,等待 SYSREF,以便开始从 AD9371的 Rx和ORx Framer 传输 CGS (K码)

	MYKONOS_enableSysrefToRxFramer(&mykDevice,1)MYKONOS_enableSysrefToObsRxFramer(&mykDevice,1)

6.12 关闭 TX Deframer SYSREF 、复位 Deframer

对 Deframer 复位 ,来清除之前检测到的 disparity bit 错误。并且如果FPGA内部的SERDES锁相环复位,则可能导致lane fifo 上溢/下溢,也需要复位 Deframer

	MYKONOS_enableSysrefToDeframer(&mykDevice,0)		MYKONOS_resetDeframer(&mykDevice)		

6.13 使能FPGA 中JESD TX 的物理层

adxcvr_write(xcvr, ADXCVR_REG_RESETN, 1),解除 JESD 物理层 ip 复位信号,使其逻辑工作,up_resetn 为1后,等几个时钟后,up_pll_rst 变为 0,其连接QPLL,QPLL0RESET (up_qpll_rst), 0 复位失效,使物理层QPLL 工作 ,RX 类似,CPLLPD (up_cpll_rst), adxcvr_clk_enable(rx_adxcvr) CPLL解除复位

    if (up_rstn == 0) beginup_resetn <= 'd0;end else beginif ((up_wreq == 1'b1) && (up_waddr == 10'h004)) beginup_resetn <= up_wdata[0];end
    adxcvr_clk_enable(tx_adxcvr);

6.14 使能FPGA 中JESD TX 的链路层

axi_jesd204_tx_write(jesd, JESD204_TX_REG_LINK_DISABLE, 0x0),解除链路层复位信号 ,up_reset_core 为 0 后,解除 core_reset_all 复位信号,进而 core_reset 变为0,解除 链路层主逻辑 axi_ad9371_tx_jesd/tx IP 的复位信号,JESD 链路层主逻辑开始工作,现在 FPGA 中的 JESD 链路层和物理层已经开始工作,链路中的 serializer 可以输出 K 字符(CGS)

    12'h030: up_reset_core <= up_wdata[0];core_reset_vector <= {1'b0,core_reset_vector[4:1]};core_reset = core_reset_vector[0];
    axi_jesd204_tx_lane_clk_enable(tx_jesd);

6.15 使能 AD9371 的Deframer 接收 SYSREF,并产生SYSREF脉冲

允许设备外部的SYSREF(AD9528)到达 AD9371 的 TX Deframer 中的SYSREF输入端口,等待 SYSREF脉冲,完成 [AD9371 的 Deframer 和 FPGA 中TX链路层 ] 各自的LMFC 同步复位,保证 DAC 链路的 确定性延迟

同时 AD9371 的 Rx和ORx Framer 开始传输 K 字符(CGS )

    MYKONOS_enableSysrefToDeframer(&mykDevice,1)AD9528_requestSysref(clockAD9528_device, 1);no_os_mdelay(1);

6.16 使能FPGA 中 RX和RX_OS JESD的物理层和链路层

同TX,使能 FPGA中RX和RX_OS 链路层和物理层的 主逻辑,使其工作,但对链路层而言,由于还没有接收到 SYSREF 脉冲 ,链路将保持在CGS状态。

	adxcvr_clk_enable(rx_adxcvr);axi_jesd204_rx_lane_clk_enable(rx_jesd);adxcvr_clk_enable(rx_os_adxcvr);axi_jesd204_rx_lane_clk_enable(rx_os_jesd);

6.17 请求SYSREF脉冲

请求SYSREF脉冲,完成 [ AD9371 RX和RX_OS framer 和 FPGA 中RX和RX_OS 链路层 ] 各自的LMFC 同步复位,保证 ADC 链路的 确定性延迟

	AD9528_requestSysref(clockAD9528_device, 1);no_os_mdelay(1);AD9528_requestSysref(clockAD9528_device, 1);no_os_mdelay(5);

SYSREF频率必须与LMFC之间呈整数倍关系

6.18 检查 AD9371的 Framer 和 Deframer 状态

	MYKONOS_readRxFramerStatus(&mykDevice,&framerStatus)MYKONOS_readOrxFramerStatus(&mykDevice,&obsFramerStatus)MYKONOS_readDeframerStatus(&mykDevice,&deframerStatus)

6.19 启用跟踪校准

选择在 radioOn 状态期间使用哪些跟踪校准,必须在 radioOff 状态下设置

 * enableMask  |  Bit description*        [0]  | TRACK_RX1_QEC*        [1]  | TRACK_RX2_QEC*        [2]  | TRACK_ORX1_QEC*        [3]  | TRACK_ORX2_QEC*        [4]  | TRACK_TX1_LOL*        [5]  | TRACK_TX2_LOL*        [6]  | TRACK_TX1_QEC*        [7]  | TRACK_TX2_QEC*        [8]  | TRACK_TX1_DPD*        [9]  | TRACK_TX2_DPD*       [10]  | TRACK_TX1_CLGC*       [11]  | TRACK_TX2_CLGC*       [12]  | TRACK_TX1_VSWR*       [13]  | TRACK_TX2_VSWR*       [16]  | TRACK_ORX1_QEC_SNLO*       [17]  | TRACK_ORX2_QEC_SNLO*       [18]  | TRACK_SRX_QECuint32_t trackingCalMask = TRACK_ORX1_QEC | TRACK_ORX2_QEC | TRACK_RX1_QEC |TRACK_RX2_QEC | TRACK_TX1_QEC | TRACK_TX2_QEC;MYKONOS_enableTrackingCals(&mykDevice,trackingCalMask)

6.20 AD9371 进入 radio on 状态

AD9371 转入 radio on 状态,使能的(之前配置的使能链路) Rx和Tx信号链 将上电,并且开始之前设置的跟踪校准,要退出 radio on 状态回到低功耗,可以使用 MYKONOS_radioOff() 函数。

    MYKONOS_radioOn(&mykDevice)

6.21 ObsRx 路径设置为 OBS_INTERNAL_CALS

Tx校准只有在 radioOn状态 ,并且 obsRx 路径设置为OBS_INTERNAL_CALS时,才能运行。通过下面函数在 radioOn 状态下启动或关闭Obs Rx信号链,先关闭当前 obsRx 路径,再更改到所需的 obsRx 路径

  	MYKONOS_setObsRxPathSource(&mykDevice,OBS_RXOFF)MYKONOS_setObsRxPathSource(&mykDevice,OBS_INTERNALCALS)

6.21 验证硬件平台的同步和链接状态

未完。。。

这篇关于AD9371 官方例程 NO-OS 主函数 headless 梳理(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/362931

相关文章

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

函数式编程思想

我们经常会用到各种各样的编程思想,例如面向过程、面向对象。不过笔者在该博客简单介绍一下函数式编程思想. 如果对函数式编程思想进行概括,就是f(x) = na(x) , y=uf(x)…至于其他的编程思想,可能是y=a(x)+b(x)+c(x)…,也有可能是y=f(x)=f(x)/a + f(x)/b+f(x)/c… 面向过程的指令式编程 面向过程,简单理解就是y=a(x)+b(x)+c(x)

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

Unity3D 运动之Move函数和translate

CharacterController.Move 移动 function Move (motion : Vector3) : CollisionFlags Description描述 A more complex move function taking absolute movement deltas. 一个更加复杂的运动函数,每次都绝对运动。 Attempts to

梳理2024年,螺丝钉们爱用的3款剪辑软件

这年头,视频到处都是,就跟天上的星星一样数不清。不管你是公司里的新面孔,还是职场上的老狐狸,学会怎么剪视频,就好比找到了赢的秘诀。不管是给上司汇报工作,展示你的产品,还是自己搞点小视频记录生活,只要是剪辑得漂亮,肯定能一下子吸引大家的目光,让人记得你。咱们今天就来侃侃现在超火的三款视频剪辑工具,尤其是PR剪辑,你肯定听说过,这货在剪辑界可是大名鼎鼎,用它剪视频,既专业又麻利。 NO1. 福昕轻松

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

✨机器学习笔记(二)—— 线性回归、代价函数、梯度下降

1️⃣线性回归(linear regression) f w , b ( x ) = w x + b f_{w,b}(x) = wx + b fw,b​(x)=wx+b 🎈A linear regression model predicting house prices: 如图是机器学习通过监督学习运用线性回归模型来预测房价的例子,当房屋大小为1250 f e e t 2 feet^