中兴通讯第二届“中兴捧月”杯校园程序设计大赛
无线通信基站的基带发端仿真系统软件
设计文档
1 概述
1.1 需求概述
设计一个基带发端仿真系统,系统要求实现的各个处理单元如图 1 所示所示。
图 1 基带发端仿真系统框图
基带发端系统所要完成的功能:
1. 高层软件根据题目要求,以 20 秒为一个子帧周期向基带处理器下发一组小区参数,
参数下发的截止时间为上一子帧的第 19.8 秒,高层软件将该子帧的小区参数存储
在基站参数存储区;
2. 如图 1 所示,基带处理器收到高层软件配置的小区参数 0.2 秒钟后,根据 UE(用
户终端)数目,给每个 UE 发送 1 或者 2 包 PRBS 数据作为 TB 块(业务数据)。
3. 基带处理器对该包 PRBS 数据完成 CRCA 添加、CRCB 添加、Turbo 编码和速率匹
配,码块级联、加扰、调制和 MIMO 等功能,处理时间为 19.8 秒钟,如果处理不
完则丢弃该包数据,等待高层软件重新下发小区参数。
1 / 41
中兴通讯第二届“中兴捧月”杯校园程序设计大赛
1.2 功能实现
依据题目要求,程序实现了基带发端仿真系统,并在此基础上做了一些相关的扩展。详
细说明见表 1,系统仿真平台完成情况列表。
表 1 仿真平台完成情况列表
基带处理相关
CRC 校验
码块分割
Turbo 编码
速率匹配
题目要求模块
码块级联
加扰
调制
层映射(单天线、传输分集)
系统平台相关
定时发送参数
读取独立参数合理性检查
相关联参数合理性检查
参数重新配置
基带处理时间模拟
结果保存
预编码(单天线、传输分集)
预编码(复用,可为 2TB 配置不同 MCS) GUI 界面
子载波映射 导频位置预留
频谱搬移 OFDM 调制
时域/频域信道
计算等效信道 MIMO 检测(ZF/MMSE) 参数错误报告及提示
理想信道
多种仿真模式选择
误块率统计
用户频域调度
扩展模块
收端过程:
OFDM 解调 去载波映射 MIMO 检测
去层映射 解调 解扰
去速率匹配 Turbo 译码
去码块分割 CRC 校验及错误判断
多天线处理实现功能见表 2 所示配置。
表 2 MIMO 预处理可实现以下配置
码字数 传输模式
层数
BS 天线数 UE 天线数 MIMO 检
单天线
传输分集
空间复用
1
1
1
2
1
2
2
4 5 6
3 4
3 4
3 4
[注] 标准中的传输模式 7 在该平台下不可用
1
2
4
1
2
3
4
2 / 41
1Tx
2Tx
4Tx
1Tx~4Tx
2Tx~4Tx
3Tx~4Tx
4Tx
1Rx 2Rx
2Rx
2Rx
2Rx
2Rx
2Rx
2Rx
测
ZF/MMSE
ZF/MMSE
ZF/MMSE
ZF/MMSE
ZF/MMSE
NULL
NULL
中兴通讯第二届“中兴捧月”杯校园程序设计大赛
2 总体设计
2.1 系统流程
图 2 系统流程图
2.2 设计思路
根据题目要求,参考 3GPP 标准 36.211 V8.6.0,36.212 V8.6.0,36.213 V8.6.0。得到基
站端基带处理器在接收到上层传输块(TB,Transport Block)后,下行共享信道发端过程主
要包含以下步骤。
3 / 41
中兴通讯第二届“中兴捧月”杯校园程序设计大赛
2.2.1 初赛要求基带处理模块
初赛基带处理过程包含以下模块,流程如图 3 所示。
TB 添加 CRC 校验
码块分段及码块 CRC 校验添加
数据信息的信道编码
速率匹配
码块级联
图 3 基带发端系统比特级处理的流程图
发端系统的各项功能模块简要内容如下:
1. 获取小区参数和业务数据。
2. CRCA 校验采用的生成多项式:
gCRC24A(D) = [D + D + D + D + D + D + D + D + D + D + D + D + D + 1]
24
23
11
10
7
18
17
14
6
5
4
3
4 / 41
中兴通讯第二届“中兴捧月”杯校园程序设计大赛
3. CRCB 校验采用的生成多项式:
gCRC24B(D) = [D + D + D + D + D + 1]
24
23
6
5
4. 信道编码采用标准中码率为 1/3 的 turbo 码。传输函数 G(D):
DG
1,1
1
5. 速率匹配
3
DD
2
D
D
3
速率匹配是指传输信道上的比特被重发(repeated)或者被打孔(punctured),以匹配
物理信道的承载能力。打孔就是将当前的比特打掉,同时将后面的比特依次前移一位,重复
就是在当前比特和后面的比特之间插入一次当前比特。
2.2.2 复赛要求基带处理模块
复赛增加的基带处理过程包含以下 4 个模块,本设计在其基础上扩展了 2 个模块,图 4
给出了该过程的流程图。
加扰
调制
层映射
预编码
资源映射
OFDM 符号生成
图 4 下行符号级处理流程
2.2.3 收端处理过程
收端则是发端的逆过程,对接收到的信号进行一系列的处理,得到代表原始发送的消息
序列。并判断收发内容是否一致。
5 / 41
中兴通讯第二届“中兴捧月”杯校园程序设计大赛
3 详细设计方案
3.1 数据产生
3.1.1 函数描述
数据产生接口函数:a = info_gen(sizeTB)
实现功能:生成指定序列长度的二进制数,作为发端的信息比特。
参数定义:sizeTB:生成的二进制序列长度
a :存储得到的二进制序列
3.1.2 产生原理
通过随机序列生成函数,得到一系列二进制信息,模拟发端数据的发送。或者从指定文
件中读取所要发送的消息序列。
3.2 CRC 校验
3.2.1 函数描述
CRC 校验接口函数:p = crc24a(c)
实现功能: 以校验多项式为除数的多项式除。计算 24 位 CRC
参数定义: c :需要进行 CRC 校验的信息
p :进行 CRC 校验的校验位,由低位到高位排列
校验多项式为:
gCRC24A(D) = [D + D + D + D + D + D + D + D + D + D + D + D + D + 1]
24
23
18
17
7
14
11
10
6
5
4
3
对于码块分割中的校验,函数接口同上,采用 CRC24B 校验多项式为:
gCRC24B(D) = [D + D + D + D + D + 1]
24
23
6
5
6 / 41
中兴通讯第二届“中兴捧月”杯校园程序设计大赛
3.2.2 CRC 校验的原理
CRC 校验利用线性编码理论,在发送端根据要传送的 k 位二进制码序列,以一定的规
则产生一个校验用的监督码(即 CRC 码)r 位,并附在信息后面,构成一个新的二进制码
序列数共 k+r 位,最后发送出去。在接收端,则根据信息码和 CRC 码之间所遵循的规则进
行检验,以确定传送中是否出错。
设编码前的原始信息多项式为 P(x),生成多项式为 G(x),CRC 多项式为 R(x);编
码后带循环校验码 CRC 的信息多项式为 T(x)。其实现步骤如下:
1) 设待发送的数据块是 k 位的二进制多项式 P(x),生成多项式为 r 阶的 G(x)。
在数据块的末尾添加 r 个 0,数据块的长度增加到 k+r 位,对应的二进制多项式
为
)(xPxr 。
2) 用生成多项式 G(x)去模 2 除
)(xPxr
。求得余数为 r-1 阶的二进制多项式 R(x)。
此二进制多项式 R(x)就是 P(x)经生成多项式 G(x)编码的 CRC 校验码。
3) 将校验码 R(x)添至 P(x)的末尾,即可得到包含 CRC 校验码的待发送字符串。
从 CRC 的编码规则可以看出,CRC 编码实际上是将待发送的 k 位二进制多项式 P(x)
转换成了可以被 G(x)除尽的 k+r 位二进制多项式 T(x)。所以,进行译码时可以用接收
到的数据去除 G(x),如果余数为 0,则表示传输过程没有错误;否则,传输过程存在错误。
3.3 码块分割
3.3.1 函数描述
函数接口描述: c = codeblock_segment(b,iUE,iTB)
实现功能:对输入的第iUE个用户的第iTB个传输块进行码块分割。若输入信息b长度小
于常数Z,则不进行分割;否则依据[2]第5.1.3.2.3节定义的分割大小进行码
块分割,并对分割后的数据添加CRC24B校验。
参数定义: b :原始信息加CRC24A后的数据
iUE:第i个用户
iTB:第i个传输块
7 / 41
中兴通讯第二届“中兴捧月”杯校园程序设计大赛
3.3.2 码块分割的原理:
码块分割部分的输入序列表示为:
,
bbbb
0
3
,
,
1
2
,...,
Bb
1
,B > 0。如果 B 大于最大码块长
度 Z(Z=6144),需要对输入序列进行码块分割,并且在每一个编码块的后面添加长度为 L
= 24 的 CRC 检验序列,即进行第二次 CRC 检验。
如果填充比特F的数目不为0,那么将填充比特添加到第一个编码块的前面。如果B<40,
那么在编码块的开始位置添加填充比特。在程序设计中,用NaN表示填充比特。
码块分割的流程图如图 5 所示。
图 5 码块分割的流程图
其中,Bz:输入序列在进行码块分割后的序列中的比特数目。C 为分割的码块数。K+,
C+,K-,C-分别表示块 1 大小,块 1 个数,块 2 大小,块 2 个数。
码块分割和 CRC 校验间的相互联系可通过图 6 表示
8 / 41