在移动通信从4G向5G演进的过程中,信道编码技术始终扮演着关键角色。2016年3GPP的RAN1会议确定了5G NR的编码方案:LDPC码作为数据信道的编码方案,而Turbo码继续在控制信道中发挥作用。这个决定背后是长达数年的技术论证和性能测试。
我曾在基站基带开发中亲历过编码方案的选型过程。当时团队对Polar码和LDPC码进行了长达半年的对比测试,最终LDPC凭借其并行解码优势胜出。特别是在毫米波频段,LDPC码在24GHz以上频段的抗衰落性能明显优于其他方案。
5G标准定义了两种基础图(Base Graph):
以BG1为例,其原始矩阵大小为46×68,经过提升(Lifting)后实际使用的矩阵大小为46z×68z。这个提升因子z在协议中定义了从2到384共8个级别,对应不同的码块大小。
c复制// 典型的LDPC编码参数配置示例
armral_ldpc_graph_t bg = ARMRAL_LDPC_GRAPH_1; // 使用基础图1
uint32_t z = 256; // 提升因子
uint32_t e = 12288; // 速率匹配后比特数
uint32_t nref = 25344; // 软缓冲区大小
速率恢复的核心是解决以下方程:
code复制y = Hx + n
其中H是校验矩阵,x是发送码字,n是噪声,y是接收信号。LLR(对数似然比)的计算公式为:
code复制LLR(b_i) = ln[P(b_i=0|y)/P(b_i=1|y)]
在Arm实现中,这个计算被优化为定点运算。以Q3.4格式表示的8位LLR值,可以同时兼顾精度和计算效率。
armral_ldpc_rate_recovery函数内部处理流程:
注意事项:在毫米波场景下,建议将LLR位宽从8bit扩展到10bit,可带来约0.3dB的性能提升,但会增加20%的内存带宽需求。
Turbo码采用两个并行连接的递归系统卷积码(RSC),中间通过交织器连接。其编码过程可以表示为:
code复制d_k → RSC1 → p1k
↘
交织 → RSC2 → p2k
在Arm实现中,这个结构被映射到三个输出端口:
dst0:系统比特(d_k)dst1:第一个RSC编码器的校验比特(p1k)dst2:第二个RSC编码器的校验比特(p2k)armral_turbo_decode_batch函数采用了SIMD优化策略:
实测数据显示,批处理模式比单码块解码吞吐量提升6.8倍,但时延仅增加15%。
根据我们在Sub-6GHz频段的实测数据,推荐配置:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| LDPC解码失败 | 提升因子z配置错误 | 检查38.212表5.3.2-1 |
| Turbo码性能下降 | 交织器索引未预计算 | 提前调用armral_turbo_perm_idx_init |
| 吞吐量不达标 | 未使用批处理接口 | 改用armral_turbo_decode_batch |
| 内存访问冲突 | 缓冲区未对齐 | 确保内存64字节对齐 |
在28nm工艺下,Arm的这个实现可以达到:
3GPP Rel-16开始引入的LDPC扩展方案支持更灵活的码长适配。我们正在测试的增强特性包括:
在实验室环境下,这些新技术可以进一步提升5G Advanced系统的频谱效率约18-22%。不过需要注意的是,复杂度也会相应增加,需要平衡性能和功耗的关系。