Касаясь темы анализа OFDM сигналов, нельзя умолчать о
существовании достаточно известного посетителям форума
"Радиосигналы" анализатора SA. Как известно, анализатор
SA был разработан форумчанином Сергеем Михайловичем
Макаровым. В ходе разработки многие возникавшие
проблемы выносились автором под ником SERGUA6 на
форум и таким образом решались сообща. В целом,
анализатор SA оказался отлично выполненным коммерческим
проектом. На форуме до сих пор появляются сообщения с
вопросами о способах приобретения программного
обеспечения SA.
В своих анализах OFDM сигналов я не использовал
анализатор SA по ряду причин. Главной из них была
необходимость полного (на сколько это окажется
возможным) понимания сути процессов анализа. Полного
настолько, чтобы управлять этими процессами,
модифицировать их и, главное, контролировать точность
анализа.
Начались мои попытки анализа в 2007 году, т.е. значительно
раньше, чем появился SA. Многие форумчане, вероятно,
помнят, что в 2009 г. мною были размещены две или три
версии исполняемых файлов моего анализатора с достаточно
подробными инструкциями по его использованию. Позже
были размещены несколько статей, в которых тем или иным
образом использовались результаты моих анализов.
С момента появления SA я перестал размещать на сайте
материалы, касающиеся принципов работы моего анализатора,
но не перестал его развивать и совершенствовать для себя.
Изредка мне поступали предложения сделать доступными для
форумчан исходные тексты моих программ. В конце концов
я решился на подготовку этих текстов к размещению. Сами
тексты и исполняемые модули размещены в прилагаемом
к статье файловом архиве. Далее в статье будут изложены
особенности и ограничения размещенного пакета программ.

НАЗНАЧЕНИЕ. Изначально меня интересовало только
применение OFDM в системах однополосной КВ радиосвязи.
Такой интерес объясняется очень просто. Именно этим я,
в основном занимался в течение более 35 лет своей жизни
в профессии. Уместно напомнить о существовании в анналах
сайта нескольких моих статей о том периоде.
С учетом этого интереса в некоторых программах в
числе параметров, устанавливаемых по умолчанию, указаны
границы ОБП полосы 300 и 3400 Гц. Изменение этих границ,
конечно, возможно для тех, кто владеет основами
программирования, но все свои анализы я проводил,
используя эти границы. Поэтому я не могу гарантировать
работоспособность программы при существенном расширении
этих границ.
Впрочем, как показал опыт, наличие этих границ мало
влияет на точность определения величин временных
интервалов - тактового и защитного и, как следствие, величин
частотного разнесения поднесущих и скорости манипуляции.
Естественное влияние этих границ сказывается при
определении числа поднесущих в сигнале. Поэтому для моего
анализатора требуется устранять спектральные сдвиги
в принятом сигнале, допущенные радионаблюдателем из-за
незнания точной частоты настройки радиопередатчика.
Иначе число поднесущих определить не удасться.

ЯЗЫК И СРЕДА ПРОГРАММИРОВАНИЯ. На практике
мне пришлось активно использовать два языка
программирования. До появления персональных ЭВМ я
программировал на Фортране. После того, как стали
доступны ПЭВМ моим языком стал Турбо-Паскаль. Оба
языка позволяли мне решать все инженерные задачи,
встречавшиеся в моей основной профессии разработчика
и испытателя КВ модемов аппаратной (т.е. не программной)
реализации.
Понятно, что средой программирования была
Интегрированная инструментальная оболочка фирмы
Borland, разработанная для дисковой операционной системы
DOS. К началу разработки анализатора мне по всем
канонам следовало бы перейти на программирование в
системе WINDOWS. Однако по ряду причин этого делать
я не стал. Главной причиной было полное отсутствие какой-
либо мотивации. Делать коммерчески достойную разработку
я не собирался, а решать все требуемые для анализа задачи
я мог, пользуясь старым багажом.
Итак, все приложенные программы разработаны на
Турбо-Паскале и работают в имитированной среде DOS.
Совершенно не знаю, будут ли они работать на машинах
Apple, но в OS WINDOWS они действуют вполне прилично.
Все же подвисания программы полностью не исключаются.
Происходят они, хотя чрезвычайно редко, и на моем
нетбуке SAMSUNG NC10. Я с этим мирюсь.

СТИЛЬ ПРОГРАММИРОВАНИЯ. Выбранный стиль
программирования предельно прост. По моему мнению
это облегчает чтение и понимание сути программ даже
начинающим программистам. Надеюсь, что это же
позволит любому при необходимости корректировать
тексты под свои потребности.
При подготовке текстов к размещению были существенно
расширены диалоговые части текстов. В частности, многие
константы, обычно включаемые в модуль CONST
заголовка программ, у меня вводятся в режиме диалога
с пользователем. Это, надеюсь, обеспечит работу
программ и в том случае, когда борландовская
Интегрированная оболочка у пользователя отсутствует.
Я отказался от идеи совместить все утилиты в теле
одной программы. К примеру, имевшиеся ранее у меня
в программе анализатора утилиты, обеспечивавшие
передискретизацию сигнала и его спектральный сдвиг,
теперь выполняются отдельными специализированными
программами.
Я с большим сожалением отказался от возможности
руссифицировать программы. Просто найденный мною
в Интернете руссификатор показался мне не очень
удобным. А вот также найденный в Интернете модуль,
обеспечивающий получение экранных снимков, включен
мною в тексты многих программ.
Тексты программ старался документировать
посредством внесения многих комментариев. С этой же
целью в тексте выделены некоторые надписи, выводимые
при анализе на экран монитора. Фактически эти надписи
являются дополнительными комментариями при чтении
программ.

СОСТАВ АРХИВА ФАЙЛОВ. В приложенном архиве
размещена та часть программного обеспечения, которую
мне удалось подготовить к марту 2014 года. Над
оставшимися программами еще предстоит поработать.
Впрочем, может это и не понадобится. Все будет зависеть
от интереса форумчан к моему размещению. Мне бы
хотелось завести на форуме специальную тему с условным
названием "SOFT для OFDM", где бы и велось обсуждение
всего того, что связано с моим пакетом. Если это окажется
возможным, это будет сделано.
Впрочем, содержание пакета вполне достаточно для
проведения анализа. Остающиеся необработанными
программки предназначены, в основном, для повышения
точности анализа и, потому, могут еще подождать.
Архив содержит три папки - PAS, EXE и DEMO.
OFDMANAL - это, собственно, программа анализатора.
Работает только с WAV-файлами. Позволяет определить
практически все параметры сигнала, увидеть и
зафиксировать сигнальные созвездия. Кроме того
обеспечивается просмотр и фиксация спектра амплитуд
поднесущих на любом тактовом интервале.
FILEFORM - утилита, обеспечивающая подготовку
сигнального файла для последующего анализа. Утилита
по указаниям пользователя вырезает из исходного
сигнального файла задаваемый фрагмент и ликвидирует
начальную и конечную паузы, имевшиеся в исходном
файле при его создании или появившиеся при вырезании
фрагмента.
SHIFTER - утилита, обеспечивающая формирование
файла с компенсированным спектральным сдвигом.
Величину компенсируемого сдвига задает пользователь.
GENERIC - утилита, обеспечивающая генерацию
OFDM сигнала с параметрами, задаваемыми
оператором. Конечно, для анализа эта утилита особой
пользы не имеет, но мне показалось полезным ее
включение в пакет.
TRANSWAV - утилита, несколько расширяющая
возможности утилиты FILEFORM. Кроме формирования
сигнального файла для анализа она корректирует
заголовок WAV файлов, после чего они становятся
читаемыми в SV+ и SA-free.
Кроме того утилита формирует сигнальные файлы
в текстовом формате с расширением TXT. В первой
строке таких файлов размещается величина частоты
дискретизации. В остальных строках - величины
отсчетов сигнала в формате integer или real.
TXT файлы в ряде случаев оказываются весьма
полезны. Например, в этих файлах примитивно просто
вырезаются паузы в начале и конце выбранного для
анализа фрагмента сигнала.
TXTTOWAV - утилита, преобразующая TXT-файл,
сформированный утилитой TRANSWAV, в WAV-файл.
Папка EXE дополнительно содержит программы
с расширениями BGI и TPU. О их назначении будет
сказано чуть позже.
Папка DEMO содержит совокупность WAV-файлов,
созданных программой GENERIC. Эти файлы могут
оказаться полезными при освоении процедур анализа.
В отличие от эфирных сигналов файлы этой папки либо
не содержат никаких погрешностей синтеза (идеальны),
либо созданы с наличием только одного или двух-трех
мешающих воздействий, величины которых
зафиксированы в поясняющей записке ЧИТАЙ.TXT.
В заключение этого раздела напомню, что при
наличии интереса со стороны форумчан содержание
файлового архива может быть дополнено еще
несколькими утилитами, позволяющими повысить
точность анализа.

ПОДГОТОВКА К РАБОТЕ. Во всех программах
полагается, что нужные для их работы файлы и все
файлы, образуемые самими программами, находятся
в той же директории, что и сама программа. Поэтому
в компьютере пользователя должна быть создана
отдельная рабочая папка анализатора, в которой
должны быть размещены все файлы, распакованные
из папки EXE. В этой папке, кроме разработанных мною
программ содержатся 3 модуля из упоминавшейся
выше Интегрированной инструментальной оболочки,
ф. Borland. Это файлы с расширением BGI и TPU.
Они абсолютно необходимы для работы Паскаль-
программ. Кроме них в папке EXE имеется модуль
BMP_PLUS.TPU. Без него невозможно получение
экранных снимков. Анализируемый файл также
должен быть размещен в рабочей папке анализатора.
При наличии у пользователя полной
Интегрированной оболочки, иными словами -
пакета Турбо-Паскаль версии не ниже 6.0 - основные
файлы этого пакета надо также разместить в
рабочей папке анализатора. При этом для оператора
открывается возможность корректировки текстов
программ из папки PAS с последующим обновлением
EXE-файлов.
После формирования рабочей папки целесообразно
убедиться в том, что процедура анализа стала
возможной. Для этого необходимо запустить на
исполнение программу OFDMANAL, указав ей имя
какого-либо WAV-файла из папки DEMO, заранее
скопированного в рабочую папку анализатора.
Перед анализом стороннего сигнала - эфирного
или синтезированного другими операторами -
необходимо этот сигнал предварительно обработать
программой FILEFORM. Файл TEMPO.WAV,
полученный в результате работы этой программы,
в дальнейшем должен использоваться в качестве
исходного сигнального файла.

НАЧАЛО АНАЛИЗА. Все комментарии в тексте
программы и выводимые на экран сообщения по
сути являются закодированными на латинице
фразами некоего языка, который можно условно
назвать англо-русским суржиком. Поэтому здесь
я считаю полезным изложить некоторые разъяснения
с целью минимизировать недопонимание, которое
может возникнуть из-за плохого моего владения
английским. О причине, по которой тексты не были
руссифицированы, упоминалось выше.
Первый значимый модуль программы назван
ANALYSIS_PREPARATION. В нем запрашивается имя
файла, предназначенного для анализа, и проверяется
соответствие структуры этого файла формату WAV.
Проверенный файл из байтового WAV-формата
трансформируется в TXT - формат, значения его
отсчетов нормируются, из них исключается постоянная
составляющая, устраняются остатки пауз в начале и
конце, после чего сигнал проверяется на наличие
клиппирования.
Следующим выполняется модуль
ACF_SEARCHING, с помощью которого вычисляются
отсчеты автокорреляционной функции анализируемого
сигнала. График АКФ выводится на экран монитора.
По абсциссе всплеска АКФ программа определяет
длительность интервала ортогональности Tort и
обратную ей величину частотного разнесения
поднесущих deltaF. После этого оператору
предлагается выбрать один из двух способов
продолжения анализа.
Выбор способа, обозначенного литерой G,
запускает автокорреляционный поиск длительности
тактового интервала и границ тактовых интервалов.
Другой способ, обозначенный литерой S,
позволяет оператору выбрать альтернативный
путь анализа, в ходе которого оператор может
использовать имеющуюся у него априорную
информацию о параметрах анализируемого
сигнала. На этом пути также две возможности.
При выборе пути, обозначенного литерой С,
оператор может ввести величину Tort, отличающуюся
от машинного расчета, после чего следует
продолжение такое же, как при выборе литеры G.
При выборе пути по литере B оператор должен
ввести длительности Tort и тактового интервала
- Tbaud. После этого программа будет искать только
расположение границ тактовых интервалов среди
отсчетов в анализируемом файле.
Таким образом, в начале анализа определяются
основные параметры сигнала. Число подканалов и
вид манипуляции определяются в ходе продолжения.

ПРОДОЛЖЕНИЕ АНАЛИЗА. При продолжении
оператор снова выбирает один из двух путей. Он
либо соглашается с предложенными программой
результатами, выбирая литеру A, либо указывает
альтернативный набор параметров среди
других рассчитанных программой, выбрав литеру T.
Отвлечемся на момент от основной линии анализа
и обсудим результаты выбора литеры M. Я посчитал
необходимым ввести этот небольшой блочок для
иллюстрации того, что и в моем анализаторе, и в
анализаторе SA решаются одни и те же задачи.
Разница состоит лишь в том, что в SA многие
процедуры автоматизированы и все они скрыты от
оператора. Разумеется, что для коммерческого
продукта, каковым безусловно является SA, эти
свойства являются и необходимыми, и
предпочтительными.
При выборе литеры M оператор может видеть
тот самый магический треугольник, о котором так
много говорилось и на форуме, и в статьях
разработчика SA. Чем ближе форма индицируемой
фигуры к равнобедренному треугольнику, тем выше
точность анализа.
Продолжим об анализе. После решения вопроса
с длительностями интервалов и расположением их
границ программа определяет количество
поднесущих, а после этого - генерирует сигнальные
созвездия. Просмотр созвездий как фазо-разностных,
так и абсолютно-фазовых позволяет оператору
определить вид манипуляции.
Почти всегда форма созвездий, особенно
абсолютно-фазовых требует коррекции. Для этого
после просмотра созвездий оператор получает
соответствующее информационное сообщение.
Содержание этого сообщения заслуживает
особого обсуждения.

КОЛИЧЕСТВЕННАЯ ОЦЕНКА РЕЗУЛЬТАТОВ.
Для оценки точности и надежности анализа программа
на каждом тактовом интервале сравнивает величины
отсчетов, взятых из защитного интервала, с
соответствующими им отсчетами из начала тактового
интервала. Понятно, что в идеале в каждой паре
отсчетов модули отсчетов будут одинаковыми.
Известные свойства КВ канала и погрешности
обработки сигнала на передаче и приеме это
равенство нарушают. Количественно степень
нарушения может оцениваться коэффициентом
корреляции, что и делается в программе.
Программа вычисляет следующие коэффициенты
корреляции:
K1 - усредненный по первой половине тактовых
интервалов коэффициент корреляции всех
отсчетов из защитного интервала и
соответствующих им отсчетов из начала тактового
интервала;
K2 - такой же, как K1, коэффициент корреляции,
но вычисленный для второй половины тактовых
интервалов;
K3 - усредненный по всем тактовым интервалам
коэффициент корреляции отсчетов из первой
половины защитного интервала и соответствующих
им отсчетов из начала тактового интервала;
K4 - такой же, как K3, коэффициент корреляции,
но вычисленный для отсчетов из второй половины
защитного интервала.
Величины K1 и K2 выводятся во второй строке
упоминавшегося выше информационного
сообщения. Если их величины примерно одинаковы
и близки к единице, то можно быть уверенным, что
длительность тактового интервала и расположение
границ между ними определены правильно, а анализ
сигнала может считаться достаточно надежным.
Величины K3 и K4 используются для оценки
точности определения границ тактовых интервалов.
По результатам их сравнения в 7-ой строке
упоминавшегося сообщения программа указывает
рекомендацию по изменению величины Edge,
размещенной в 4-ой строке сообщения. Edge -
номер отсчета, отмечающий одну из границ тактовых
интервалов. Рекомендация выдается в 7-ой строке
в виде:
increase - сдвинуть границу вправо, т.е. увеличить
величину Edge;
decrease - сдвинуть границу влево, т.е. уменьшить
величину Edge;
NO - коррекция величины Edge не требуется.
О том, как выполнить эту рекомендацию, будет
сказано чуть позже.
Дальнейшие действия оператора определяет
выводимое на экран GRAND MENU.

GRAND_MENU. Это меню предоставляет оператору
9 возможностей. Кратко их опишем.
При выборе литеры D будут индицироваться
сигнальные созвездия разностных фаз. Этот режим
устанавливается и по умолчанию.
При выборе литеры P будут индицироваться
созвездия абсолютных фаз. Четкие и внятные
абсолютно-фазовые созвездия могут быть
получены только при достаточно точном анализе.
Выбор литеры N позволяет сменить номер
поднесущей для которой генерируются сигнальные
созвездия.
Выбор литеры F позволяет варьировать в небольших
пределах величину частотного разнесения поднесущих.
Такая возможность востребована для получения
четких сигнальных созвездий в абсолютных фазах.
Выбор литеры L позволяет варьировать величину
длительности тактового интервала. Такая возможность
полезна при анализе сигналов с большим защитным
интервалом, при котором длительность Tbaud
определяется с пониженной надежностью.
Выбор литеры U позволяет смещать границу
тактовых интервалов, что может потребоваться в ряде
случаев, особо, при использовании неродных частот
дискретизации и сигнальных файлов большого объема.
Рекомендуемое программой направление коррекции
указывается на упоминавшемся выше информационном
сообщении.
Выбор литеры Z позволяет менять число тактовых
интервалов в анализируемом последовательности тактов.
По умолчанию эта величина устанавливается равной 50
тактам. Получение четких сигнальных созвездий при
большем числе тактов свидетельствует о высокой
надежности результатов анализа. Установленное число
тактовых интервалов индицируется в 5 строке
упоминавшегося информационного сообщения.
Выбор литеры W позволяет просматривать сигнальные
созведия в различных участках анализируемого сигнала.
Каждый из участков вмещает 50 тактовых интервалов.
Для просмотра доступен любой из имеющихся в сигнале
таких участков. Если сигнальные созвездия хороши на
любом из участков, то остается только радоваться
качеству проведенного анализа. Просмотр по участкам
может оказаться полезным при передискретизации
анализируемого сигнала. Номер выбранного участка
индицируется в 6-ой строке информационного
сообщения.
Выбор литеры C выводит программу на
заключительный этап анализа. На этом этапе
определяются величины амплитуд поднесущих на
заданном оператором номере тактового интервала.
Результаты выводятся в виде своеобразного спектра,
названного в программе LINEDSPECTRUM.
Сопоставление спектров на нескольких смежных тактовых
интервалах позволяет судить о скорости и природе
замираний сигнала, а также о наличии или отсутствии
амплитудной манипуляции поднесущих.
Вот, пожалуй, и все, что я могу предложить для
предварительного знакомства с предлагаемым пакетом.
Если в сообщениях форумчан выяснится, что нужны
дополнительные пояснения, они будут незамедлительно
представлены. Желаю успехов в анализе OFDM!
программа.