资讯详情

IP - 射频数据转换器 -03- API使用指南 - Libmetal与结构体说明

写在前面

本文介绍了RFSoC RF 数据转换器 RFdc 驱动程序的结构部分,让用户更清楚地了解RF数据转换器相关配置操作。

概述

RFSoC RF 数据转换器 RFdc 驱动程序 API 函数。 裸机和 Linux 使用相同的驱动程序。 两个软件平台的驱动程序都在运行 Xilinx 提供的 libmetal 软件层上。 驱动程序由以下文件组成:

  • API
    • xrfdc.c:用户接口API 在本文件中实现函数。
    • xrfdc.h:本文件提供了用户界面API 原型。 该文件提供了驱动程序实例结构的原型以及跨 API 使用的所有其他结构。实现实用程序内联函数访问驱动程序和文件 IP 各种数据。
    • xrfdc_mts.c:多片同步API函数在此文件中实现。
    • xrfdc_mixer.c:混频器API在本文件中实现函数。
    • xrfdc_clock.c:时钟相关的API在本文件中实现函数。
    • xrfdc_mb.c:多频段API在本文件中实现函数。
    • xrfdc_ap.c:模拟路径API在本文件中实现函数。
    • xrfdc_dp.c:数字路径API在本文件中实现函数。
    • xrfdc_sinit.c:初始化API在本文件中实现函数。
  • 硬件寄存器映射
    • xrfdc_hw.h:本文件提供了硬件寄存器映射的定义。 该文件还为 Zynq UltraScale RFSoC 各种相关字段的寄存器接口提供掩码。
  • 中断处理
    • xrfdc_intr.c:来自实现处理 IP 各种中断和错误的内核函数。

image-20220315111429006

关于 Libmetal

Libmetal 是 Xilinx 开发的开源软件堆栈提供通用户 API 在以下操作环境中,访问设备、处理设备中断请求内存:

  • Linux 用户空间(基于内核中的用户空间) IO 和虚拟功能 IO 支持) )
  • RTOS(是否有虚拟内存)
  • 裸机环境 libmetal I/O 区域抽象提供内存映射I/O 和共享内存区域的访问。 这包括阅读和写入具有排序约束的内存原语,以及在支持虚拟内存的系统中转换物理和虚拟地址的能力。

数据结构

驱动程序中使用的所有数据结构 xrfdc.h 和 xrfdc_mts.h 文件中定义

struct XRFdc

XRFdc_Config RFdc_Config; u32 IsReady; u32 ADC4GSPS; metal_phys_addr_t BaseAddr; struct metal_io_region *io; struct metal_device *device; XRFdc_DAC_Tile DAC_Tile[4]; XRFdc_ADC_Tile ADC_Tile[4]; XRFds_StatusHandler StatusHandler; void *CallBackRef; u8 UpdateMixerScale;   

  • : 驱动程序结构配置。
  • : 该标志已准备好指示驱动程序。
  • : 该标志用于指示 RF-ADC 是否为 4GSPS。
  • : 基址。
  • : Libmetal IO 结构体。
  • struct metal_device *device : Libmetal device结构体。
  • : 四片的 RF-DAC 片结构。
  • : 四片的 RF-ADC 片结构。
  • : 事件处理函数。
  • *void CallBackRef : 事件处理程序回调参考。
  • :设置为 1 覆盖混频器的尺寸。

struct XRFdc_Config

该结构使用内部驱动程序(metal_phys_addr_t 表示无符号长整数)。

u32 DeviceId; metal_phys_addr_t BaseAddr; u32 ADCType; u32 MasterADCTile; u32 MasterDACTile; u32 ADCSysRefSource; u32 DACSysRefSource; XRFdc_DACTile_Config DACTile_Config[4]; XRFdc_ADCTile_Config ADCTile_Config[4];  

  • : Quad RF-ADC 部分或 Dual RF-ADC 部分。
  • : 对应于C_ADC_Master IP 参数。
  • : 对应于C_DAC_Master IP 参数。
  • : 对应于 C_ADC_Sysref_Source IP 参数。
  • : 对应于 C_DAC_Sysref_Source IP 参数。

struct XRFdc_PLL_Settings

u32 Enabled;
double RefClkFreq;
double SampleRate;
u32 RefClkDivider;
u32 FeedbackDivider;
u32 OutputDivider;
u32 FractionalMode;
u64 FractionalData;
u32 FractWidth;

  • : 指示 PLL 是启用 (1) 还是禁用 (0)。
  • : 参考时钟频率(MHz)。
  • : 采样率 (GHz)。
  • : 参考时钟分频器。
  • : 反馈分频器。
  • : 输出分频器。
  • :
  • : 反馈分频器的小数部分。
  • : 小数数据宽度。

struct XRFdc_QMC_Settings

u32 EnablePhase;
u32 EnableGain;
double GainCorrectionFactor;
double PhaseCorrectionFactor;
s32 OffsetCorrectionFactor;
u32 EventSource;

  • : 指示相位是启用(1) 还是禁用(0)。
  • : 指示增益是启用 (1) 还是禁用 (0)。
  • : 增益校正因子。 范围:0 到 2.0(不包括)。
  • :相位校正因子。 范围:+/- 26.5 度(不包括)。
  • : 偏移校正因子是向采样信号添加一个固定的 LSB 值。
  • : QMC 设置的事件源。 XRFDC_EVNT_SRC_* 表示有效值。

struct XRFdc_CoarseDelay_Settings

u32 CoarseDelay;
u32 EventSource;

  • :采样数量的粗延迟。 范围:Gen 1/Gen 2 设备为 0 到 7,Gen 3 设备为 0 到 40。

  • :粗略延迟设置的事件源。 XRFDC_EVNT_SRC_* 表示有效值。

struct XRFdc_Mixer_Settings

double Freq;
double PhaseOffset;
u32 EventSource;
u32 CoarseMixFreq;
u32 MixerMode;
u8 FineMixerScale;
u8 MixerType;

  • : NCO 频率。 范围:-Fs 至 Fs (MHz)。
  • : NCO 相位偏移。 范围:-180 到 180(不包括)。
  • : 混频器设置的事件源。 XRFDC_EVNT_SRC_* 表示有效值。

:精细或粗略混频器的混合器模式。XRFDC_MIXER_MODE_* 表示有效值。

:NCO输出比例。 XRFDC_MIXER_SCALE_* 表示有效值。

:Mixer Type表示粗调或细调。 XRFDC_MIXER_TYPE_* 代表有效值。

struct XRFdc_Threshold_Settings

此结构用于设置或获取 RF-ADC 阈值设置。

u32 UpdateThreshold;
u32 ThresholdMode[2];
u32 ThresholdAvgVal[2];
u32 ThresholdUnderVal[2];
u32 ThresholdOverVal[2];

  • u32 UpdateThreshold: 选择要更新的阈值。 XRFDC_UPDATE_THRESHOLD_* 表示有效值。

  • : [ 0 ] 用于阈值 0, [ 1 ] 用于阈值 1。(下同) 范围:0 到 3(0-OFF、1-sticky-over、2-sticky-under 和 3-hysteresis)

  • : 阈值平均值。 [ 0 ] 用于阈值 0,[ 1 ] 用于阈值 1。

  • : 低于阈值。

  • : 超过阈值。

驱动中的Threshold0和Threshold1分别对应IP中的Threshold1和Threshold2。

struct XRFdc_TileStatus

此结构体供内部驱动程序使用。

u32 IsEnabled;
u32 TileState;
u8  BlockStatusMask;
u32 PowerUpState;
u32 PLLState;

struct XRFdc_IPStatus

此结构体用于获取 IP 内核状态。

XRFdc_TileStatus DACTileStatus[4];
XRFdc_TileStatus ADCTileStatus[4];
u32 State;

  • : 四个 RF-DAC 片的片状态
  • **XRFdc_TileStatus ADCTileStatus[4] **: 四个 RF-ADC 片的片状态
  • : 当前不支持。

struct XRFdc_BlockStatus

此结构用于获取 RF-DAC 或 RF-ADC 的状态。

double SamplingFreq;
u32 AnalogDataPathStatus;
u32 DigitalDataPathStatus;
u8 DataPathClocksStatus;
u8 IsFIFOFlagsEnabled;
u8 IsFIFOFlagsAsserted;

  • : 采样频率。
  • :
    • RF-ADC:
      • bit[0] :转换器启用/禁用。
    • RF-DAC :
      • bit[3:0] 反正弦启用/禁用。
      • bit [7:4] 解码器模式。
  • :
    • RF-ADC:
      • bit [3:0] FIFO 状态(启用/禁用)。
      • bit [7:4] 抽取因子。
      • bit [11:8] 混频模式。
    • RF-DAC
      • bit [3:0] FIFO 状态。
      • bit [7:4] 插值因子。
      • bit [11:8] Adder状态。
      • bit [15:12] 混频模式。
  • : 指示是否启用了所有必需的数据路径时钟; 如果启用所有时钟,则为 1,否则为 0。
  • : FIFO 标志启用掩码; 1 启用,否则为 0。
  • : FIFO 标志断言掩码; 1 启用,否则为 0。

struct XRFdc_DACBlock_AnalogDataPath_Config

u32 BlockAvailable;
u32 InvSyncEnable;
u32 MixMode;
u32 DecoderMode;

  • : 对应于 C_DAC_Slice{xy}_Enable IP 参数。
  • : 对应于 C_DAC_Invsinc_Ctrl{xy} IP 参数。
  • : 对应于 C_DAC_Mixer_Mode{xy} IP 参数。
  • : 对应于 C_DAC_Decoder_Mode{xy} IP 参数。

struct XRFdc_DACBlock_DigitalDataPath_Config

  • :对应于 C_DAC_Data_Type{xy} IP 参数。
  • :对应于C_DAC_Data_Width{xy} IP 参数。
  • : 对应于 C_DAC_Interpolation_Mode{xy} IP参数。
  • : 对应于 C_DAC_Fifo{xy} IP 参数。
  • : 对应于 C_DAC_Adder{xy} IP 参数。
  • : 对应于 C_DAC_Mixer_Type{xy} IP 参数。

struct XRFdc_DACTile_Config

u32 Enable;
u32 PLLEnable;
double SamplingRate;
double RefClkFreq;
double FabClkFreq;
u32 FeedbackDiv;
u32 OutputDiv;
u32 RefClkDiv;
u32 MultibandConfig;
XRFdc_DACBlock_AnalogDataPath_Config DACBlock_Analog_Config[4];
XRFdc_DACBlock_DigitalDataPath_Config DACBlock_Digital_Config[4];

  • : 对应于 C_DAC{x}_Enable IP 参数。
  • : 对应于 C_DAC{x}_PLL_Enable IP 参数。
  • : 对应于 the C_DAC{x}_Sampling_Rate IP 参数。
  • : 对应于 the C_DAC{x}_RefClk_Freq IP 参数。
  • : 对应于 C_DAC{x}_FabClk_Freq IP 参数。
  • : 对应于 C_DAC{x}_FBDIV IP 参数。
  • : 对应于 C_DAC{x}_OutDiv IP 参数。
  • : 对应于 C_DAC{x}Refclk_Div IP 参数。
  • : 对应于 C_DAC{x}_Multiband IP 参数。

struct XRFdc_DACBlock_AnalogDataPath

u32 Enabled;
u32 MixedMode;
double TerminationVoltage;
double OutputCurrent;
u32 InverseSincFilterEnable;
u32 DecoderMode;
void *FuncHandler;
u32 NyquistZone;
u8 AnalogPathEnabled;
u8 AnalogPathAvailable;
XRFdc_QMC_Settings QMC_Settings;
XRFdc_CoarseDelay_Settings CoarseDelay_Settings;

struct XRFdc_DACBlock_DigitalDataPath

u32 DataType;
u32 DataWidth;
int ConnectedIData;
int ConnectedQData;
u32 InterpolationFactor;
u8 DigitalPathEnabled;
u8 DigitalPathAvailable;
XRFdc_Mixer_Settings Mixer_Settings;

  • : 数字输入数据类型
  • : Data width (samples per AXI4-Stream word).
  • : Data converter connected for I datapath. Valid values are 0-3 and -1.
  • : Data converter connected for Q datapath. Valid values are 0-3 and -1.
  • : Interpolation factor.
  • : Flag to indicate DataPath is enabled(1) or disabled(0).
  • : Flag to indicate DigitalPath is available or not.
  • : Mixer Settings structure

struct XRFdc_DAC_Tile

u32 TileBaseAddr;
u32 NumOfDACBlocks;
XRFdc_PLL_Settings PLL_Settings;
u8 MultibandConfig;
XRFdc_DACBlock_AnalogDataPath DACBlock_Analog_Datapath[4];
XRFdc_DACBlock_DigitalDataPath DACBlock_Digital_Datapath[4];

  • : Tile 基地址。
  • : 启用的RF-DAC 数量。
  • : PLL 设置结构体。
  • : RF-DAC 块的多频段配置。
  • : 四个 RF-DAC 的 DACBlock_AnalogDataPath 结构体。
  • **XRFdc_DACBlock_DigitalDataPath DACBlock_Digital_Datapath[4] ** : 四个RF-DAC 的DACBlock_DigitalDataPath 结构体。

struct XRFdc_ADCBlock_AnalogDataPath_Config

u32 BlockAvailable;
u32 MixMode;  

  • : 对应于 C_ADC_Slice{xy}_Enable IP 参数。
  • : 对应于 C_ADC_Mixer_Mode{xy} IP 参数。

struct XRFdc_ADCBlock_DigitalDataPath_Config

u32 DataType;
u32 DataWidth;
u32 DecimationMode;
u32 FifoEnable;
u32 MixerType;

  • : 对应于 C_ADC_Data_Type{xy} IP 参数。
  • : 对应于 C_ADC_Data_Width{xy} IP 参数。
  • : 对应于 C_ADC_Decimation_Mode{xy} IP 参数。
  • : 对应于 C_ADC_Fifo{xy} IP 参数。
  • : 对应于 C_ADC_Mixer_Type{xy} IP 参数。

struct XRFdc_ADCTile_Config

u32 Enable;
u32 PLLEnable;
double SamplingRate
double RefClkFreq;
double FabClkFreq;
u32 FeedbackDiv;
u32 OutputDiv;
u32 RefClkDiv;
u32 MultibandConfig;
XRFdc_ADCBlock_AnalogDataPath_Config ADCBlock_AnalogConfig[4];
XRFdc_ADCBlock_DigitalDataPath_Config ADCBlock_Digital_Config[4]; 

  • : 对应于 C_ADC{x}_Enable IP 参数。
  • : 对应于 C_ADC{x}_PLL_Enable IP 参数。
  • : 对应于 C_ADC{x}_Sampling_Rate IP 参数。
  • : 对应于 C_ADC{x}_RefClk_Freq IP 参数。
  • : 对应于 C_ADC{x}_FabClk_Freq IP 参数。
  • : 对应于 C_ADC{x}_FBDIV IP 参数。
  • : 对应于 C_ADC{x}_OutDiv IP 参数。
  • : 对应于 C_ADC{x}Refclk_Div IP 参数。
  • : 对应于 C_ADC{x}_Multiband IP 参数。
  • :指示AnalogPath 已启用(1) 或禁用(0) 的标志。
  • :指示AnalogPath 是否可用的标志。
  • :QMC 设置结构体。
  • :CoarseDelay 设置结构体。

struct XRFdc_ADCBlock_AnalogDataPath

u32 Enabled;
XRFdc_QMC_Settings QMC_Settings;
XRFdc_CoarseDelay_Settings CoarseDelay_Settings;
XRFdc_Threshold_Settings Threshold_Settings;
u32 NyquistZone;
u8 CalibrationMode;
u8 AnalogPathEnabled;
u8 AnalogPathAvailable;  

  • : RF-ADC 启用 (1) 或禁用 (0)。
  • : QMC 设置结构体。
  • : 粗略延迟设置结构体。
  • : 阈值设置结构体。
  • : 奈奎斯特区。
  • : 校准模式,由 XRFdc_SetCalibrationMode API 函数设置。
  • : 指示AnalogPath 已启用(1) 或禁用(0) 的标志。
  • : 指示AnalogPath 是否可用的标志。

struct XRFdc_ADCBlock_DigitalDataPath

u32 DataType;
u32 DataWidth;
u32 DecimationFactor;
int ConnectedIData;
int ConnectedQData;
u8 DigitalPathEnabled;
u8 DigitalPathAvailable;
XRFdc_Mixer_Settings Mixer_Settings;

  • : 模拟输入数据类型。
  • : 数据宽度(每个 AXI4-Stream 字的样本)。
  • : 抽取因子。
  • : 为 I 数据路径连接的数据转换器。 有效值为 0-3 和 -1。
  • : 为Q 数据路径连接的数据转换器。 有效值为 0-3 和 -1。
  • : 指示DataPath 已启用(1) 或禁用(0) 的标志。
  • : 指示DigitalPath 是否可用的标志。
  • : 混频器设置结构体。

struct XRFdc_ADC_Tile

u32 TileBaseAddr;
u32 NumOfADCBlocks;
XRFdc_PLL_Settings PLL_Settings;
u8 MultibandConfig;
XRFdc_ADCBlock_AnalogDataPath ADCBlock_Analog_Datapath[4];
XRFdc_ADCBlock_DigitalDataPath ADCBlock_Digital_Datapath[4];

  • : Tile 基地址。
  • : 启用的RF-ADC 数量。
  • : PLL 设置结构体。
  • : ADC Tile 的多频段配置。
  • : 四个 RF-ADC 的 ADCBlock_AnalogDataPath 结构体。
  • :四个 RF-ADC 的 ADCBlock_DigitalDataPath 结构体。

struct XRFdc_MultiConverter_Sync_Config

该结构用于配置 MTS 算法。 可以在代码中配置指示文件。

u32 RefTile;
u32 Tiles;
int Target_Latency;
int Offset[4];
int Latency[4];
int Marker_Delay;
int SysRef_Enable;
XRFdc_MTS_DTC_Settings DTC_Set_PLL;
XRFdc_MTS_DTC_Settings DTC_Set_T1;

  • :参考片。

  • : 指示要对齐的图块的位掩码。 BitX 为 TileX 启用 MTS。 Tile0 必须始终启用。

  • : 设置目标相对延迟。 这需要为多设备对齐或确定性延迟用例设置。 单机对齐无需设置。

  • : 状态 - 指示接口数据为实现对齐而延迟的值,每个图块。

  • : 状态 - 表示每个图块的测量相对延迟值。

  • : 标记延迟供内部使用。

  • : Set to 1 (default) to keep SYSREF capture enabled after MTS runs. Set to 0 to disable SYSREF capture.

struct XRFdc_MTS_Marker

此结构供内部驱动程序使用。 没有用户可配置的字段。

  u32 Count[4];
  u32 Loc[4];  

struct XRFdc_MTS_DTC_Settings

此结构供内部驱动程序使用。 没有用户可配置的字段。

u32 RefTile;
u32 IsPLL;
int Target[4];
int Scan_Mode;
int DTC_Code[4];
int Num_Windows[4];
int Max_Gap[4];
int Min_Gap[4];
int Max_Overlap[4];

struct XRFdc_Calibration_Coefficients

通用校准系数结构。

u32 Coeff0;
u32 Coeff1;
u32 Coeff2;
u32 Coeff3;
u32 Coeff4;
u32 Coeff5;
u32 Coeff6;
u32 Coeff7;

• u32 Coeff{N}: 第 N 个系数 ,注意:Coeff{4-7} 在斩波处于活动状态时适用,并且仅与时间偏移校准块相关。

struct XRFdc_Cal_Freeze_Settings

通用校准冻结设置结构体

u32 CalFrozen;
u32 DisableFreezePin;
u32 FreezeCalibration;

  • : 指示校准已冻结的状态。
  • : 禁用校准冻结引脚。
  • : 使用冻结端口冻结校准。

struct XRFdc_Tile_Clock_Settings (Gen 3)

此结构用于设置或获取内部 tile 时钟设置。 仅供参考; 你不需要设置它。

u8 SourceType;
u8 SourceTile;
u8 PLLEnable;
double RefClkFreq;
double SampleRate;
u8 DivisionFactor;
u8 Delay;
u8 DistributedClock;

  • : 源片类型。 RF-ADC 或 RF-DAC; RF-ADC 为 0,RF-DAC 为 1。
  • : 源片的 RF-ADC/RF-DAC 块编号。 有效值为 0-3。
  • : 启用内部 PLL。
  • : 瓦片的输入参考时钟。
  • : 瓦片的采样率。
  • : 时钟分频器(如果绕过 PLL)。
  • : 延迟源时钟到 tile 的延迟。
  • : 分配此图块时钟的选项。 有效值为 0(无)、1(接收到的时钟)和 2(来自内部分频器的全速率时钟)。

struct XRFdc_Distribution_Info (Gen 3)

该结构包含时钟分布状态/信息参数。

u8 MaxDelay;
u8 MinDelay;
u8 IsDelayBalanced;
u8 Source;
u8 UpperBound;
u8 LowerBound;
XRFdc_Tile_Clock_Settings ClkSettings[2][4];  

  • : 这是从源图块到分布中最远图块的最大延迟。
  • : 这是从源图块到分布中最远图块的最小延迟。
  • : 这表明分布是否延迟平衡。 值为 0(不平衡)和 1(平衡)。
  • : 使用包 ID 索引的分发源片。
  • : 这是最靠近 ADC 0 一侧的分布边缘的瓦片。这是索引的包 ID。
  • : 这是最靠近 DAC 3 一侧分布边缘的图块。这是索引的包 ID。
  • : 包含有关分布中给定图块的信息的结构,数组索引为 [Type][TileId]。 无需填充即可设置时钟分布。

struct XRFdc_Distribution_Settings (Gen 3)

此结构用于设置时钟分布设置。

u32 SourceTileId;
u32 SourceType;
u32 EdgeTileIds[2];
u32 EdgeTypes[2];
double DistRefClkFreq;
u32 DistributedClock;
double SampleRates[2][4]; /*[Type][Tile] e.g. ClkSettings[XRFDC_ADC_TILE] [1] for ADC1*/
u32 ShutdownMode;
XRFdc_Distribution_Info Info;

  • : 源 tile 的 RF-ADC/RF-DAC tile 编号。 有效值为 0-3。
  • : 源切片类型。 RF-ADC 或 RF-DAC; RF-ADC 为 0,RF-DAC 为 1。
  • : 每个边缘瓦片的瓦片ID(源瓦片南北的最后瓦片)。 索引对应于 EdgeTypes 参数。 RF-ADC/RF-DAC 瓦数。 有效值为 0-3。
  • : 每个边缘瓦片的类型(源瓦片南北的最后瓦片)。 索引对应EdgeTileIds参数。RF-ADC或RF-DAC; RF-ADC 为 0,RF-DAC 为 1。
  • : 源块的输入参考时钟。
  • : 源块转发的时钟。 有效值为 0(无)、1(接收到的时钟)和 2(来自内部分频器的全速率时钟)。
  • : 任何给定片的采样率。 该数组被索引为 [Type] [TileId]。 仅需要填充分布中包含的片。
  • : 这使用户可以控制是否启动分发中的片。 有效值为 0(启动分发)和 1(保持分发关闭)。
  • : 包含有关分布信息的结构,不需要填充它来设置时钟分布。

struct XRFdc_Distribution_System_Settings (Gen 3)

此结构用于获取整个系统的时钟分配设置。 分布的数量等于源块(配置为采用外部时钟的块)的数量。

XRFdc_Distribution_Settings Distributions[8];  
  • : 这是一个分布结构数组,将填充从第零个元素开始的所有有效分布。 没有有效分布的任何剩余结构都将元素的 SourceTileId 参数设置为 XRFDC_CLK_DST_INVALID (0xFF)

struct XRFdc_DSA_Settings (Gen 3)

u32 DisableRTS; /*Disables RTS control of DSA attenuation*/
float Attenuation; /*Attenuation*/

  • : 这将禁用实时信号设置衰减。
  • : ES1 硅的衰减 0 - 11 dB。生产硅的衰减 0 - 27 dB。

struct XRFdc_Pwr_Mode_Settings (Gen 3)

此结构包含电源模式设置。

u32 DisableIPControl; /*Disables IP RTS control of the power mode*/
u32 PwrMode; /*The power mode*/

  • : 禁用实时信号设置电源模式:0 表示启用 RTS 控制,1 表示禁用 RTS 控制。
  • : 0 为断电,1 为上电。

reference

  1. PG269

标签: 贴片恢复二极管es1jsod

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司