概念
码分多址( Code Division Multiple Access,CDMA)是通过编码区分不同用户信息,实现不同用户同频、同时传输的一种通信技术。这就好像,从 A 地到 B 地的路线中,三个不同的乘客分别选择飞机,动车和汽车,三个人的行程是不会冲突的。
在 CDMA 中,每一个比特时间再被划分成 m 个短时间(码片)。每一个工作站被指派唯一一个 m bit 的码片序列。
一个站如果发送比特 1,表示发送自己的 m bit 码片序列
一个站如果发送比特 0,表示发送该码片序列的二进制反码
例如,S 站的码片序列指定为 00011011
- 当 S 站发送比特 1,发送的码片序列是 00011011
- 当 S 站发送比特 0,发送的码片序列是 11100100
- 当 S 站什么都不发送,显示 0
PS:一般来说,我们默认将 0 写成 -1,1 写成 +1 的形式
下面举例说明:
- 有ABC三个用户共享一个信道
用户 | 码片序列 |
---|---|
A | ( 0 1 0 1 ) |
B | ( 0 0 1 1 ) |
C | ( 0 0 0 0 ) |
发送的3个码片必须正交,即相乘为零。并且为了方便,接惯例将码片中的0写为-1,将1写为+1,3个码片就变成了:
用户 | 码片序列 |
---|---|
A | (-1 +1 -1 +1) |
B | (-1 -1 +1 +1) |
C | (-1 -1 -1 -1) |
- 发送比特 1 时,就发送原序列(以A为例,发送(-1 +1 -1 +1))
- 发送比特 0 时,就发送序列相反的序列(以A为例,发送(+1 -1 +1 -1))
- 什么都不发送时,就为0。
假设:A发送的信号为比特0,B发送比特1,C发送比特0,这相当于是答案
题目:
站名 | 码片信号 |
---|---|
A | (+1 -1 +1 -1) |
B | (-1 -1 +1 +1) |
C | (+1 +1 +1 +1) |
现收到这样的码片序列S:(1 -1 +3 +1)。问哪个站发送数据了?
发送数据的站发送的是0还是1?
计算过程如下:
站名 | 计算过程(公式:S*A/m) | 结果 |
---|---|---|
A | (−1+1−1+1)∗(+1−1+3+1) /4 = (-1-1-3+1) /4 = (-4) /4= −1 | 0 |
B | (−1−1+1+1)∗(+1−1+3+1) = (-1+1+3+1) /4 = (4) /4= 1 | 1 |
C | (−1−1−1−1)∗(+1−1+3+1) = (-1+1-3-1) /4 = (-4) /4= −1 | 0 |
所以ABC都有发送,A发了0,B发了1,C发了0。
简单说明一下公式:
- S:收到的码片序列
- A:某个用户(站)的码片序列
- m:码片序列的比特数,即()里面的位数
下面还有一道稍微复杂一点的例题:
共有4个站进行码分多址通信。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) |
现收到这样的码片序列S:(-1+1-3+1-1-3+1+1)。问哪个站发送数据了?发送数据的站发送的是0还是1?
站名 | 计算过程(公式:S*A/m) | 结果 |
---|---|---|
A | S•A/8 =(+1-1+3+1-1+3+1+1)/8=1 | 发送1 |
B | S•B /8 =(+1-1-3-1-1-3+1-1)/8=-1 | 发送0 |
C | S•C/8 =(+1+1+3+1-1-3-1-1)/8=0 | 无发送 |
C | S•D/8 =(+1+1+3-1+1+3+1-1)/8=1 | 发送1 |
下面还有最后一道更复杂一点的例题:
例题: 站点A、B、C通过CDMA共享数据链路,它们的码片序列如下:
站点 | 码片序列 |
---|---|
A | ( 1 1 1 1 ) |
B | ( 1 -1 1 -1 ) |
C | ( 1 1 -1 -1 ) |
若C从数据链路上收到的序列是:(2,0,2,0,0,-2,0,-2,0,2,0,2)则C收到A发送的数据是?
分析: 这道题是求 A 的数据,可以看到 C 的接收序列比 A 的码片序列长,这表明和上一题不同的是,A 发送了不止一个数据,因为 C 的接收序列的个数是 12 个,是 A 的 4 个的三倍,所以说明 A 发送了三个数据。
- 将序列分成三个部分(2,0,2,0)(0,-2,0,-2)(0,2,0,2)
- 各部分分别和 A 内积然后除以其码片个数即可。
数据部分 | 计算过程(公式:S1*A/m) | 对应结果 |
---|---|---|
S1 | S1•A/4 =(1,1,1,1)*(2,0,2,0)/ 4 =1 | 发送1 |
S2 | S2•A/4 =(1,1,1,1)*(0,-2,0,-2)/ 4 = -1 | 发送0 |
S3 | S3•A/4 =(+1+1+3-1+1+3+1-1)/4 = 1 | 发送1 |
所以发送的数据是 101
部分参考: link.