中兴通讯第二届“中兴捧月”杯校园程序设计大赛1/41无线通信基站的基带发端仿真系统软件设计文档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秒钟,如果处理不完则丢弃该包数据,等待高层软件重新下发小区参数。中兴通讯第二届“中兴捧月”杯校园程序设计大赛2/411.2功能实现依据题目要求,程序实现了基带发端仿真系统,并在此基础上做了一些相关的扩展。详细说明见表1,系统仿真平台完成情况列表。表1仿真平台完成情况列表基带处理相关系统平台相关题目要求模块CRC校验定时发送参数码块分割读取独立参数合理性检查Turbo编码相关联参数合理性检查速率匹配参数重新配置码块级联基带处理时间模拟加扰结果保存调制层映射(单天线、传输分集)预编码(单天线、传输分集)扩展模块预编码(复用,可为2TB配置不同MCS)GUI界面子载波映射导频位置预留误块率统计频谱搬移OFDM调制多种仿真模式选择时域/频域信道用户频域调度计算等效信道MIMO检测(ZF/MMSE)参数错误报告及提示理想信道收端过程:OFDM解调去载波映射MIMO检测去层映射解调解扰去速率匹配Turbo译码去码块分割CRC校验及错误判断多天线处理实现功能见表2所示配置。表2MIMO预处理可实现以下配置码字数传输模式层数BS天线数UE天线数MIMO检测单天线1111Tx1Rx2RxZF/MMSE传输分集1222Tx2RxZF/MMSE244Tx2RxZF/MMSE空间复用145611Tx~4Tx2RxZF/MMSE23422Tx~4Tx2RxZF/MMSE3433Tx~4Tx2RxNULL3444Tx2RxNULL[注]标准中的传输模式7在该平台下不可用中兴通讯第二届“中兴捧月”杯校园程序设计大赛3/412总体设计2.1系统流程比特生成调制层映射预编码资源映射OFDM符号生成比特生成信道参数设定加扰调制层映射预编码资源映射OFDM符号生成天线映射信道生成经过信道天线逆映射解OFDM符号资源逆映射解预编码解层映射解调高层参软件比特生成CRC校验比特生成码块分割比特生成编码比特生成速率匹配比特生成码块级联加扰比特生成CRC校验比特生成码块分割比特生成编码比特生成速率匹配比特生成码块级联比特生成正误判断比特生成UE比特生成BS比特级参数基站参数存储区符号级参数图2系统流程图2.2设计思路根据题目要求,参考3GPP标准36.211V8.6.0,36.212V8.6.0,36.213V8.6.0。得到基站端基带处理器在接收到上层传输块(TB,TransportBlock)后,下行共享信道发端过程主要包含以下步骤。中兴通讯第二届“中兴捧月”杯校园程序设计大赛4/412.2.1初赛要求基带处理模块初赛基带处理过程包含以下模块,流程如图3所示。TB添加CRC校验码块分段及码块CRC校验添加数据信息的信道编码速率匹配码块级联信道编码速率匹配码块级联110,...,,Aaaa110,...,,Bbbb110,...,,rKrrrccc)(1)(1)(0,...,,iDririrrddd110,...,,rErrreee110,...,,GfffCRCA添加码块分割,CRCB添加获取小区参数和业务数据图3基带发端系统比特级处理的流程图发端系统的各项功能模块简要内容如下:1.获取小区参数和业务数据。2.CRCA校验采用的生成多项式:2423181714111076543gCRC24A(D)=[D+D+D+D+D+D+D+D+D+D+D+D+D+1]中兴通讯第二届“中兴捧月”杯校园程序设计大赛5/413.CRCB校验采用的生成多项式:242365gCRC24B(D)=[D+D+D+D+D+1]4.信道编码采用标准中码率为1/3的turbo码。传输函数G(D):32311,1DDDDDG5.速率匹配速率匹配是指传输信道上的比特被重发(repeated)或者被打孔(punctured),以匹配物理信道的承载能力。打孔就是将当前的比特打掉,同时将后面的比特依次前移一位,重复就是在当前比特和后面的比特之间插入一次当前比特。2.2.2复赛要求基带处理模块复赛增加的基带处理过程包含以下4个模块,本设计在其基础上扩展了2个模块,图4给出了该过程的流程图。加扰调制层映射预编码资源映射OFDM符号生成加扰层映射OFDM信号产生OFDM信号产生加扰层调制调制预编码RE映射RE映射天线端口码字图4下行符号级处理流程2.2.3收端处理过程收端则是发端的逆过程,对接收到的信号进行一系列的处理,得到代表原始发送的消息序列。并判断收发内容是否一致。中兴通讯第二届“中兴捧月”杯校园程序设计大赛6/413详细设计方案3.1数据产生3.1.1函数描述数据产生接口函数:a=info_gen(sizeTB)实现功能:生成指定序列长度的二进制数,作为发端的信息比特。参数定义:sizeTB:生成的二进制序列长度a:存储得到的二进制序列3.1.2产生原理通过随机序列生成函数,得到一系列二进制信息,模拟发端数据的发送。或者从指定文件中读取所要发送的消息序列。3.2CRC校验3.2.1函数描述CRC校验接口函数:p=crc24a(c)实现功能:以校验多项式为除数的多项式除。计算24位CRC参数定义:c:需要进行CRC校验的信息p:进行CRC校验的校验位,由低位到高位排列校验多项式为:2423181714111076543gCRC24A(D)=[D+D+D+D+D+D+D+D+D+D+D+D+D+1]对于码块分割中的校验,函数接口同上,采用CRC24B校验多项式为:242365gCRC24B(D)=[D+D+D+D+D+1]中兴通讯第二届“中兴捧月”杯校园程序设计大赛7/413.2.2CRC校验的原理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个传输块中兴通讯第二届“中兴捧月”杯校园程序设计大赛8/413.3.2码块分割的原理:码块分割部分的输入序列表示为:13210,...,,,,Bbbbbb,B0。如果B大于最大码块长度Z(Z=6144),需要对输入序列进行码块分割,并且在每一个编码块的后面添加长度为L=24的CRC检验序列,即进行第二次CRC检验。如果填充比特F的数目不为0,那么将填充比特添加到第一个编码块的前面。如果B40,那么在编码块的开始位置添加填充比特。在程序设计中,用NaN表示填充比特。码块分割的流程图如图5所示。数据输入B6144C=ceil(B/(Z-L))B’=B+C*LC=1B’=B计算,,,KKCC计算填充比特F0F在输入序列的起始位置添加填充比特对分割后的码块分别进行CRC校验码块分割模块的输出否是是否图5码块分割的流程图其中,Bz:输入序列在进行码块分割后的序列中的比特数目。C为分割的码块数。K+,C+,K-,C-分别表示块1大小,块1个数,块2大小,块2个数。码块分割和CRC校验间的相互联系可通过图6表示中兴通讯第二届“中兴捧月”杯校园程序设计大赛9/41传输块(TB)传输块(TB)TBCRCCB0CB1CB2TBCRCCB0CB0CRCCB1CB1CRCCB2CB2CRCTBCRCTBCRC处理码块分割CBCRC处理图6码块分割、CRC校验过程3.4信道编码3.4.1函数描述函数接口描述:en_output=turbo_encoder(c)实现功能:1/3码率turbo编码器函数。包含2个RSC编码器和一个内交织器。每个RSC编码器输出系统信息和校验信息交叉放置的编码比特。取出RSC#1的系统比特和校验比特,取出RSC#2的校验比特,以及输出的12个尾比特,组成输出的三个并行数据流。参数说明:c:待编码的信息比特en_output:编码输出数据函数接口描述:alphaInternal=internal_leaver_par(Ki)实现功能:turbo编码内交织序列生成参数说明:Ki:交织序列大小alphaInternal:交织序列3.4.2turbo编码原理对于一个给定的码块,输入信道编码模块的比特序列表示为0121,,,,Kcccc,其中K是表示需要进行编码的比特数目,编码后的比特表示为0121,,,iiiiDdddd,其中D是每个输出流的编码比特数目,i表示编码器输出流的序号,kc和ikd的关系以及K和D的关系由编码方式决定。中兴通讯第二届“中兴捧月”杯校园程序设计大赛10/41Turbo编码。Turbo编码器的方案是:并行级联卷积码(ParallelConcatenatedConvolutionalCode,PCCC),它使用了两个8状态子编码器和一个Turbo码内交织器。Turbo编码器的编码速率为1/3,Turbo编码器的结构如图7所示。PCCC中8状态子编码器的传输函数为:GD=101,gDgD其中0gD=1+2D+3D1gD=1+D+3DDDDDDD输入Turbo码内交织器输出输出第一个子编码器第二个子编码器kckckxkxkzkz图7编码速率为1/3的Turbo编码器结构当开始进行编码时,8状态子编码器中移位寄存器的初始值为0。Turbo编码器的输出为:0kd=kx1kd=kz2kd=,kz其中,k=0,1,2,…,K-1。如果被编码的码块是0号码块,并且填充比特的数目大于0,即F0,编码的输入被设中兴通讯第二届“中兴捧月”杯校园程序设计大赛11/41置为kc=0,k=0,…,(F-1),并且设置0kd=0,k=0,…,(F-1),以及1kd=NULL,k=0,…,(F-1)作为他的输