Я пытаюсь смоделировать сигнал OFDM 802.11 в полосах пропускания 20/40/80 и 160 МГц с помощью GNURadio, начиная с примера ofdm_tx.grc .
Используя этот пример, я могу легко сгенерировать сигнал 20 МГц, просто увеличив частоту выборки до 20M. Однако мне нужна помощь в создании режимов с более высокой пропускной способностью.
Насколько я понимаю, ширина полосы определяется количеством поднесущих в сигнале, а также частотой дискретизации. Дальнейшие исследования показали, что для моделируемого канала 802.11n 40 МГц я должен использовать:
- длина фута: 128
- Количество поднесущих: 114
- Частота дискретизации: 40 МГц
Наряду с изменением этих переменных я изменил значения busy_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 МГц, но он больше напоминает форму 802.11b (более гауссовский, чем квадратный), как видно из этого изображения .
Очевидно, я упускаю что-то важное, но я не смог понять, что.
Чтобы уточнить, меня не волнует отправка данных, Я просто хочу выдать сигнал правильной формы и ширины полосы .
Кроме того, для вывода сигнала я сначала использую пример кода для записи данных в файл, а затем записываю этот файл непосредственно в USRP x300 (UBX-160) с использованием gnuradio.
Буду очень признателен за любую помощь или разъяснение о процессе модуляции OFDM.
Спасибо.