如何向信号添加自定义前导码?

How to add custom preamble to the signal?

我们希望将 custom preamble 添加到信号中,有没有办法将 custom preamble 保存到调制解调器并将其加载到 phy[3],如中所示UnetDocumentation(sec 16.4).

是否有任何其他方法可以将前导码直接加载到信号中?

如果您只需要用信号传输前导码,您有两个选择:

  1. 您可以直接将其作为信号的一部分。
  2. 您可以在特定的索引方案(例如 phy[3])上设置前导码,然后将其用于您的传输。

方法一的优点是简单。方法2的好处是还可以用preamble来检测水中的信号

方法一比较简单,这里就不详细讨论了。我将重点向您展示方法 2 的工作原理:

第 1 步。设置序言。

如果您使用的是标准信号,例如m序列或线性调频信号,您可以通过指定信号的参数来进行设置。示例:

phy[3].preamble = Preamble.hfmUpSweep(240)  // 240-sample long hyperbolic up sweep
phy[3].preamble = Preamble.mseq(1023,2)     // 1023-chip m-sequence with 50% bandwidth

(在 unet shell 上输入 help phy[].preamble,并参考 Preamble API 文档了解更多信息)

如果您有自定义信号作为前导码,您可以直接指定基带信号:

phy[3].preamble = new Preamble(pre)

其中 pre 包含复数基带样本。

第 2 步。使用您的前导码进行传输。

传输基带信号时,您可以指定要使用的前导码。例如:

phy << new TxBasebandSignalReq(preamble: 3, signal: signal)

其中 3 指定应传输 phy[3] 前导码,signal 包含要在前导码后传输的基带信号样本。

TIP:如果要使用preamble进行信号检测,需要为scheme设置检测阈值(如phy[3].threshold = 0.25)。由于这不是本题的重点,就不多说了。

注意:虽然 Preamble class 支持任意长度的前导信号,实际的调制解调器可能有基于内存缓冲区的硬限制和基于软限制用于检测的计算负载。对于当今大多数实用的基于 UnetStack 的调制解调器,您可能希望将前导信号限制为 1024 个样本或更少(或与您的调制解调器供应商联系以了解硬件限制)。