码分多路复用是一种数学上的规律运用在数据链路层的表现。
当想起CDM时,脑海中应该想起的是一个坐标系,简单的是二维平面直角坐标系,再复杂些是三维的空间直角坐标系。更高维的就难想象了。But, try it.
为什么想到坐标系呢?
先这么看,二维直角坐标系下:
- x 轴 x轴 x轴的方向向量最简单的是: ( 1 , 0 ) (1,0) (1,0)
- y 轴 y轴 y轴的方向向量最简单的是: ( 0 , 1 ) (0,1) (0,1)
任意给你一个向量,让你拆分为是多少个(1,0)和(0,1)我想几乎所有人都拆分得开。
升级为三维空间下:
- x 轴 x轴 x轴的方向向量最简单的是: ( 1 , 0 , 0 ) (1,0,0) (1,0,0)
- y 轴 y轴 y轴的方向向量最简单的是: ( 0 , 1 , 0 ) (0,1,0) (0,1,0)
- z 轴 z轴 z轴的方向向量最简单的是: ( 0 , 0 , 1 ) (0,0,1) (0,0,1)
同样的,任意给你一个三维空间下的向量,让你拆分为三个轴对应的向量表达式,我想也不会是难题。
换句话说,给你一个向量,我们能够从中看到三个向量在加和,如果把三个坐标轴看作三种信号呢?
是不是说,当我们在传输一个向量的时候,就完美的传输了多个信号?
再升级到四维,五维…N维,是不是就是传递了更多的信号?
对的!
我猜这或许就是CDM能够产生出来的数学基础吧。
这里很关键的是,信号能够被拆分,也就意味着不同的信号不会干扰其他信号。我们在选取坐标轴的方向向量时,应该注意到它们是完美正交的。
在向量里,正交的定义是:向量S和T规格化内积是0。
简单说就是:两个向量相乘的点积再除以向量分量的个数(向量能点积就意味着向量长度相同)。
带着以上的认识再来看CDM,就非常自然且很容易理解:
每一个站点有一个芯片序列,芯片序列解读为向量。站点之间的向量要互相正交。
假设A向C发送信号,B也向C发送信号。
A的芯片序列是: 00011011 00011011 00011011,这里常常把0表示为-1,拆分的时候更为方便。因此,
- A想发送1时,向量序列是: ( − 1 , − 1