RFSoC应用笔记 - RF数据转换器 -22- API使用指南之配置DAC相关工作状态和中断相关函数使用

news2025/1/20 11:56:01

前言

本文完结后,关于RFSoC的配置的API函数部分就全部介绍完毕,后续有空将更新介绍简单的射频收发回环示例工程,不定时更新,敬请期待。

配置DAC相关工作状态

XRFdc_SetInterpolationFactor

函数原型

u32 XRFdc_SetInterpolationFactor(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 InterpolationFactor); 

参数

  • *XRFdc InstancePtr:指向驱动程序实例的指针。
  • u32 Tile_Id:RF-DAC tile 编号。 有效值为 0-3。
  • u32 Block_Id:块内的RF-DAC 块编号。 有效值为 0-3。
  • u32 InterpolationFactor:要为RF-DAC 设置的插值因子。

带标注的只有GEN 3代的有该参数配置。

描述

此 API 函数为请求的 RF-DAC 设置插值因子,并根据插值因子更新 FIFO 读取宽度。插值的动态变化对块吞吐量有影响。 可以动态更改 AXI4-Stream 时钟速率以适应吞吐量的变化。 在非 MTS 模式下,推荐的程序是关闭 FIFO(Xrfdc_setupfifo),更改时钟速率(Xrfdc_SetfabClkOutDiv),清除 FIFO 中断,然后重新启动 FIFO(Xrfdc_SetupFifo)。

返回值

XRFDC_SUCCESS

XRFDC_FAILURE

XRFdc_SetFabWrVldWords

函数原型

u32 XRFdc_SetFabWrVldWords(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 FabricWrVldWords); 

参数

  • *XRFdc InstancePtr:指向驱动程序实例的指针。
  • u32 Tile_Id:RF-DAC tile 编号。 有效值为 0-3。
  • u32 Block_Id:块内的RF-DAC 块编号。 有效值为 0-3。
  • u32 FabricWrVldWords :写入要为RF-DAC 设置的结构数据速率。

说明

此 API 函数通过写入相应的寄存器来设置请求的 RF-DAC 的写入结构数据速率。此 API 函数仅适用于 RF-DAC。

返回值

XRFDC_SUCCESS

XRFDC_FAILURE

XRFdc_SetDecoderMode

函数原型

u32 XRFdc_SetDecoderMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 DecoderMode);

参数

  • *XRFdc InstancePtr:指向驱动程序实例的指针。
  • u32 Tile_Id:RF-DAC tile 编号。 有效值为 0-3。
  • u32 Block_Id:块内的RF-DAC 块编号。 有效值为 0-3。
  • u32 DecoderMode:解码器模式设置。有效值为:
    • Maximum linearity:最大线性度,用于随机解码器
    • Maximum SNR:最大信噪比,用于非随机化解码器

image-20220409140527875

说明

这个API函数将解码器模式写入相关的寄存器中。驱动器结构被用新的值进行更新。这个API函数只用于RF-DACs。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_SetInvSincFIR

函数原型

u32 XRFdc_SetInvSincFIR(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u16 Mode);

参数

  • u16 Mode:有效值为0(禁用),1(第一奈奎斯特区),2 (第二奈奎斯特区,仅对于第三代设备)。

说明

该API函数用于启用或禁用反Sinc滤波器。这个API函数只用于RF-DAC。模式2仅适用于第3代设备。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_SetDACVOP (Gen 3)

函数原型

u32 XRFdc_SetDACVOP(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 uACurrent);

参数

  • u32 uACurrent: 电流的单位是μA。对于ES1硅,范围是6425μA至32000μA(数值将被四舍五入到最近的增量)。对于生产型硅,范围是2250μA至40500μA(数值将被四舍五入到最近的增量)。

说明
VOP μA电流用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_SetDACCompMode (Gen 3)

函数原型

u32 XRFdc_SetDACCompMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Enable)

参数

  • u32 Enable : 启用传统的DAC输出模式。有效值为0(第三代行为)1(第二代行为)。

说明

该模式用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_SetDataPathMode (Gen 3)

函数原型

u32 XRFdc_SetDataPathMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Mode);

参数

  • u32 Mode:数据路径模式。有效值为1-4。
MacroDescription
XRFDC_DATAPATH_MODE_DUC_0_FSDIVTWOFull Bandwidth FS 7GSPS
XRFDC_DATAPATH_MODE_DUC_0_FSDIVFOURHalf Bandwidth, Low Pass IMR, FS 10GSPS
XRFDC_DATAPATH_MODE_FSDIVFOUR_FSDIVTWOHalf Bandwidth, High Pass IMR, FS 10GSPS
XRFDC_DATAPATH_MODE_NODUC_0_FSDIVTWOFull Bandwidth, Bypass Datapath

说明

该模式用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_SetIMRPassMode (Gen 3)

函数原型

u32 XRFdc_SetIMRPassMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Mode)

参数

  • u32 Mode : IMR过滤器模式。有效值是0(用于低通),1(用于高通)。
MacroDescription
XRFDC_DAC_IMR_MODE_LOWPASSLow pass filter
XRFDC_DAC_IMR_MODE_HIGHPASSHigh pass filter

说明

该模式用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。

返回值
XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_SetDACDataScaler

函数原型

u32 XRFdc_SetDACDataScaler(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Enable);

参数

  • u32 Enable: 禁用(0)或启用(1)数据缩放器。

说明

该API函数启用/禁用数据缩放器。如果数据缩放器被启用,数据路径的MSB被保留,以防止溢出,代价是SN值略有下降。
数据路径的MSB被保留,以防止溢出,代价是SNR略有下降。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

中断部分

所有的中断处理函数都在xrfdc_intr.c文件中实现。这些函数的原型是通过xrfdc.h提供的。

XRFdc_IntrEnable

函数原型

u32 XRFdc_IntrEnable(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 IntrMask)

参数

  • *XRFdc InstancePtr: 指向驱动程序实例的指针。

  • u32 Type:RF-ADC或RF-DAC;0表示RF-ADC,1表示RF-DAC。

  • u32 Tile_Id:RF-ADC或RF-DAC的瓦片编号。有效值为0-3。

  • u32 Block_Id:RF-ADC或RF-DAC在瓦片中的编号。有效值为0-3。

  • u32 IntrMask: 要启用的中断。有效的掩码是:

    • XRFDC_IXR_FIFOUSRDAT_MASK 0x0000000FU

    • XRFDC_IXR_FIFOUSRDAT_OF_MASK 0x00000001U

    • XRFDC_IXR_FIFOUSRDAT_UF_MASK 0x00000002U

    • XRFDC_IXR_FIFOMRGNIND_OF_MASK 0x00000004U

    • XRFDC_IXR_FIFOMRGNIND_UF_MASK 0x00000008U

    • XRFDC_ADC_IXR_DATAPATH_MASK 0x00000FF0U

    • XRFDC_ADC_IXR_DMON_STG_MASK 0x000003F0U

    • XRFDC_DAC_IXR_DATAPATH_MASK 0x000FFFF0U (3代)

    • XRFDC_DAC_IXR_INTP_STG_MASK 0x000003F0U

    • XRFDC_DAC_IXR_INTP_I_STG0_MASK 0x00000010U

    • XRFDC_DAC_IXR_INTP_I_STG1_MASK 0x00000020U

    • XRFDC_DAC_IXR_INTP_I_STG2_MASK 0x00000040U

    • XRFDC_DAC_IXR_INTP_I_STG3_MASK 0x00010000U (第三代)

    • XRFDC_DAC_IXR_INTP_Q_STG0_MASK 0x00000080U

    • XRFDC_DAC_IXR_INTP_Q_STG1_MASK 0x00000100U

    • XRFDC_DAC_IXR_INTP_Q_STG2_MASK 0x00000200U

    • XRFDC_DAC_IXR_INTP_Q_STG3_MASK 0x00020000U (第三代)

    • XRFDC_ADC_IXR_DMON_I_STG0_MASK 0x00000010U

    • XRFDC_ADC_IXR_DMON_I_STG1_MASK 0x00000020U

    • XRFDC_ADC_IXR_DMON_I_STG2_MASK 0x00000040U

    • XRFDC_ADC_IXR_DMON_Q_STG0_MASK 0x00000080U

    • XRFDC_ADC_IXR_DMON_Q_STG1_MASK 0x00000100U

    • XRFDC_ADC_IXR_DMON_Q_STG2_MASK 0x00000200U

    • XRFDC_IXR_QMC_GAIN_PHASE_MASK 0x00000400U

    • XRFDC_IXR_QMC_OFFST_MASK 0x00000800U

    • XRFDC_DAC_IXR_INVSNC_OF_MASK 0x00001000U

    • XRFDC_SUBADC_IXR_DCDR_MASK 0x00FF0000U

    • XRFDC_SUBADC0_IXR_DCDR_OF_MASK 0x00010000U

    • XRFDC_SUBADC0_IXR_DCDR_UF_MASK 0x00020000U

    • XRFDC_SUBADC1_IXR_DCDR_OF_MASK 0x00040000U

    • XRFDC_SUBADC1_IXR_DCDR_UF_MASK 0x00080000U

    • XRFDC_SUBADC2_IXR_DCDR_OF_MASK 0x00100000U

    • XRFDC_SUBADC2_IXR_DCDR_UF_MASK 0x00200000U

    • XRFDC_SUBADC3_IXR_DCDR_OF_MASK 0x00400000U

    • XRFDC_SUBADC3_IXR_DCDR_UF_MASK 0x00800000U

    • XRFDC_ADC_OVR_VOLTAGE_MASK 0x04000000U

    • XRFDC_ADC_OVR_RANGE_MASK 0x08000000U

    • XRFDC_ADC_DAT_OVR_MASK 0x40000000U

    • XRFDC_ADC_FIFO_OVR_MASK 0x80000000U

    • XRFDC_COMMON_MASK 0x01000000U

    • XRFDC_DAC_IXR_FIFOUSRDAT_SUPP_MASK 0x30000000U (Gen 3)

    • XRFDC_DAC_IXR_FIFOUSRDAT_MASK 0x3000000FU (Gen 3)

    • XRFDC_DAC_IXR_FIFOACTIND_OF_MASK 0x20000000U (第3代)

    • XRFDC_DAC_IXR_FIFOACTIND_UF_MASK 0x10000000U (第3代)

    • XRFDC_DAC_IXR_MXR_HLF_I_MASK 0x00002000U (第3代)

    • XRFDC_DAC_IXR_MXR_HLF_Q_MASK 0x00004000U (第3代)

    • XRFDC_DAC_IXR_IMR_OV_MASK 0x00040000U (第3代)

    • XRFDC_DAC_IXR_INV_SINC_EVEN_NYQ_MASK 0x00080000U (第3代)

    • XRFDC_ADC_CMODE_OVR_MASK 0x10000000U (第3代)

    • XRFDC_ADC_CMODE_UNDR_MASK 0x20000000U (第3代)

    • XRFDC_IXR_FIFOUSRDAT_OBS_MASK 0x0000F000U (第3代)

说明

该API函数通过将IntrMask作为输入并写入相应的寄存器位来启用相应转换器的中断。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_IntrDisable

函数原型

u32 XRFdc_IntrDisable(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 IntrMask)

参数

  • u32 IntrMask: 要禁用的中断。有效的掩码在XRFdc_IntrEnable的API中描述。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_Set StatatusHandler

函数原型

void XRFdc_SetStatusHandler(XRFdc *InstancePtr, void *CallBackRefPtr, XRFdc_StatusHandler FunctionPtr)

参数

  • XRFdc *InstancePtr: 指向驱动实例的指针。

  • void *CallBackRefPtr: 当回调函数被调用时传递回来的上层回调引用。

  • XRFdc_StatusHandler FunctionPtr。指向回调函数的指针。

说明
这个函数设置了状态回调函数,即状态处理程序,当驱动程序遇到必须报告给上层软件的情况时,会调用这个函数。处理程序在一个中断上下文中执行,以减少处理量。

XRFdc_IntrClr

函数原型

u32 XRFdc_IntrClr(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 IntrMask);  

参数

  • u32 IntrMask: 要禁用的中断。有效的掩码在XRFdc_IntrEnable的API中描述。

说明

该函数通过将IntrMask作为输入并写入相应的寄存器位来清除相应转换器的中断。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

XRFdc_GetIntrStatus

函数原型

u32 XRFdc_GetIntrStatus(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 *IntrStsPtr)

参数

  • u32 IntrMask: 要禁用的中断。有效的掩码在XRFdc_IntrEnable的API中描述。

说明

这个函数通过掩码返回中断的状态。有效掩码的描述见XRFdc_IntrEnable的API中描述。

XRFdc_IntrHandler

函数原型

u32 XRFdc_IntrHandler(u32 Vector, void *XRFdcPtr)

参数

  • u32 Vector: 中断向量编号。
  • *void XRFdcPtr: 指向引起中断的驱动实例的指针。

说明

该函数由驱动器内部使用。这是Zynq® UltraScale+™射频数据转换器驱动器的主中断处理程序。这个例程必须使用OS/BSP特定的API连接到一个中断控制器。它清除了中断源并打印了中断的原因。

返回值

METAL_IRQ_HANDLED (通知Libmetal库,IRQ被处理)。

XRFdc_GetEnabledInterrupts

函数原型

u32 XRFdc_GetEnabledInterrupts(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 *IntrMask)  

参数

  • u32 *IntrMask: IntrMask是一个指向启用中断的掩码的指针。1表示一个启用的中断,而0表示禁用的中断。

描述

这个API函数用一个给定块的启用的中断来填充IntrMask。

返回值

XRFDC_SUCCESS
XRFDC_FAILURE

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

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

相关文章

内存一致性,指令重排序,内存屏障,volatile解析

文章目录为什么会存在“内存可见性”问题重排序与内存可见性的关系as-if-serial语义单线程程序的重排序规则多线程程序的重排序规则happen-before是什么解决方案:内存屏障Volatile关键字解决内存可见性问题的实现原理为什么会存在“内存可见性”问题 下图为x86架构…

redis 的企业实战应用 (二)

前言: 如今redis的常用场景有 短信登录:使用redis共享session来实现 商户查询缓存:会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码…

【数学】仿射变换

∣降维打击NightguardSeries.∣\begin{vmatrix}\Huge{\textsf{ 降 维 打 击 }}\\\texttt{ Nightguard Series. }\end{vmatrix}∣∣∣∣∣​ 降 维 打 击 Nightguard Series. ​∣∣∣∣∣​ 注:本文讨论的仿射变换仅为y轴上的伸缩变换,且难度在高中生理…

H3CNE V7.0 视频教程

构建中小企业网络全套PPT汇总【V7版本】 第1章 计算机网络概述 第2章 OSI参考模型与TCP IP模型 第3章 局域网基本原理 第4章 广域网基本原理 第5章 IP基本原理 第6章 TCP和UDP基本原理 第7章 路由器、交换机及其操作系统介绍 第8章 命令行操作基础 第9章 网络设备文件…

mycat-3-实战篇

1 总结: 1:用的表必须在mycat的配置文件中配置。 2:mycat默认分片策略中,都是针对表的主键,默认是id,如果主键不是id的,请去rule.xml自己复制一份修改 3: 2 注意细讲解 1:schem…

Springboot启动流程分析(四):完成启动流程

目录 一 添加BeanPostProcessors到IOC容器 二 国际化支持 三 初始化监听器的多路播放器 四 刷新容器 五 注册监听器到IOC容器的多播器 六 完成bean的大规模实例化 6.1 大规模实例化bean 6.1.1 连续三层do...while循环作用 6.1.2 FactoryBean是什么?为什么要…

04 YAML kubetnetes世界里的通用语

文章目录1. 前言2. 声明式和命令式是怎么回事?3. 什么是YAML?4. 什么是API对象?4.1 k8s都有哪些资源对象4.2 列出kubectl 命令详细执行过程5. 如何描述 API 对象5.1 命令式5.2 声明式5.2.1 声明式YAML语法详解5.2.1.1 header部分详解5.2.1.2 …

【教学类-19-01】20221127《ABAB式-规律排序-A4竖版2份》(中班)

展示效果: 单人使用样式: 单页打印样式 ​ 背景需求: 中班幼儿需要掌握ABAB规律排序,如下图所示,AB两个元素能外形不同、颜色不同。 ​ ​利用Python Word单元格填色功能,随机生成AB样式,引…

STM32模拟IIC与IIC四种实现数字光强采集模块GY30(标准库与HAL库)

目录 代码实现是的IIC通信,数据采集后在串口显示,方便大家实现二次开发 原件选择 GY-30 数字光强度介绍 BH1750芯片参数 引脚说明 BH1750指令集 接线表设计 通过四种方式实现GY-30数据采集 1.标准库模拟IIC实现GY-30采集并串口1显示 2.标准库IIC…

重构uniapp uni-ui coloerUI项目

重构uniapp uni-ui coloerUI项目这里写自定义目录标题重构uniappuni-uicoloerUI项目起源流程重构uniappuni-uicoloerUI项目 起源 从网上复制了若依移动端的代码,但是对里面的文件夹布局方式和第三方组件库引入方式不甚了解,就想着从头创建一个空白项目,然后一步一…

Linux中设置开机启动执行命令和普通用户配置环境变量开机启动生效

记录:343 场景:在CentOS 7.9操作系统上,开机启动就执行自定义的命令,配置rc.local文件达到需求;在普通用户中配置环境变量开机启动生效,使用profile实现。 版本: 操作系统:CentOS…

01、Docker入门

目录 1、Docker是什么 2、Docker与虚拟化 3、Docker虚拟化的好处 好处一:应用部署方便 好处二:服务器同等配置,性能更优,利用率更高 4、核心概念 5、CentOS7 安装docker(在线方式) 6、镜像 7、Docker容器 8、查看Docker容…

typescript 八叉树的简单实现

查了一些文章,准备自己用typescript写一个简单的八叉树场景管理。 所谓的简单,就是所有元素都是边长为1的立方体。 元素类和树节点类 //元素类,因为都是边长为1的立方体,所以就用cube命名 export class CubeData {public reado…

由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开

一、问题描述 在使用Windows的远程桌面工具连接WindowsServer2016服务器时,无法连接到服务器,并且提示【由于没有远程桌面授权服务器可以提供许可证,远程回来连接已经断开。请跟服务器管理员联系】。 二、解决办法 2.0、前提 Windows Serv…

黑胶歌曲没权限,看我python大展神通,一分钟一个歌单

前言 大家早好、午好、晚好吖 ❤ ~ 人之初,喜白嫖。 大家都喜欢白嫖,我也喜欢,那么今天就来试试怎么白嫖抑云~ 一、需要的准备 1、环境 Python3.6以上 pycharm2019以上 2、模块 requests # 发送请求模块 第三方模块 exec js # 调用JS的…

CocosCreater 教程(下)

1.物理系统 1.1 2D刚体 刚体是组成物理世界的基本对象。 1.2 2D 碰撞组件 目前引擎支持三种不同的碰撞组件: 盒碰撞组件(BoxCollider2D)、圆形碰撞组件(CircleCollider2D) 和 多边形碰撞组件(PolygonCo…

Java中的抽象类和接口

java中的抽象类和接口抽象类什么是抽象类?抽象的使用场景抽象类的案例抽象类的特征、注意事项小结抽象类的应用知识:模版方法模式接口接口概述、特点接口的基本使用:被实现接口与接口的关系:多继承JDK8开始接口新增方法接口的注意…

AtCoder Beginner Contest 277 F. Sorting a Matrix(拓扑排序+虚点)

题目 n*m(2<n,m<1e6,n*m<1e6)的矩阵&#xff0c; 第i行第j列元素a[i][j](0<a[i][j]<n*m) 对于值为0的元素&#xff0c;你可以将其赋值为任意正整数&#xff0c; 不同位置的0元素&#xff0c;可以被赋值成不同的正整数 然后&#xff0c;你可以执行以下操作若…

firefly3399 移植linux5.15.80 - 2022-11-27

需要注意的是&#xff0c;虚拟机需要足够的硬盘空间&#xff0c;不小于15GB&#xff01;&#xff01; 一、内核源码下载 国内镜像地址 git clone https://kernel.source.codeaurora.cn/pub/scm/linux/kernel/git/stable/linux.git/ 基本达到了带宽的最大值。 国外地址&#…

Android使用AudioTrack播放WAV音频文件

目录 1、wav文件格式 2、wav文件解析 3、wav文件播放 QA&#xff1a; 开始播放wav的时候使用了系统的播放器mediaplayer进行播放&#xff0c;但是无奈mediaplayer支持的实在不好。 好些年前自己做过pcm播放使用的是audiotrack&#xff0c;参考&#xff1a;CSDN 其实两者之…