0、简介
CDMA是一种共享信道的方法,每一个用户可以在同样的时间使用同样的频带进行通信。
简单地说,就是当多个用户用同一个信道进行通信时,如果不采用CDMA的方法,就只能一个一个用户进行通信,效率相对较低。而采用CDMA的方法,则可以让不同的用户在同一个信道同时通信,且互不干扰。
那么,CDMA如何实现多用户同时通信而不产生冲突的呢?
首先先来了解什么是码片序列:
一个bit时间划分为m个短的间隔,称为码片。
将发送端的每一bit信号进行编码,例如原本是信号1,则用01010101表示,原本是信号0,则发送其反码10101010,同时为了提升发送信号的抗干扰性,一般将编码中0用-1代替。这种编码即被称为码片序列。
例如:
S站的8bit码片序列是00011011
•发送比特1时,就发送码片序列00011011
•发送比特0时,就发送码片序列的反码11100100
按惯例将码片中的0写为-1,将1写为+1,S站的码片序列是:(-1 -1 -1 +1 +1 -1 +1 +1)
那么回答之前的问题,CDMA能实现多用户同时通信而不产生冲突的原因在于,多个用户在发送数据时,所采用的码片序列都是正交的。
我们可以这样理解,物理中我们学习过力的合成和分解,例如:相互垂直的两个力可以形成一个合力,而这个合力我们也能分解成两个有着相互垂直方向上的力,且这两个力对彼此不会产生影响。类比来看,发送端每个站会被指派一个唯一的m bit码片序列,每个码都是各不相同的一个向量,且这些向量互相垂直,叠加的信号就是“合力”,而在接收端,特定用户解出的属于自己的信息,就是该合力的一个分力。
二维正交系可以有两个正交量,形成两个“码”,那么若一个正交系有n个正交量,那么就有n个“码”。
看到这,我们知道:在CDMA系统中,发送端用互不相干、相互正交(准正交)的地址去调制所要发送的信号,接收端则利用码型的正交性通过地址从混合的信号中选出相应信号。
其中接收端收到的混合信号是各个站发送的码片序列之和。
那么接收端怎么从混合信号中选出相应的信号呢?
接收端用相同的码片序列进行规格化内积,就可以将不属于本码片序列的其他信号全部去除,只接受本码片序列所携带的信息。(即使多用户同时通信时,其信号电压会相互叠加或抵消。)
1、例题:
共有4个站进行码分多址CDMA通信,4个站的码片序列为:
A:(-1 -1 -1 +1 +1 -1 +1 +1) B:(-1 -1 +1 -1 +1 +1 +1 -1)
C:(-1 +1 -1 +1 +1 +1 -1 -1) D:(-1 +1 -1 -1 -1 -1 +1 -1)
现收到这样的码片序列:( +1 -3 +3 -1 +1 +1 +1 +1)
则站点( )发送数据0
A. A
B. B
C. C
D. D
解答:
A:-1+3-3-1+1-1+1+1=0 表示收到的码片序列与A全部正交,那么A站点没有发送数据。
B:1/8(-1+3+3+1+1+1+1-1)=1,表示B站发送的信息是+1。
C:1/8(-1-3-3-1+1+1-1-1)= -1,表示C站发送的信息为0。
D:1/8(-1-3-3+1-1-1+1-1)=-1,表示D站发送的信息为0。
因此,多选题应该选择CD.
补充:
通过CDMA发送的信号有很强的抗干扰能力,其频道类似于白噪声,不易被发现。
码分多址复用CDMA是一种复用技术,即让多个用户分享同一个信道。
2、代码
@Test
public void CDMA(){
// chip
int[][] chip = new int[][]{
{-1, -1, -1, +1, +1, -1, +1, +1},
{-1, -1, +1, -1, +1, +1, +1, -1},
{-1, +1, -1, +1, +1, +1, -1, -1},
{-1, +1, -1, -1, -1, -1, +1, -1}
};
int[] receiver = new int[]{+1, -3, +3, -1, +1, +1, +1, +1};
for (int i = 0; i < 4; i++) {
int sum = 0;
for (int j = 0; j < 8; j++) {
sum += chip[i][j] * receiver[j];
}
int res = sum / 8;
if (res == 0){
System.out.println("[ "+i+" ]号站点,正交结果为 "+res+" 未发送数据。");
}else{
String bit = res == 1 ? "1" : "0";
System.out.println("[ "+i+" ]号站点,正交结果为 "+res+" 发送的数据为:"+ bit);
}
}
}
运行结果
[ 0 ]号站点,正交结果为 0 未发送数据。
[ 1 ]号站点,正交结果为 1 发送的数据为:1
[ 2 ]号站点,正交结果为 -1 发送的数据为:0
[ 3 ]号站点,正交结果为 -1 发送的数据为:0
参考
- CSDN
- 计算机网络(谢希仁)