摘要:本文运用Matlab数学仿真平台,建立了码分多址仿真器模拟简单的CDMA通信链路,做了下行信道的仿真。将误码率作为了扩频处理增益干扰源个数、功率—延时曲线和接收器输入端信噪比的函数,使用离散信道模型计算误码率(BER),将结果与使用波形信道模型获得的结果作比较。实现了用码分多址(CDMA)通信系统下行信道的仿真。
关键词:Matlab,CDMA,下行信道,仿真
中图分类号:TN910 文献标识码:A
1.引言
信道是通信系统中需要进行精确建模最复杂的部分。假设噪声在所有的频率上具有恒定的功率谱密度,满足这一恒定特性的噪声叫白噪声,假设噪声幅度具有高斯概率密度函数,噪声为加性高斯白噪声的信道叫加性高斯白噪声信道。本文采用的就是加性高斯白噪声信道。接收到的信号可表达为:
(1-1)
下行信道是CDMA通信系统中的一类重要信道。本文对它的仿真是在SR1下的RC1条件下进行的。SR1(Spreading Rate 1) 表示最终扩频后的数据速率为1.2288Mchips/s ,RC1表示无线配置(Radio Configuration)。无线配置被定义为一组下行信道或上行信道的数据传送结构,它具有特定的物理层参数[1]。例如,信息速率、编码结构等。如图1-1是下行信道的结构图。
Inf
Bits Add
FQI Add 8
tail bits Convolutional
Encoder Symbol
Repetition Block
Interleaver Modulation
Symbol
图1-1 下行信道的结构图
图中的各个框图是仿真中要实现的主要模块,它们分别代表:
< >frame Quality Indicator(帧质量校验)
图2-1 信源模型
(2)CRC(循环冗余检验是一种用途最广,检错能力很强的差错检测方法。它对数据进行多项式计算,并将得到的数附在帧的后面。接收设备也执行类似的算法。)。发生器、卷积编码器(卷积码是一种有记忆的编码,在任意给定的时间单元,编码器的n个输出码字不仅与此时间单元的k个输入有关,而且也与前m个输入有关。目前国际上很多通信系统中首选的标准卷积码为(2,1,6)码,该码能使误码率达到最小,且能克服相位误差。)、符号重复器、块交织器、长码发生器及数据扰码器的模块可以直接在Simulink中调用[3]。最后,得到CDMA的下行信道仿真模型如图2-2所示。
图2-2 CDMA下行信道仿真模型
采用频谱示波器可以看到扰码后的输出波形频谱如图2-3所示。扰码后的输出波形可认为是由多个矩形信号构成,其频谱就是由多个小Sinc(一种无限延伸的函数)信号,叠加而形成一个大的Sinc信号。
图2-3 扰码后的输出波形频谱
2.2数据流仿真
为了使数据流的仿真结果与时间流的仿真结果具有可比性,都采用同一个信源来获得信息比特[4]。采用simout模块将时间流信源的输出送到Matlab 工作空间中,如图2-4所示。如图2-5是卷积编码器的结构图。
\* MERGEFORMAT
图2-4 工作空间获取数据模型
\* MERGEFORMAT
图2-5 卷积编码器的结构图
用edit命令打开M文件的编辑框,编写程序[5]:
function [cycb,convout,inbit,out]=cdma2000( )
global simout; %定义simout为全局变量
cycb=encode(simout,184,172,’cyclic’); %进行CRC编码
a=zeros(184,501);
for i=1:184*501
a(i)=cycb(i);
end
b=zeros(8,501);
c=cat(1,a,b); %加8 位尾比特
bit=zeros(96192,1);
for i=1:96192
bit(i)=c(i);
end
tran_func=sim2logi('convenc'); %将卷积编码的结构图转换为转移矩阵
conb=convenco(bit,tran_func); %进行卷积编码
conb=conb';
convout=zeros(2*length(bit),1);
for i=1:2*length(bit)
convout(i)=conb(i);
end
e=zeros(384,501);
for i=1:501
for j=1:384
e(j,i)=convout(j+(i-1)*384);
end
end
intout=zeros(384,501);
inbit=zeros(384,1);
for i=1:501
inbit=interleavers(e(:,i)); %进行块交织
intout(:,i)=inbit;
end
k=zeros(384*501,1);
for i=1:384*501
k(i)=intout(i);
end
power=randint(384*501,1); %产生功控比特
out=xor(k,power); %进行扰码
function[b]=interleavers(e) %块交织的函数
a=zeros(24,16);
for i=1:384
a(i)=e(i);
end
b=zeros(384,1);
a=a';
for j=24:-1:1
for i=1:16
b(i+16*(24-j))=a(i,j);
end
end
3.结论
通过以上数据流仿真,得到了如图1-1中各模块的输出数据,将此数据流通过示波器,发现与时间流仿真所得结果有一定差异,此差异是合理的。因为在时间流仿真过程中,各模块的执行时间几乎无延迟,较好地满足了通信系统对时间的要求。而在数据流仿真过程中,下一函数的执行需要调用以前函数的生成结果,这样造成执行语句时的等待,这种等待会引起较大延时。因此在同一时刻得到的波形不可能完全一致。
参考文献
[1] 中国联通公司.中国联通800MHZCDMA/cdma2000数字蜂窝移动通信网体系结构(1/4)[M].北京:中国联通公司,2003
[2] Kyoung Kim著,刘晓宇等译.CDMA系统设计与优化[J].北京:人民邮电出版社,2001
[3] 李建新等.现代通信系统分析与仿真——MATLAB通信工具箱[M].西安:西安电子科技大学出版社,2000.
[4] 王乐宁等.MATLAB与通信系统仿真[M].北京:人民邮电出版社,2001.
[5] Cengiz Evei.Optimizing and licensing tha radio frequecy spectrum for terristra 3G