本文完结后,关于RFSoC的配置的API函数部分就全部介绍完毕,后续有空将更新介绍简单的射频收发回环示例工程,不定时更新,敬请期待。
函数原型
u32 XRFdc_SetInterpolationFactor(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 InterpolationFactor);
参数
带标注的只有GEN 3代的有该参数配置。
描述
此 API 函数为请求的 RF-DAC 设置插值因子,并根据插值因子更新 FIFO 读取宽度。插值的动态变化对块吞吐量有影响。 可以动态更改 AXI4-Stream 时钟速率以适应吞吐量的变化。 在非 MTS 模式下,推荐的程序是关闭 FIFO(Xrfdc_setupfifo),更改时钟速率(Xrfdc_SetfabClkOutDiv),清除 FIFO 中断,然后重新启动 FIFO(Xrfdc_SetupFifo)。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetFabWrVldWords(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 FabricWrVldWords);
参数
说明
此 API 函数通过写入相应的寄存器来设置请求的 RF-DAC 的写入结构数据速率。此 API 函数仅适用于 RF-DAC。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetDecoderMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 DecoderMode);
参数
说明
这个API函数将解码器模式写入相关的寄存器中。驱动器结构被用新的值进行更新。这个API函数只用于RF-DACs。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetInvSincFIR(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u16 Mode);
参数
说明
该API函数用于启用或禁用反Sinc滤波器。这个API函数只用于RF-DAC。模式2仅适用于第3代设备。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetDACVOP(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 uACurrent);
参数
说明
VOP μA电流用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetDACCompMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Enable)
参数
说明
该模式用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetDataPathMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Mode);
参数
Macro | Description |
---|---|
XRFDC_DATAPATH_MODE_DUC_0_FSDIVTWO | Full Bandwidth FS 7GSPS |
XRFDC_DATAPATH_MODE_DUC_0_FSDIVFOUR | Half Bandwidth, Low Pass IMR, FS 10GSPS |
XRFDC_DATAPATH_MODE_FSDIVFOUR_FSDIVTWO | Half Bandwidth, High Pass IMR, FS 10GSPS |
XRFDC_DATAPATH_MODE_NODUC_0_FSDIVTWO | Full Bandwidth, Bypass Datapath |
说明
该模式用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetIMRPassMode(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Mode)
参数
Macro | Description |
---|---|
XRFDC_DAC_IMR_MODE_LOWPASS | Low pass filter |
XRFDC_DAC_IMR_MODE_HIGHPASS | High pass filter |
说明
该模式用于更新相应的块级寄存器。这是一个仅适用于RF-DAC的API功能。只适用于第三代设备。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_SetDACDataScaler(XRFdc *InstancePtr, u32 Tile_Id, u32 Block_Id, u32 Enable);
参数
说明
该API函数启用/禁用数据缩放器。如果数据缩放器被启用,数据路径的MSB被保留,以防止溢出,代价是SN值略有下降。
数据路径的MSB被保留,以防止溢出,代价是SNR略有下降。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
所有的中断处理函数都在xrfdc_intr.c文件中实现。这些函数的原型是通过xrfdc.h提供的。
函数原型
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
函数原型
u32 XRFdc_IntrDisable(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 IntrMask)
参数
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
void XRFdc_SetStatusHandler(XRFdc *InstancePtr, void *CallBackRefPtr, XRFdc_StatusHandler FunctionPtr)
参数
XRFdc *InstancePtr: 指向驱动实例的指针。
void *CallBackRefPtr: 当回调函数被调用时传递回来的上层回调引用。
XRFdc_StatusHandler FunctionPtr。指向回调函数的指针。
说明
这个函数设置了状态回调函数,即状态处理程序,当驱动程序遇到必须报告给上层软件的情况时,会调用这个函数。处理程序在一个中断上下文中执行,以减少处理量。
函数原型
u32 XRFdc_IntrClr(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 IntrMask);
参数
说明
该函数通过将IntrMask作为输入并写入相应的寄存器位来清除相应转换器的中断。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE
函数原型
u32 XRFdc_GetIntrStatus(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 *IntrStsPtr)
参数
说明
这个函数通过掩码返回中断的状态。有效掩码的描述见XRFdc_IntrEnable的API中描述。
函数原型
u32 XRFdc_IntrHandler(u32 Vector, void *XRFdcPtr)
参数
说明
该函数由驱动器内部使用。这是Zynq® UltraScale+™射频数据转换器驱动器的主中断处理程序。这个例程必须使用OS/BSP特定的API连接到一个中断控制器。它清除了中断源并打印了中断的原因。
返回值
METAL_IRQ_HANDLED (通知Libmetal库,IRQ被处理)。
函数原型
u32 XRFdc_GetEnabledInterrupts(XRFdc *InstancePtr, u32 Type, u32 Tile_Id, u32 Block_Id, u32 *IntrMask)
参数
描述
这个API函数用一个给定块的启用的中断来填充IntrMask。
返回值
XRFDC_SUCCESS
XRFDC_FAILURE