实用程序#
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 记录。
- 返回类型:
- static columns()#
返回 PuschRecord 的字段名称。
- 返回类型:
Tuple
- aerial.util.data.save_pickle(data, filename, s3=None)#
将数据保存在本地或 S3 上的 pickle 文件中。
- 参数:
data (np.ndarray 或 dict) – 要保存的数据。
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