[⑧5G NR]: PBCH payload生成

本篇博客记录下5G PBCH信道中payload数据的生成方式。PBCH payload一共32个比特,基本结构如下图:

根据SSB PDU中bchPayloadFlag的值有三种方式得到PBCH payload。

  1. bchPayloadFlag = 0:全部32比特由MAC层提供。
  2. bchPayloadFlag = 1:MAC层提供部分24比特payload,PHY层添加剩余部分(8比特)。

    PHY根据SFN,kssbk_{ssb}kssb以及SSB index来生成最后的8位payload。

    由上层传递的接口参数定义:

half frame bit的值由所在Slot值以及μ\muμ(SubcarrierSpacing)确定:

if Slot≥10∗2μ−1Slot \ge 10 * 2^{\mu-1}Slot102μ1nhf=1n_{hf} = 1nhf=1,if Slot<10∗2μ−1Slot < 10 * 2^{\mu-1}Slot<102μ1nhf=0n_{hf} = 0nhf=0

  1. bchPayloadFlag = 2:PHY层生成全部32比特payload,剩余接口参数定义如下:

最后32比特的payload还要根据协议38.212 7.1.1 Table7.1.1-1进行交织。

### PBCH接收原理及实现方法 #### 1. **PBCH信道接收原理** PBCH信道是5G NR中用于传输MIB(Master Information Block)信息的物理信道,其接收过程主要涉及多个步骤以确保数据的完整性和可靠性。PBCH接收的基本原理包括以下关键环节: - **同步信号检测**:在接收PBCH之前,用户设备(UE)需要首先检测同步信号(SSB,Synchronizing Signal Block),从而获取小区的基本信息(如小区ID、频率范围等)。这一步是接收PBCH信道的基础[^2]。 - **解调**:PBCH信号经过QPSK调制后发送到空中接口,接收端需要对信号进行解调,将其从符号转换为二进制比特流。解调过程需要参考PBCH DMRS(解调参考信号)以提高解调的准确性[^2]。 - **解扰**:PBCH数据在发送前经过两次加扰以减少小区间干扰。接收端需要进行两次解扰操作,分别针对第一次加扰和第二次加扰。第一次解扰使用小区特定的扰码,第二次解扰则使用无线帧或时隙号生成的扰码。 - **速率解匹配**:PBCH数据在发送前通过速率匹配调整码率,接收端需要执行速率解匹配操作以恢复原始的512bit Polar编码数据。此过程需要根据实际的资源分配情况选择适当的解匹配策略[^2]。 - **Polar解码**:PBCH使用Polar码进行信道编码,接收端需要采用相应的解码算法(如SC(Successive Cancellation)或SC-List解码)来恢复原始的56bit数据(包括32bit PBCH负载和24bit CRC校验信息)[^3]。 - **CRC校验**:接收端通过CRC校验验证解码后的数据是否正确。如果CRC校验失败,则表示数据在传输过程中发生了错误,可能需要重新尝试接收或解码过程[^5]。 - **MIB提取**:最终,接收端从解码后的32bit PBCH负载中提取MIB信息,包括小区ID、子帧配比、SSB索引等关键参数。这些信息将用于后续的接入过程和系统信息解码[^1]。 #### 2. **PBCH接收实现方法** PBCH接收的实现涉及多个模块的设计与优化,主要包括以下几个方面: - **同步信号检测模块**:该模块负责检测SSB信号,并从中提取小区ID、频率偏移等基本信息。通常采用相关检测算法,通过与本地生成的SSB序列进行匹配,找到最佳的同步位置[^1]。 - **解调模块**:解调模块基于QPSK调制方式将接收到的符号转换为比特流。为了提高解调性能,通常需要结合PBCH DMRS进行信道估计,以补偿信道衰落和干扰。 - **解扰模块**:解扰模块分为两个部分,分别对应第一次和第二次加扰的解扰操作。第一次解扰使用小区特定的扰码,而第二次解扰则根据无线帧或时隙号生成扰码。这两个过程都需要精确的时序控制和扰码生成算法。 - **速率解匹配模块**:速率解匹配模块负责将接收到的864bit数据恢复为512bit的Polar编码数据。该模块需要根据发送端的速率匹配策略(如重复或打孔)进行相应的解匹配操作[^2]。 - **Polar解码模块**:Polar解码是PBCH接收的核心部分,通常采用SC或SC-List解码算法。SC解码适用于低复杂度场景,而SC-List解码则在复杂度允许的情况下提供更高的解码性能。解码过程中需要考虑信道状态信息(CSI)以提高解码准确性[^3]。 - **CRC校验模块**:CRC校验模块用于验证解码后的数据是否正确。如果CRC校验失败,则需要重新尝试解码或调整接收参数。该模块需要高效地计算CRC值并与接收到的CRC进行比较[^5]。 - **MIB提取模块**:MIB提取模块从解码后的32bit PBCH负载中提取MIB信息,并将其传递给上层协议栈。该模块需要确保MIB字段的正确解析,包括SFN(系统帧号)、SSB索引、子帧配比等关键参数[^4]。 #### 3. **关键实现挑战** 在实际实现PBCH接收过程中,存在以下几个关键挑战: - **信道估计与补偿**:由于无线信道的时变特性,接收端需要准确估计信道状态并进行补偿,以提高解调和解码的准确性。通常采用PBCH DMRS进行信道估计,但如何在低信噪比环境下提高估计精度是一个挑战[^2]。 - **扰码生成与时序同步**:PBCH接收过程中需要生成正确的扰码,并确保与时序同步。如果时序同步不准确,可能会导致解扰失败,进而影响后续的解码过程。 - **Polar解码复杂度**:虽然Polar码具有优异的纠错性能,但其解码复杂度较高,尤其是在SC-List解码中。如何在保证解码性能的同时降低计算复杂度是实现中的一个重要问题[^3]。 - **CRC校验失败处理**:当CRC校验失败时,接收端需要采取适当的措施,如重新尝试解码或调整接收参数。如何高效地处理CRC失败并提高整体接收成功率是实现中的一个难点[^5]。 #### 4. **代码示例** 以下是一个简单的Python代码示例,展示了如何实现PBCH接收中的CRC校验过程。假设我们已经完成了Polar解码并获得了56bit的数据(32bit PBCH负载 + 24bit CRC),接下来需要进行CRC校验: ```python def calculate_crc24c(data, poly=0x1B, init=0xB2, refin=False, refout=False, xorout=0x00, check=False): """ 计算CRC24C校验值 :param data: 输入数据(字节数组) :param poly: 生成多项式 :param init: 初始值 :param refin: 输入是否反转 :param refout: 输出是否反转 :param xorout: 最终异或值 :param check: 是否进行校验 :return: CRC校验结果 """ crc = init for byte in data: if refin: byte = int('{:08b}'.format(byte)[::-1], 2) for _ in range(8): top_bit = (crc >> 23) & 0x01 crc = ((crc << 1) & 0xFFFFFF) | ((byte >> 7) & 0x01) byte <<= 1 if top_bit: crc ^= poly if refout: crc = int('{:024b}'.format(crc)[::-1], 2) crc ^= xorout return crc # 示例:56bit数据(32bit PBCH负载 + 24bit CRC) pbch_data = [0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE] # 56bit = 7字节 # 提取前32bit(4字节)作为PBCH负载 pbch_payload = pbch_data[:4] # 计算CRC24C calculated_crc = calculate_crc24c(pbch_payload) # 提取后24bit(3字节)作为接收到的CRC received_crc = (pbch_data[4] << 16) | (pbch_data[5] << 8) | pbch_data[6] # 校验 if calculated_crc == received_crc: print("CRC校验通过") else: print(f"CRC校验失败,计算值:{hex(calculated_crc)}, 接收值:{hex(received_crc)}") ``` ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李71~李先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值