为什么CDMA如此复杂,这种更简单的解决方案不可行吗?

信息处理 数字通讯
2022-01-24 21:07:22

我现在正在阅读码分多址方法 ( CDMA ),它用于多个主机同时发送数据

其背后的主要思想是使用正交向量基础将多个比特流编码为一个,通过链路发送连接的流,然后针对每个单独的消息对流进行不同的解码。

让我感到困惑的是,在数字逻辑中引入了负数,以及 0 表示没有信号

当我第一次听说这种编码存在时,我对它应该如何工作的第一个想法与原来的不同,它看起来更简单。

有人可以检查我的方法并添加评论吗?为什么不使用它来代替 ORIGINAL CDMA?

我的解决方案概述

我取n 个正交向量(其中xor是我的向量空间中的加法运算),每个向量对应一个芯片码。然后,如果它是1我将每一位编码为芯片代码,否则编码为 0最后,我将所有位序列或在一起并发送连接的结果。在另一端,接收者可以将比特流分解独特的部分,并读取每个主机的消息。

更详细的解决方案

  1. 假设

    • n台主机(编号从0n - 1),它们都想使用同一条链路同时发送b

    • 接收者得到一个加入的比特流,但只对读取一个主机的消息感兴趣(WLOG 是从第 0 个主机发送的消息)。

  2. 问题:创建一个满足假设的协议。

  3. 我的解决方案

    • 对于第 i 个主机,为他分配一个2^i形式的芯片代码(这里是幂不是 xor),用binary编写。将此芯片代码称为 c(i)例如:

      Chip code 1000..00 would be given to host 0 
      Chip code 0100..00 would be given to host 1
      ...
      Chip code 0000..01 would be given to host n-1.
      
    • 每个都将使用n位进行编码。

      if (host i wants to send 0) {
          encode it as 0000...00  // n zeroes 
      } else {
          encode it as c(i)
      }
      
    • 对于我希望发送第 j位的主机,将编码位称为e(i, j)例如:

      if (host i wants to send a bit stream, such that j-th bit is 1) { 
          e(i, j) = c(i)
      } else {
          e(i, j) = 0;
      }
      
    • 对于每个j,计算

      d(j) = e(0, j) ^ e(1, j) ^ ... ^ e(n - 1, j)  // xor operation here
      
    • 连接d(0), d(1), ... d(n - 1) 并通过链接发送这些n * b位。这将是另一端的接收者应该接收的加入流。

    • 希望读取主机 0发送的数据的接收者可以查看 ( 0 - th , n - th , 2n - th , ..., b(n-1) - th ) 位以查看第一台主机发送了什么。

    • 该解决方案比原来的解决方案更简单,因为它只使用xor操作进行编码,并且数字只是二进制(即在进行向量加法时没有-2,+3)。QED。

这个解决方案有效吗?如果是,为什么不使用它?我能猜到的最好理由是我们想区分主机发送什么什么都不发送。还有其他原因吗?

撇开问题不谈:在 CDMA 的背景下,什么是“近乎正交”的向量?

1个回答

您的解决方案有效,它被称为“时分多址”(TDMA)。基本上,您为每个发射机分配时隙。

与 TDMA 相比,CDMA 有几个优点,但也有其自身的缺点。这两种方案都不如 OFDMA 等更现代的技术。

TDMA的主要缺点:

  • 在数据速率恒定的情况下,时间片会随着发射机数量的增加而变窄。这意味着带宽也会增加。使用 CDMA,您可以通过添加正交码字来增加发射机的数量而不增加带宽。

  • TDMA 要求发射机之间非常精确的同步。保持大量移动单元同步以使它们不会在另一个单元的时隙内传输是非常困难的。这可以使用保护带来解决,但这会降低效率。

CDMA的几个优点:

  • 对衰落和多径有更强的抵抗力。CDMA 反射相互正交,因此它们相互抵消。

  • 如果代码是私有的,那么就有一定程度的固有隐私。