0

我正在尝试使用 GNURadio 在 20/40/80 和 160 MHz 带宽下模拟 802.11 OFDM 信号,从ofdm_tx.grc 示例开始。

使用此示例,我只需将 sample_rate 增加到 20M 即可轻松生成 20 MHz 信号。但是我需要帮助生成更高带宽的模式。

据我了解,带宽取决于信号中子载波的数量以及采样率。进一步的研究告诉我,对于 802.11n 40 MHz 模拟通道,我应该使用:

  • fft 长度:128
  • 子载波数:114
  • 采样率:40 MHz

除了更改这些变量,我还修改了占用载波、导频载波和导频符号,如下所示:

occupied_carriers = (range(-57,-51) + range(-50,-21) + range(-20,-7) + range(-6,0)+range(1,7)+range(8,21) + range(22,50) + range(52,57),)
pilot_carriers = ((-51,-21,-7,7,21,51),)
pilot_symbols = ((1, 1, 1, -1,1,1),)

我还从 ofdm_carrier_allocator 块中删除了 sync_words。

在这些更改之后,我得到了一个 40 MHz 宽的输出,但它更像是 802.11b 形状(比正方形更高斯),如图所示

显然我错过了一些重要的东西,但我无法弄清楚是什么。

澄清一下,我不关心正在发送的数据,我只想产生正确形状和带宽的信号。此外,为了输出信号,我首先使用示例代码将数据写入文件,然后使用 gnuradio 将该文件直接写入 USRP x300(UBX-160)。

非常感谢有关 OFDM 调制过程的任何帮助或说明。谢谢。

4

2 回答 2

0

我知道我错过了一些简单的东西。

在对 usrp-users 邮件列表进行了快速讨论后,我从 Marcus D. Leech 那里得到了答案,我需要在将数据发送到 usrp 之前以数字方式对数据进行上采样。

http://lists.ettus.com/pipermail/usrp-users_lists.ettus.com/2018-May/056519.html

通过在将数据写入文件之前在流程图中添加一个有理重采样器,我将采样率从 40 提高到 100 MS/s。然后 X300 能够产生漂亮的 40 MHz 信号。

于 2018-05-10T15:18:57.227 回答
0

您走在正确的道路上 - OFDM 系统的占用带宽就是采样率定义的全带宽。

因此,40 MS/s 将提供 40 MHz 的带宽。

对于正确的频谱形状,即正确的子载波间隔和旁瓣行为,您还必须将子载波的数量加倍(在 OFDM 中只是 (I)DFT/(I)FFT 的长度)并修改信道掩码,因此中心载波和最重要的是正确数量的边缘载波仍未使用。

这当然意味着每个 OFDM 符号还需要更多的数据符号。

现在,你显然没有看到你想看到的东西——它甚至看起来很像那里发生的模拟事情。为了排除这种情况,我建议您将发送到 USRP 的样本保存到文件中并进行分析。如果他们的数字频谱是正确的,则说明您遇到了硬件或测量问题。我在这里的第一个猜测是欠载,即您的 PC 向 USRP 发送数据太慢的情况,这会导致不连续性。

于 2018-05-10T07:13:22.920 回答