OFDM Calculator Generator

OFDM - Orthogonal Frequency Division Multiplexing, предлагаю небольшой софт для работы с этим весьма интересным и крайне трудном для анализа методом модуляции. Существует масса литературы, где довольно не плохо изложены принципы и методы формирования OFDM сигналов, но тем не менее ряд моментов не рассматривается. Кроме того, насколько могу судить, не существует на сегодняшний день инструментов для анализа этого вида модуляции, стандартный подход не позволяет гарантировать точность и правильность результатов, и по моим понятиям неприемлим в принципе. Однако, за неимением лучшего, приходится пользоваться методами и инструментами плохо подходящими для решаемой задачи. Собственно, если нас интересует анализ OFDM сигналов, как минимум мы должны четко представлять как сигнал формируется, и крайне желательно иметь возможность, сигнал синтезировать с точно известными параметрами, вообще это базовые моменты, и касаются не только OFDM, только в этом случае возможна разработка принципов и методов надежного определения параметров того или иного вида модуляции. Что касается анализа OFDM, на сегодня у меня нет четких и ясных методов, или они мне неизвестны, эта задача оказалась весьма не тривиальной, пока не могу похвастаться какими либо успехами, все достаточно туманно и не ясно, уйма времни и сил затраченных на решение, результата пока не принесли, по этому не будем заостряться на анализе, а рассмотрим синтез OFDM, и что из всего этого можно поиметь полезного. Что бы не рисовать одни и те же рисунки которые встречаются во всех источниках освещающих принцип OFDM, просто порекомендую более менее внимательно изучить весьма не плохое описание на английском языке на нашем сайте тем более, что именно на основе предложенного алгоритма написан и OCG. OCG - это программа для расчета и синтеза OFDM сигналов, как уже говорилось, указанная англоязычная статья, взята за основу не более того, из этой статьи может показаться, что синтез OFDM сигнала возможен только по расчетным параметрам, что вообще то не верно, кроме того автор слишком упирает на использовании FFT с размером блока 2^n, что на сегодня не является таким уж непреодолимым препятствием. Давайте посмотрим что можно получить с помощью OCG. После старта программа находится в режиме Calculate:




рассмотрим все поля по порядку:
FFT_Size/2 - размер блока FFT под который расчитываются возможные варианты, число целое, нет ограничения 2^n, это значит число может быть любое, ограничение есть на количество цифр, не больше пяти, так как на одну частоту приходится две "точки" FFT, то пользователь как бы задает максимальное количестово частот, реально блок FFT используется вдвое больший, мне показалось что так проще и наглядней, иначе сложно понять почему размер блока к примеру 40, частот 33, а программа ругается.
TonesMin - минимальное количество тонов которое может быть в OFDM сигнале
TonesMax - максимальное количество тонов которое может быть в OFDM сигнале, естественно максимальное количество тонов не может быть больше чем размер FFT блока минус один, минус один, потому, что нулевая частота(постоянная составляющая) не используется никогда, она всегда равна нулю. Min = Max означает, что тонов будет(если это возможно) ровно столько сколько указано.
FMin - самая нижняя частота спектра сигнала OFDM, ниже этой частоты гарантированно не будет ничего использоваться.
FMax - самая верхняя частота спектра сигнала OFDM, выше этой частоты гарантированно не будет ничего использоваться.
DataRate(bps) - по замыслу автора вышеупомянутой статьи этот параметр задает макисмальную техническую скорость, однако я бы это назвал общей максимальной скоростью манипуляции, так как реально техническая скорость сильно зависит от вида модуляции в канале, для PSK-2 она равна общей скорости манипуляции, для PSK-4 удвоенной и т.д., а для разных видов модуляции в каналах вообще теряет всякий смысл, то есть у меня это именно общая скорость манипуляции, или, если по другому, максимальная техническая скорость для PSK-2 конкретно.

По умолчанию все поля заполнены примером, если теперь кликнуть Calculate, результаты расчета возможных вариантов будут выведены в текстовое окно, примерно так:



SamplingRate - частота дискретизации OFDM сигнала с расчетными параметрами
FirstTone - самый нижний тон OFDM сигнала, рядом его частота в Гц
LastTone - самый верхний тон OFDM сигнала, рядом его частота в Гц
TonesTotal - всего тонов в OFDM сигнале
SymbolRate - частота манипуляции OFDM сигнала, так как во всех каналах это происходит одновременно, так же является и частотой манипуляции в канале.
DeltaFreq - разнос частот между каналми в Гц
SamplesAll - количество отсчетов на один такт манипуляции, не может быть меньше чем FFT_Size*2, это из принципа формирования OFDM сигнала
SamplesGuard - количество отсчетов приходящихся на циклический префикс, не может быть больше FFT_Size*2, по крайней мере в этой программе, я не вижу в этом большого смысла, ограничено мной.
GuardTime - время которое занимает циклический префикс в миллисекундах, этот параметер показывает устойчивость OFDM сигнала к дестабилизирующим факторам, например к задержкам распространения, на КВ это очень актуально, обычно чем больше этот показатель тем лучше, но падает скорость передачи, как всегда не все однозначно.

Так как подразумевается дальнейший синтез по результатам расчетов, в окно отображения выводятся только те варианты которые имеют целую частоту дискретизации, реально вариантов больше, не целые частоты дискретизации хотя и не мешают синтезировать сам сигнал, но мешают сохранить сигнал в wav файле, по этому они и не выводятся.

Сам синтез, потребует заполнения полей по результатм расчетов, так же по умолчанию установлены значения примера.



FFT_Size/2 - размер блока FFT(вдвое больший) который будет использован при синтезе, по умолчанию это значение равно FFT_Size/2 использованому при Calculate
SamplingRate - частота дискретизации OFDM сигнала, wav файл синтезированного сигнала создается именно с ней
FirstTone - первый(самый нижний) тон сетки частот OFDM сигнала
TonesTotal - общее количество тонов в OFDM сигнале
SamplesGuard - количество отсчетов приходящихся на циклический префикс, если равно 0 значит циклический префикс не используется
Modulation - модуляция в канале
GuardAsZero - какой вид циклического префикса использовать, или стандартный, когда часть отсчетов из начала конца добавляется в конец начало (флажок не установлен), или другой, когда в конец начало просто дописываются нули(флажок установлен). И тот и другой вид префикса используется в настоящий момент в эфире, на реальных сигналах, каждый имеет как положительные так и отрицательные стороны.

Если поля заполнить не от балды, а по реальным расчитанным данным, мы получим в результате синтеза OFDM сигнал с точно известными параметрами. Если в результате расчета окно вывода пустое и нет ошибок в параметрах, значит нельзя получить OFDM сигнал с текущими требованиями. Окна ввода где цифры не вяжутся с простейшей логикой окрашиваются в красный цвет, например вы задаете отрицательную частоту, или количество отсчетов циклического префикса больше чем реальный размер блока (FFT_Size/2)*2 и т.д.

Давайте синтезируем сигнал с параметрами по умолчанию, вид его такой:



Около 60 секунд сам OFDM сигнал со случайными данными, и примерно 30 секунд все тоны из которых он состоит.

Примерно так все это работает. Ну и теперь самое интересное, что это дает в принципе? Много, очень много, будем крутить программу получая различные по характеристикам OFDM сигналы и смотреть как это все выглядит для аналитика, разумеется мы не будем рассматривать все аспекты и проблемы, но кое какие особенно интресные моменты конечно разберем, остальное в ваших руках и зависит от того насколько оно вам интересно и на самом деле нужно.

Во первых, и это важный момент, если циклический префикс не используется, то различить частоты визуально на спектре невозможно в принципе, OFDM сигнал в этом случае выглядит как относительно ровный шум заполняющий ограниченый спектр. Второе, классический циклический префикс, не zero, приводит к визуализации частот на спектре, они становятся различимы, чем больше длина циклического префикса, тем лучше различаются частоты на спектре, в пределе когда длина циклического префикса равна FFT_Size*2 частоты полностью разделяются, этот предельный случай эквивалентен снижению скорости манипуляции вдвое.



Наличие циклического префикса нарушает чистоту тонов, хорошо видно по последним 30 секундам относительного базового варианта(без префикса SamplesGuard = 0), что вызывает определенные проблемы с созданием чистых пилот тонов.




На самом деле это очень малая часть того, что позволяет заметить/понять "управляемый синтез", реально вы не ограничены только расчетными OFDM сигналами, на вкладке Synthese можно заполнять поля самому, разумеется понимая, что делаешь, и получать OFDM сигналы с любыми параметрами, разумеется в рамках тех ограничений которые имеет программа, например вы не можете "выключить" канал или каналы, задать пилот тоны, задать модуляцию QAM и т.д. но это уже другая история. Для основной массы экспериментов или для разработки/отладки демодулятора эта программа вполне достаточна, и надеюсь поможет кому то. getQuotation();






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.