APP下载

基于MATLAB的码分多址(CDMA)动画仿真

2010-03-20

漳州职业技术学院学报 2010年1期
关键词:信源语句定义

张 伟



基于MATLAB的码分多址(CDMA)动画仿真

张 伟

(漳州职业技术学院 电子工程系,福建 漳州 363000)

通过MATLAB软件编程对码分多址技术(CDMA)的整个过程作一个系统的动画仿真,对仿真结果进行分析,论证了CDMA能有效地抑制码间串扰,具有很强的抗干扰性能。

码分多址;仿真;抗干扰能力

0 引言

“通信系统中存在一种应用非常广泛的通信模型:点对多点的通信模型。在这种模型中,多个终端可以同时使用同一信道资源向基站发送信息。这种允许多个终端同时共享有限的信道资源的技术称为多址接入技术”。[1]当前无线通信系统中存在三种主要的多址接入技术:“频分多址技术(FDMA Frequency Divide Multiple Access)、时分多址技术(TDMA Time Divide Multiple Access)和码分多址技术(CDMA Code Divide Multiple Access)”。[2]

频分多址接入协议将给定的频谱资源分为多个较窄的频带,然后分配给不同的用户使用;时分多址接入协议将时间轴分为若干个小的时隙,每个用户使用一个时隙进行通信,用户终端可以轮流接入或由一个中央基站控制接入。

“码分多址接入协议较适合于宽带多址接入系统中。采用码分多址接入协议的通信系统给小区的每个用户分配一条单独的扩频码,每个用户分配的码字之间互不相关。用户要发送的窄带信息先被扩频码扩展到一个非常宽的频带上去,然后再发送”。[3]接收端要用相同的扩频码对其进行解扩处理。由于码字的不相关特性,多个用户可以采用相同的载波同时向信道发送数据包。基站接收时用不同的码字进行解扩即可将其区分开。码分多址的接入技术优点很多。例如,小区容量大于另两种多址方式;具有软容量的特性;由于信号发送带宽远远大于相关带宽,有效地抑制了码间串扰;具有很强的抗干扰能力等。码分多址技术在无线通信系统和移动通信系统中发挥着重要的作用,应用前景广泛。下面具体说明如何对一个码分多址系统进行设计和仿真。

1 仿真系统原理图

图1 通信仿真原理图理理理图

如图1所示为码分多址技术的整个通信过程,信源主要要经过扩频、调制、解扩、解调的几个过程。根据上面的原理图,将在下面部分分别对每一模块进行具体说明。

2 仿真系统各模块介绍

2.1 信源部分

该部分通过自行定义一个矩阵SN来定义信源,以1来代表高电平,以0来代表低电平。在本设计中定义信源的长度为sn ;定义频率为f;该信源的长度lsn = length(sn);定义信源的时间长度t = (1:length(sn)) * 1/f;然后我们用语句 subplot(5,1,1); bsdisplay(t,sn),title('原始图'); 画出原始图形。

2.2 扩频部分

如所周知,要实现序列的扩频,就是产生一列的随机码序列B,然后让所产生的这一列随机码B与原来的那一列随机码A的每一位分别取异或,得到一列新的序列C,C=A⊕B即为扩频后的新的序列。

为了实现扩频,我们在设计中先产生随机码rand('state',sum(100*clock));

所要产生的随机码序列的长度:

ma = 1.0*logical(rand(1,10)>0.5);

为了让随机码序列与原来的序列分别取异或,本设计采用了一个循环语句,先定义kpma = [];这里扩频序列等于[]内的数

for k = 1:lsn

kpma = [kpma (~sn(k) * ma + sn(k) * ~ma )];

end

取K为1到信源序列SN的长度,由数学分析知,采用在实现异或时两个数的异或等于一个数的非乘以另一个数加上这个数乘以另一个数的非来实现,当然也可以用MATLAB语句中的异或XOR来实现这个效果。

在扩频时,我们定义扩频后的频率f1 = f*10;扩频后的时间长度 tkp = (1:length(kpma)) * 1/(f*10) ;以及扩频序列的长度lkpm = length(kpma); 然后我们用语句subplot(5,1,2);bsdisplay(tkp,kpma),title('扩频图'); 来画出扩频后的图形。

当然,不仅需考虑幅度上的扩频,还需考虑相位上的改变,在本设计中,采用下列语句来实现:

tt = linspace(0,1/f1,100);

y1=[];

tt1 = [];

for k = 1:lkpm

tt0 = tt+tkp(k);

tt1 = [tt1 tt0];

y1=[y1cos((2*pi*f1*10).*tt0+ kpma(k).*pi./4)];

end 来实现这个目的。

2.3 调制部分

“所谓调制,就是用调制信号(基带)去控制或改变载波的一个或几个参数,使调制后的信号(已调信号)含有原来调制信号的全部信息,但载波的某些参数按调制信号的规律变化”。[4]从频域上看,调制是一种频谱变换的过程。调制的目的在于使要传输的信号与信道相匹配,从而有效传输信号。“调制有包括模拟调制和数字调制,在MATLAB语句中有数字调制的语句y=dmod(x,fc,fd,fs,method…)来实现”。[5]这里x是指所要调制的信号,fc是指x的载波频率,fs是指仿真时的抽样频率;输出信号y的抽样频率为fs,输入信号x的抽样频率为fd。这里要求fs>fc,且fs/fc必须是一个整数。Fs可以是一个标量,也可以是一个二维矢量(包括抽样频率和初始相位)。在dmod中method对应的调制方式有:多元振幅键控(’ask’)、多元频移键控(’fsk’)、最小频移键控(’msk’)、多元移相键控(’psk’)、正交振幅键(’qask’)、提高信号的抽样频率(’sample’)。本设计中采用下列语句y=dmod(kpma,fc,fd,fs,'psk',m,df)来实现的,这里即x为kpma,采用的是多元移相键控调制(’psk’),m是指调制信号的长度,与原来序列的长度相同m=lsn;df定义为1。

2.4 解调部分

“解调是调制的逆过程,它是从已调信号中恢复出原来的调制的信号的过程,从频域上讲,解调也是一种频谱变换过程”。[4]“在MATLAB语句中有数字解调的语句y=ddmod(y,fc,fd,fs,opt1,…)来实现”。[5]它是dmod函数的反函数,它可以把用dmod调制的信号y调制出来,字符串变量method代表调制方式,必须和dmod中使用的方法相同。y=ddmod(y,fc,fd,fs,opt1,…)可以对调制信号y进行解调,解调出来的信号x的频率fd。Fc是信号的载波频率;fs为仿真抽样频率,应注意的是fs/fd必须是一个整数,fs可以是一标量,也可以是一个二维矢量,如果是一个二维矢量的话,第一个元素是抽样频率,第二个是载波信号的初始相位。1/fd是相邻两个判决点之间的时间间隔。默认判决的定时偏差是0。但当fd是一个二维矢量时,第二个元素就表示判决的定时偏差。接收到的信号y,在i/fd+offset/fs时刻被抽样,且抽样值被保持1/fd时间,函数通过比较抽样值与所有可能的符号之间的距离,来选取一最短的数字输出。在ddmod中method对应的调制方法包括:振幅键控调制(’ask’)、频移键控调制(’fsk’)、最小频移键控调制(’msk’)、多元移相键控调制(’psk’)、正交振幅键控调制(’qask’)、提高信号的抽样频率调制(’sample’)。本例中是采用的语z1=ddemod(y,fc,fd,fs,'psk',m,df);来实现的。这里的y就是指上述的调制信号。其它参数的意义与上面调制部分的相同。

2.5 解扩部分

“我们知道,序列的解扩原理与扩频时类似,也是要有一列与扩频时所产生的完全相同的随机码序列B,然后让这一列随机码B与调制解调后的那一列随机码C的每一位分别取异或,得到一列新的序列D,D=C⊕B即为解扩后的序列,在误差范围内,它必须与原来的原始序列完全相同”。[6]由于在设计中所解扩后的序列z1有120位,不能与随机码序列分别取异或,为了解决这个问题,我采取先把序列z1分成长为码长,宽为lsn的矩阵,在编程时用语句zz1 = reshape(z1,lma,lsn)来实现;再把随机码扩展为长为码长,宽为lsn 的矩阵,然后把这个矩阵与zz1分别取异或然后再求和,所用的语句为

zz1 = sum(xor(ma(ones(lsn,1),:)' , zz1));

在这两条语句执行后就会得到一列与原始数据一样长的序列,然后再定义大于二分之一码长的为1。小于二分之一码长的为0.即使用语句jkma = (zz1 > lma/2);在误差范围内,这样就可以得到与原来完全相同的序列,完成了解扩的过程。

3 仿真结果及抗干扰能力分析

3.1 仿真结果

经过上面所述的各个过程,在不考虑误差的情况下,可以得到最后的图形如下所示:

猜你喜欢

信源语句定义
基于极化码的分布式多信源信道联合编码
广播无线发射台信源系统改造升级与实现
重点:语句衔接
可信度的博弈: 伪健康信息与纠正性信息的信源及其叙事
成功的定义
我喜欢
分布式不等差错保护LT码*
修辞学的重大定义
山的定义
作文语句实录