我试图模拟一个802.11 OFDM信号在20/40/80和160个MHz带宽使用GNURadio,从tx.grc实例开始。
使用这个例子,我可以很容易地生成一个20 MHz信号,只需将sample_rate提高到20M。然而,我需要帮助产生更高的带宽模式。
据我理解,带宽是由信号中的子载波数以及采样率决定的。进一步的研究告诉我,对于802.11n 40 MHz模拟信道,我应该使用:
除了更改这些变量外,我还修改了occupied_carriers、pilot_carriers和导频符号如下:
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),)我还从sync_words块中删除了ofdm_carrier_allocator。
在这些更改之后,我得到了一个40 MHz宽的输出,但是它更像是802.11b的形状(更多的是高斯而不是平方),就像在这幅图像中看到的那样。
显然,我错过了一些重要的东西,但我一直无法弄清楚是什么。
为了澄清,我不在乎数据被发送,我只是想产生一个正确的形状和带宽的信号。另外,为了输出信号,我首先使用示例代码将数据写入文件,然后使用gnuradio直接将该文件写入USRP x300(UBX-160)。
对于OFDM调制过程的任何帮助或澄清将不胜感激。谢谢。
发布于 2018-05-10 15:18:57
我知道我错过了一些简单的东西。
在对usrp用户邮件列表进行了快速讨论后,我从马库斯·D·利赫那里得到了答案,我需要在将数据发送给usrp之前先对数据进行数字化采样。
Lists.ettus.com/2018-5月/056519.html
通过在流图中添加一个有理重放器,然后将数据写入一个文件中,我将采样率从40提高到100 MS/s,然后X300能够产生一个漂亮的40 MHz信号。
发布于 2018-05-10 07:13:22
您所处的路径是正确的-- OFDM系统占用的带宽只是采样率定义的全部带宽。
因此,40 MS/s的带宽将达到40 MHz。
为了得到正确的频谱形状,即正确的子载波间隔和副载波特性,您还必须将子载波的数量翻一番( OFDM中的子载波是(I)DFT/(I)FFT的长度)并修改信道掩码,以便中心载波和最重要的是正确的边缘载波数仍未使用。
当然,这意味着每个OFDM符号还需要更多的数据符号。
现在,你显然没有看到你想要看到的东西--它看起来甚至很像发生在那里的模拟事物。为了排除这种情况,我建议您将发送到USRP的样本保存到文件中并进行分析。如果他们的数字频谱是正确的,你有一个硬件或测量问题。我在这里的第一个猜测是运行不足,即你的PC在向USRP发送数据方面太慢的情况,并且导致不连续性。
https://stackoverflow.com/questions/50262375
复制相似问题