1、中兴通讯第二届“中兴捧月”杯校园程序设计大赛1 / 42无线通信基站的基带发端仿真系统软件设计文档1 概述1.1 需求概述设计一个基带发端仿真系统,系统要求实现的各个处理单元如图 1 所示所示。图 1 基带发端仿真系统框图基带发端系统所要完成的功能:1. 高层软件根据题目要求,以 20 秒为一个子帧周期向基带处理器下发一组小区参数,参数下发的截止时间为上一子帧的第 19.8 秒,高层软件将该子帧的小区参数存储在基站参数存储区;2. 如图 1 所示,基带处理器收到高层软件配置的小区参数 0.2 秒钟后,根据 UE(用户终端)数目,给每个 UE 发送 1 或者 2 包 PRBS 数据作为 TB 块
2、(业务数据)。3. 基带处理器对该包 PRBS 数据完成 CRCA 添加、CRCB 添加、Turbo 编码和速率匹配,码块级联、加扰、调制和 MIMO 等功能,处理时间为 19.8 秒钟,如果处理不完则丢弃该包数据,等待高层软件重新下发小区参数。中兴通讯第二届“中兴捧月”杯校园程序设计大赛2 / 421.2 功能实现依据题目要求,程序实现了基带发端仿真系统,并在此基础上做了一些相关的扩展。详细说明见表 1,系统仿真平台完成情况列表。表 1 仿真平台完成情况列表基带处理相关 系统平台相关CRC 校验 定时发送参数码块分割 读取独立参数合理性检查Turbo 编码 相关联参数合理性检查速率匹配 参数
3、重新配置码块级联 基带处理时间模拟 加扰 结果保存调制层映射(单天线、传输分集)题目要求模块预编码(单天线、传输分集)预编码(复用,可为 2TB 配置不同MCS)GUI 界面子载波映射 导频位置预留 误块率统计频谱搬移 OFDM 调制 多种仿真模式选择时域/频域信道 用户频域调度计算等效信道 MIMO 检测(ZF/MMSE ) 参数错误报告及提示理想信道扩展模块收端过程:OFDM 解调 去载波映射 MIMO 检测去层映射 解调 解扰 去速率匹配 Turbo 译码 去码块分割 CRC 校验及错误判断多天线处理实现功能见表 2 所示配置。表 2 MIMO 预处理可实现以下配置码字数 传输模式 层数
4、 BS 天线数 UE 天线数 MIMO 检测单天线 1 1 1 1Tx 1Rx 2Rx ZF/MMSE2 2 2Tx 2Rx ZF/MMSE传输分集 12 4 4Tx 2Rx ZF/MMSE1 4 5 6 1 1Tx4Tx 2Rx ZF/MMSE3 4 2 2Tx4Tx 2Rx ZF/MMSE3 4 3 3Tx4Tx 2Rx NULL空间复用 23 4 4 4Tx 2Rx NULL中兴通讯第二届“中兴捧月”杯校园程序设计大赛3 / 42注 标准中的传输模式 7 在该平台下不可用2 总体设计2.1 系统流程比特生成调制层映射预编码资源映射O F D M 符号生成比特生成信道参数设定加扰调制层映射
5、预编码资源映射O F D M 符号生成天线映射信道生成经过信道 天线逆映射解 O F D M 符号资源逆映射解预编码解层映射解调高层参软件比特生成C R C 校验比特生成码块分割比特生成编码比特生成速率匹配比特生成码块级联加扰比特生成C R C 校验比特生成码块分割比特生成编码比特生成速率匹配比特生成码块级联比特生成正误判断比特生成U E比特生成B S比特级参数基站参数存储区符号级参数图 2 系统流程图2.2 设计思路根据题目要求,参考 3GPP 标准 36.211 V8.6.0,36.212 V8.6.0,36.213 V8.6.0 。得到基中兴通讯第二届“中兴捧月”杯校园程序设计大赛4 /
6、 42站端基带处理器在接收到上层传输块(TB ,Transport Block)后,下行共享信道发端过程主要包含以下步骤。2.2.1 初赛要求基带处理模块初赛基带处理过程包含以下模块,流程如图 3 所示。 TB 添加 CRC 校验 码块分段及码块 CRC 校验添加 数据信息的信道编码 速率匹配 码块级联信道编码速率匹配码块级联10,.Aa10,.Bb110,.rKrc)(1)(10,.iDrird110,.rEre10,.GffC R C A 添加码块分割 , C R C B 添加获取小区参数和业务数据图 3 基带发端系统比特级处理的流程图发端系统的各项功能模块简要内容如下:1. 获取小区参数
7、和业务数据。中兴通讯第二届“中兴捧月”杯校园程序设计大赛5 / 422. CRCA 校验采用的生成多项式: 243187141076543gCRA(D) =+ D + D + D +13. CRCB 校验采用的生成多项式: 24365gCB() = 14. 信道编码采用标准中码率为 1/3 的 turbo 码。传输函数 G(D):321,DG5. 速率匹配速率匹配是指传输信道上的比特被重发(repeated)或者被打孔(punctured ),以匹配物理信道的承载能力。打孔就是将当前的比特打掉,同时将后面的比特依次前移一位,重复就是在当前比特和后面的比特之间插入一次当前比特。2.2.2 复赛要
8、求基带处理模块复赛增加的基带处理过程包含以下 4 个模块,本设计在其基础上扩展了 2 个模块,图4 给出了该过程的流程图。 加扰 调制 层映射 预编码 资源映射 OFDM 符号生成加 扰层 映 射O F D M信 号 产 生O F D M 信 号 产 生加 扰层调 制调 制预 编 码R E 映 射R E 映 射天 线 端 口码 字图 4 下行符号级处理流程中兴通讯第二届“中兴捧月”杯校园程序设计大赛6 / 422.2.3 收端处理过程收端则是发端的逆过程,对接收到的信号进行一系列的处理,得到代表原始发送的消息序列。并判断收发内容是否一致。3 详细设计方案3.1 数据产生3.1.1 函数描述数据
9、产生接口函数: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 校验的校验位,由低位到高位排列校验多项式为: 243187141076543
10、gCRA(D) =+ D+ + D + D 1中兴通讯第二届“中兴捧月”杯校园程序设计大赛7 / 42对于码块分割中的校验,函数接口同上,采用 CRC24B 校验多项式为:24365gCRB(D) = + D +13.2.2 CRC 校验的原理CRC 校验利用线性编码理论,在发送端根据要传送的 k 位二进制码序列,以一定的规则产生一个校验用的监督码(即 CRC 码)r 位,并附在信息后面,构成一个新的二进制码序列数共 k+r 位,最后发送出去。在接收端,则根据信息码和 CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。设编码前的原始信息多项式为 P(x),生成多项式为 G(x ) ,C
11、RC 多项式为 R(x) ;编码后带循环校验码 CRC 的信息多项式为 T(x) 。其实现步骤如下:1) 设待发送的数据块是 k 位的二进制多项式 P(x),生成多项式为 r 阶的 G(x) 。在数据块的末尾添加 r 个 0,数据块的长度增加到 k+r 位,对应的二进制多项式为 )(xPr。2) 用生成多项式 G(x)去模 2 除 )(xPr。求得余数为 r-1 阶的二进制多项式R(x) 。此二进制多项式 R(x)就是 P(x)经生成多项式 G(x)编码的 CRC校验码。3) 将校验码 R(x)添至 P(x)的末尾,即可得到包含 CRC 校验码的待发送字符串。从 CRC 的编码规则可以看出,C
12、RC 编码实际上是将待发送的 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长度中兴通讯第二届“中兴捧月”杯校园程序设计大赛8 / 42小于常数Z,则不进行分割;否则依据2第5.1.3.2.3节定义的分割大小进行码块分割,并对分割后的数据添加
13、CRC24B校验。参数定义: b :原始信息加CRC24A后的数据iUE:第i个用户iTB:第i个传输块3.3.2 码块分割的原理:码块分割部分的输入序列表示为: 13210,.,Bbb,B 0。如果 B 大于最大码块长度 Z(Z=6144),需要对输入序列进行码块分割,并且在每一个编码块的后面添加长度为L = 24 的 CRC 检验序列,即进行第二次 CRC 检验。如果填充比特F的数目不为0,那么将填充比特添加到第一个编码块的前面。如果B 6 1 4 4C = c e i l ( B / ( Z - L ) )B = B + C * LC = 1B = B计 算,K计 算 填 充 比 特F0
14、在 输 入 序 列 的 起 始位 置 添 加 填 充 比 特对 分 割 后 的 码 块 分别 进 行 C R C 校 验码 块 分 割 模 块 的 输出否是是否中兴通讯第二届“中兴捧月”杯校园程序设计大赛9 / 42图 5 码块分割的流程图其中,Bz:输入序列在进行码块分割后的序列中的比特数目。C 为分割的码块数。K+,C+ ,K- , C-分别表示块 1 大小,块 1 个数,块 2 大小,块 2 个数。码块分割和 CRC 校验间的相互联系可通过图 6 表示传 输 块 ( T B )传 输 块 ( T B )T BC R CC B 0 C B 1 C B 2T BC R CC B 0C B 0
15、C R CC B 1C B 1C R CC B 2C B 2C R CT BC R CT B C R C 处 理码 块 分 割C B C R C 处 理图 6 码块分割、CRC 校验过程3.4 信道编码3.4.1 函数描述函数接口描述:en_output = turbo_encoder(c)实现功能:1/3 码率 turbo 编码器函数。包含 2 个 RSC 编码器和一个内交织器。每个RSC 编码器输出系统信息和校验信息交叉放置的编码比特。取出 RSC#1 的系统比特和校验比特,取出 RSC#2 的校验比特,以及输出的 12 个尾比特,组成输出的三个并行数据流。参数说明: c :待编码的信息比
16、特en_output:编码输出数据函数接口描述:alphaInternal = internal_leaver_par(Ki)实现功能:turbo 编码内交织序列生成参数说明:Ki:交织序列大小alphaInternal:交织序列3.4.2 turbo 编码原理对于一个给定的码块,输入信道编码模块的比特序列表示为 ,其中0121,Kc中兴通讯第二届“中兴捧月”杯校园程序设计大赛10 / 42K 是表示需要进行编码的比特数目,编码后的比特表示为 ,其中 D 是每0121,iiidd个输出流的编码比特数目,i 表示编码器输出流的序号, 和 的关系以及 K 和 D 的关kci系由编码方式决定。Tur
17、bo 编码。Turbo 编码器的方案是:并行级联卷积码(Parallel Concatenated Convolutional Code,PCCC),它使用了两个 8 状态子编码器和一个 Turbo 码内交织器。Turbo编码器的编码速率为 1/3,Turbo 编码器的结构如图 7 所示。PCCC 中 8 状态子编码器的传输函数为:= GD10,g其中= 1+ +0g23= 1+ +1DD DDD D输入 T u r b o 码内交织器输出输出第一个子编码器第二个子编码器kckc kxkxzkz图 7 编码速率为 1/3 的 Turbo 编码器结构当开始进行编码时,8 状态子编码器中移位寄存器的初始值为 0。Turbo 编码器的输出为:= 0kdx= 1z