我正在尝试使用 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 调制过程的任何帮助或说明。谢谢。