我正在尝试使用GNURadio以20/40/80和160 MHz带宽模拟802.11 OFDM信号,从ofdm_tx.grc example开始。
使用这个例子,我可以简单地通过将sample_rate增加到20M来轻松生成20 MHz信号。但是,我需要帮助生成更高带宽的模式。
据我所知,带宽取决于信号中子载波的数量以及采样率。进一步的研究告诉我,对于802.11n 40 MHz模拟频道,我应该使用:
除了更改这些变量外,我还修改了unused_carriers,pilot_carriers和pilot symbol,如下所示:
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宽的输出,但它更像是this image中所见的802.11b形状(高于正方形)。
显然我错过了一些重要的东西,但我无法弄清楚是什么。
为了澄清,我不关心正在发送的数据,我只想生成正确形状和带宽的信号。 另外,要输出信号,我首先使用示例代码将数据写入文件,然后使用gnuradio将该文件直接写入USRP x300(UBX-160)。
非常感谢有关OFDM调制过程的任何帮助或说明。 感谢。
答案 0 :(得分:0)
您正走在正确的道路上 - OFDM系统的占用带宽只是采样率所定义的全带宽。
因此,40 MS / s将提供40 MHz的带宽。
对于正确的频谱形状,即正确的子载波间隔和旁瓣行为,您还必须将子载波的数量加倍(在OFDM中,它只是(I)DFT /(I)FFT的长度)并修改通道掩码,以便中心载波和最重要的正确数量的边缘载波仍未使用。
这当然意味着您每个OFDM符号还需要更多数据符号。
现在,你显然没有看到你想看到的东西 - 它甚至看起来非常像在那里发生的模拟事物。为了排除这种情况,我建议您只需将您发送到USRP的样本保存到文件中并进行分析。如果他们的数字频谱是正确的,那么您就会遇到硬件或测量问题。 我在这里的第一个猜测是欠载,即你的PC向USRP发送数据的速度太慢,导致不连续的情况。