实用程序#

FAPI 和 Matlab 接口实用程序#

FAPI 模块包含各种实用程序,用于处理 PUSCH 数据库模式 (SCF FAPI) 和 cuPHY 之间的接口。

aerial.util.fapi.dmrs_fapi_to_bit_array(dmrs_symb_pos)#

将 DMRS 符号位置十进制值转换为位数组。

参数:

dmrs_symb_pos (np.uint16) – DMRS 符号位置十进制值,如 SCF FAPI 中定义。

返回值:

用于 cuPHY 接口的位数组,指示 DMRS 符号的位置。第一位对应于 OFDM 符号 0。

返回类型:

list

aerial.util.fapi.dmrs_bit_array_to_fapi(x)#

将位数组转换为 DMRS 符号位置十进制值。

参数:

x (list) – 用于 cuPHY 接口的位数组,指示 DMRS 符号的位置。第一位对应于 OFDM 符号 0。

返回值:

DMRS 符号位置十进制值,如 SCF FAPI 中定义。

返回类型:

np.uint16

aerial.util.fapi.dmrs_fapi_to_sym(dmrs_symb_pos)#

将 DMRS 符号位置十进制值转换为 DMRS 符号索引列表。

参数:

dmrs_symb_pos (np.uint16) – DMRS 符号位置十进制值,如 SCF FAPI 中定义。

返回值:

DMRS 符号索引列表。

返回类型:

list

aerial.util.fapi.mac_pdu_to_bit_array(mac_pdu)#

将 MAC PDU 字节转换为位数组。

参数:

mac_pdu (list) – 字节列表,MAC PDU 的内容。

返回值:

与位数组相同的 MAC PDU,即字节转换为位列表。

返回类型:

list

aerial.util.fapi.bit_array_to_mac_pdu(bits)#

将位数组转换为 MAC PDU 字节。

参数:

bits (list) – 作为位数组的 MAC PDU。

返回值:

对应于上述 MAC PDU 的字节列表。

返回类型:

list

数据存储实用程序#

class aerial.util.data.PuschRecord#

实现 PUSCH 数据帧行的列模式。

PuschRecord 包括从数据收集代理收集的字段,以及来自 UL_TTI.request、RxData.indication 和 CRC.indication 的 PUSCH 信道的 SCF FAPI 消息内容。

参数:
  • SFN – 系统帧号。值:0 - 1023。

  • Slot – 时隙号。值:0 - 159。

  • nPDUs – UL_TTI.request 消息中包含的 PDU 数量。

  • RachPresent

    指示 UL_TTI.request 消息中是否包含 RACH PDU。

    • 0:此时隙中没有 RACH。

    • 1:此時隙中有 RACH。

  • nULSCH – UL_TTI.request 消息中包含的 ULSCH PDU 数量。值:0 - 255。

  • nULCCH – UL_TTI.request 消息中包含的 ULCCH PDU 数量。值:0 - 255。

  • nGroup – UL_TTI.request 消息中包含的 UE 组数。值:0 - 8。

  • PDUSize – PDU 控制信息的大小(以字节为单位)。此长度值包括 PDU 类型和 PDU 大小参数所需的 4 个字节。值:0 - 65535。

  • nUE – 此组中的 UE 数量。对于 SU-MIMO,一组仅包含一个 UE。对于 MU-MIMO,一组最多包含 12 个 UE。值:1 - 6,如果 nGroup = 0,则为 None。

  • pduIdx – 此值是由 UL_TTI.request 消息中 nPDU 标识的 PDU 数量的索引。值:0 - 255,如果 nGroup = 0,则为 None。

  • pduBitmap

    指示可选 PDU 存在的位图。

    • 位 0:puschData(指示 PUSCH 上预期有数据)。

    • 位 1:puschUci(指示 PUSCH 上预期有 UCI)。

    • 位 2:puschPtrs(指示包含 PTRS (FR2))。

    • 位 3:dftsOfdm(指示 DFT S-OFDM 传输)。

    • 所有其他位保留。

  • RNTI – 用于在接收 PDU 时标识 UE 的 RNTI。值:1 - 65535。

  • Handle – 在 RxData.indication 和/或 UCI.indication 消息中返回的不透明句柄。

  • BWPSize – 带宽部分大小 [TS38.213 sec12]。分配给 BWP 的连续 PRB 数量。值:1 - 275。

  • BWPStart – 从参考 CRB [TS38.213 sec 12] 开始的带宽部分起始 RB 索引。值:0 - 274。

  • SubcarrierSpacing – 子载波间隔 [TS38.211 sec 4.2]。值:0 - 4。

  • CyclicPrefix

    循环前缀类型 [TS38.211 sec 4.2]。

    • 0:正常

    • 1:扩展

  • targetCodeRate – 目标编码率 [TS38.214 sec 6.1.4.1]。这是每 1024 个编码比特的信息比特数,以 0.1 比特单位表示。

  • qamModOrder

    QAM 调制 [TS38.214 sec 6.1.4.1]。值

    • 如果禁用变换预编码,则为 2,4,6,8。

    • 如果启用变换预编码,则为 1,2,4,6,8。

  • mcsIndex – MCS 索引 [TS38.214, sec 6.1.4.1],应与 DCI 中发送的值匹配。值:0 - 31。

  • mcsTable

    MCS-Table-PUSCH [TS38.214, sec 6.1.4.1]。值

    • 0:notqam256 [TS38.214, 表 5.1.3.1-1]。

    • 1:qam256 [TS38.214, 表 5.1.3.1-2]。

    • 2:qam64LowSE [TS38.214, 表 5.1.3.1-3]。

    • 3:notqam256-withTransformPrecoding [TS38.214, 表 6.1.4.1-1]。

    • 4:qam64LowSE-withTransformPrecoding [TS38.214, 表 6.1.4.1-2]。

  • TransformPrecoding

    指示是否启用或禁用变换预编码 [TS38.214, sec 6.1.4.1] [TS38.211 6.3.1.4]。

    • 0:已启用

    • 1:已禁用

  • dataScramblingId – dataScramblingIdentityPdsch [TS38.211, sec 6.3.1.1]。如果配置了更高层参数 Data-scrambling-Identity 且 RNTI 等于 C-RNTI,则它等于更高层参数 Data-scrambling-Identity,否则 L2 需要将其设置为物理小区 ID。值:0 - 65535。

  • nrOfLayers – 层数 [TS38.211, sec 6.3.1.3]。值:1 - 4。

  • ulDmrsSymbPos – DMRS 符号位置 [TS38.211, sec 6.4.1.1.3 和表 6.4.1.1.3-3 和 6.4.1.1.3-4]。位图占用 14 个 LSB,其中位 0 对应于第一个符号,对于每个位,值 0 表示没有 DMRS,值 1 表示有 DMRS。

  • dmrsConfigType

    UL DMRS 配置类型 [TS38.211, sec 6.4.1.1.3]。

    • 0:类型 1

    • 1:类型 2

  • ulDmrsScramblingId – UL-DMRS-Scrambling-ID [TS38.211, sec 6.4.1.1.1 ]。如果提供且 PUSCH 不是 msg3 PUSCH,否则,L2 应将其设置为物理小区 ID。值:0 - 65535。

  • puschIdentity – PUSCH-ID [TS38.211, sec 6.4.1.1.2 ]。如果提供且 PUSCH 不是 msg3 PUSCH,否则,L2 应将其设置为物理小区 ID。值:0 - 1007。

  • SCID – DMRS 序列初始化 [TS38.211, sec 6.4.1.1.1]。应与 DCI 0_1 中发送的内容匹配,否则设置为 0。值:0 - 1。

  • numDmrsCdmGrpsNoData – 没有数据的 DM-RS CDM 组数 [TS38.212 sec 7.3.1.1]。值:1 - 3。

  • dmrsPorts

    DMRS 端口。[TS38.212 7.3.1.1.2] 提供了 DCI 0-1 内容和 DMRS 端口之间的描述。位图占用 11 个 LSB,其中位 0 对应于天线端口 1000,位 11 对应于天线端口 1011,对于每个位

    • 0:未使用 DMRS 端口。

    • 1:已使用 DMRS 端口。

  • resourceAlloc

    资源分配类型 [TS38.214, sec 6.1.2.2]。

    • 0:类型 0。

    • 1:类型 1。

  • rbBitmap – 对于资源分配类型 0。[TS38.214, sec 6.1.2.2.1] [TS 38.212, 7.3.1.1.2] RB 位图,273 向上舍入为 32 的倍数。此位图以 VRB 为单位。位图的字节 0 的 LSB 表示 BWP 的第一个 RB。每个元素都是 numpy.uint8 类型。

  • rbStart – 对于资源分配类型 1。[TS38.214, sec 6.1.2.2.2]。此 PUSCH 的 BWP 内的起始资源块。值:0 - 274。

  • rbSize – 对于资源分配类型 1。[TS38.214, sec 6.1.2.2.2]。此 PUSCH 内的资源块数。值:1 - 275。

  • VRBtoPRBMapping

    VRB 到 PRB 映射 [TS38.211, sec 6.3.1.7]。

    • 0:非交织。

    • 1:交织。

  • FrequencyHopping

    对于资源分配类型 1,指示是否启用频率跳频。[TS38.212, sec 7.3.1.1] [TS38.214, sec 6.3]。

    • 0:已禁用。

    • 1:已启用。

  • txDirectCurrentLocation – 载波的上行链路 Tx 直流位置。仅使用此字段值范围内 0 到 3299 之间的值,这些值指示载波内对应于相应上行链路 BWP 的 numerology 的子载波索引,值 3300 指示“载波外部”,值 3301 指示“载波内未确定的位置”。[TS38.331, UplinkTxDirectCurrentBWP IE]。值:0 - 4095。

  • uplinkFrequencyShift7p5khz

    指示是否存在 7.5 kHz 频移。[TS38.331, UplinkTxDirectCurrentBWP IE]。

    • 0:False。

    • 1:True。

  • StartSymbolIndex – 从时隙开始的 PUSCH 映射的起始符号索引 S。[TS38.214, 表 6.1.2.1-1]。值:0 - 13。

  • NrOfSymbols – PUSCH 在符号中的持续时间 L。[TS38.214, 表 6.1.2.1-1]。值:1 - 14。

  • puschData – 请参阅 SCF FAPI 10.02,表 3-47。 dict{‘cbPresentAndPosition’: array([], dtype=int32), ‘harqProcessID’: np.uint8, ‘newDataIndicator’: np.uint8, ‘numCb’: np.uint8, ‘rvIndex’: np.uint8, ‘TBSize’: np.uint32}

  • puschUci – 请参阅 SCF FAPI 10.02,表 3-48。

  • puschPtrs – 请参阅 SCF FAPI 10.02,表 3-49。

  • dftsOfdm – 请参阅 SCF FAPI 10.02,表 3-50。

  • Beamforming – 请参阅 SCF FAPI 10.02,表 3-53。

  • HarqID – HARQ 进程 ID。值:0 - 15。

  • PDULen – PDU 的长度(以字节为单位)。长度为 0 表示 CRC 或解码错误。

  • UL_CQI – SNR。

  • TimingAdvance – 定时提前。

  • RSSI – RSSI。有关 RSSI 定义,请参阅 SCF FAPI 10.02 表 3-16。

  • macPdu – MAC PDU 的内容。每个元素都是 numpy.uint8 类型。

  • TbCrcStatus

    指示 TB 数据的 CRC 结果。每个元素都是 numpy.uint8 类型。

    • 0:通过。

    • 1:失败。

  • NumCb – 如果未使用 CBG,则此参数可以设置为零。否则,TB 中的 CB 数量。值:0 - 65535。

  • CbCrcStatus

    字节打包数组,其中每个位指示 CB 数据的 CRC 结果。每个元素都是 numpy.uint8 类型。

    • 0:通过。

    • 1:失败。

    • 如果 NumCb = 0,则为 None。

  • rx_iq_data_filename – 接收到的 OFDM IQ 数据文件的文件名。此文件包含作为频率 x 时间 x 天线 numpy 数组的复数 OFDM 时隙数据。

  • user_data_filename – 用户数据文件的文件名。此文件可能包含例如地面实况数据。

  • errInd – 自由格式错误指示消息。

注释

PDULen 字段为 32 位,而 SCF FAPI 10.02 错误地使用了 16 位。使用 32 位允许 MAC PDU 大于 65535 字节。

static from_series(series)#

从 Pandas Series 条目(例如 DataFrame 行)创建 PuschRecord。

参数:

series (pandas.Series) – 输入数据帧行。

返回值:

从给定的 Pandas Series 构建的 PUSCH 记录。

返回类型:

PuschRecord

static columns()#

返回 PuschRecord 的字段名称。

返回类型:

Tuple

aerial.util.data.save_pickle(data, filename, s3=None)#

将数据保存在本地或 S3 上的 pickle 文件中。

参数:
  • data (np.ndarraydict) – 要保存的数据。

  • filename (str) – 要使用的文件的完整路径。

  • s3 (s3fs.S3FileSystem) – 要使用的 S3 文件系统。对于本地文件系统,设置为 None

返回类型:

None

aerial.util.data.load_pickle(filename, s3=None)#

从 pickle 文件加载数据,可以是本地文件或 S3 上的文件。

参数:
  • filename (str) – 要使用的文件的完整路径。

  • s3 (s3fs.S3FileSystem) – 要使用的 S3 文件系统。对于本地文件系统,设置为 None

返回值:

加载的数据。

返回类型:

np.ndarray 或 dict

CUDA 实用程序#

aerial.util.cuda.get_cuda_stream()#

返回 CUDA 流。

返回值:

新的 CUDA 流。

返回类型:

cudart.cudaStream_t

aerial.util.cuda.check_cuda_errors(result)#

检查 CUDA 错误。

参数:

result (cudart.cudaError_t) – CUDA 错误值。

返回类型:

Any