Система пространственного позиционирования для авиации (применяем FPGA)
Пролог В любой статье, посвященной FPGA, в комментариях рано или поздно появляется мысль, дескать «прикольная штука, собрал простой проект, помигал светодиодами, а что с этим сделать полезного — ума не приложу». Кто-то под FPGA создает игры, кто-то портирует стандартные процессоры старых времен, но все это позиционируется в первую очередь в качестве развлечения и освоения технологии. И действительно, технология FPGA в применении «для дома, для семьи» слишком дорога и явно избыточна. Сегодня я постараюсь рассказать о системе, в которой FPGA находит свое гармоничное применение исключительно в мирных и общественно-полезных целях (никаких механизмов для биржевых спекуляций, вуайеризма или убийства себе подобных). Впрочем, как можно будет заметить из дальнейшего рассказа, значительная часть повествования будет уделена предметной области и уровню системного проектирования.Краткая предыстория такова — одно крупное отечественное предприятие получило наказ (не уверен, было ли это заказом, поэтому назовем просто «наказ») создать систему навигации для одного отечественного аэропорта. В принципе, у них был опыт создания подобных систем, однако тут требовались специальные знания по ряду технологий, в связи с чем были привлечены специалисты по разработке устройств на базе FPGA. Собственно, рассказ и будет вестись с точки зрения подобного специалиста, многие другие вопросы вполне могут оказаться упущены за незнанием…Постановка задачи Основной задачей системы является «наблюдение» за всеми наземными объектами, ездящими по территории аэропорта, сведение информации воедино, отображение на рабочем месте оператора, и, возможно, прочие сервисы автоматизирующие контроль над безопасностью перемещения. Дальнейшее развитие системы предполагало ее использование и для [законно] летающих объектов в окрестностях аэропорта. Штатным решением данной задачи является технология ADS-B, предполагающая, что каждое воздушное судно имеет специальный приемопередатчик (транспондер), передающий различные данные в эфир на частоте 1090 МГц в специальном формате с использованием амплитудной модуляции. В качестве таких данных могут выступать и координаты воздушного судна. В последнее время имеется тенденция установки подобных транспондеров и на наземные машины служб аэропорта. Недостатком подобной системы является то, что координаты определяются самим объектом (на базе GPS/GLONASS/Galileo или более древних технологий), а системе навигации остается лишь доверять им. Даже если откинуть возможность умышленного искажения данных, точность их не особо велика и может быть критичной для наземных машин. Другой часто используемый вариант — активные радары, засвечивающие все объекты в ближайших окрестностях. Недостатком этой технологии является невозможность идентификации объектов, а так же зависимость между размером объекта и размером/яркостью метки на радаре.В последнее время все большее распространение получает гибридная технология, сочетающая в себе преимущества двух этих подходов, базирующаяся на так называемой мультилатерации (MLAT). За более детальным описанием я отправлю всех желающих на хороший любительский ресурс, а сам вкратце поведаю общую идею. Каждый современный гражданский самолет (справедливо для крупных лайнеров, в малой авиации все сложнее) постоянно посылает в эфир (на самом деле по запросу, но сейчас это не важно) сообщения в стандарте ADS-B Mode-S. Эти сообщения могут быть приняты одиночным приемником и тогда нам остается довольствоваться их внутренним содержимым. В технологии MLAT используется множество приемников с известными координатами. В этом случае у нас появляется дополнительная информация в виде времени приема сообщения от каждого из приемников. Абсолютное время отправки сообщения самолетом нам неизвестно, однако известна разница времен прихода сообщений относительно приемника, выбранного базовым. Если считать, что радиоволны в эфире распространяются равномерно и прямолинейно (вполне возможное допущение для нашей задачи), мы получаем разницу в расстояниях от самолета до приемников относительно базового. На основе этих данных, вооружившись циркулем и линейкой (лучше все-таки компьютером с 3D-ускорителем) нетрудно установить координаты самолета относительно приемников, после чего пересчитать их в стандартные.
Изначально технология MLAT использовалась для старых типов транспондеров, не поддерживающих режим ADS-B Mode-S (исключительно Mode-A, реализация которого заметно проще). Теперь же все это интегрируется в общую систему под названием ADS-X (Extended ADS). Именно такого рода система и была выбрана к использованию. Следует отметить, что в мире (да и в России), конечно же есть подобные эксплуатируемые системы западных производителей, однако имелось желание (в том числе политически-обусловленное) создать отечественную систему подобного рода.
Можно выделить три типа архитектуры системы:
Независимые приемники с собственными источниками тактовых сигналов; Приемники с общим синхронизирующим тактовым сигналом; Общий приемник, получающий аналоговые сигналы от антенн. Первый тип архитектуры является универсальным с точки зрения размещения на местности, однако для него остро стоит проблема синхронизации часов приемников. Современные модули GPS имеют точность формирования временных меток порядка 100–200 нс. Как известно, радиоволны распространяются со скоростью света (300 000 км/с). Таким образом, погрешность измерения времен в 100 нс даст нам оценку погрешности позиционирования в 30 м. Вполне достаточно для управления воздушным движением, однако не подходит для наземных машин — здесь требуется точность хотя бы 3–5 м. В итоге, для реализации данной архитектуры требуется использовать более сложные технологии для синхронизации часов приемников.Второй и третий тип архитектуры избавлен от подобной проблемы, однако требует непосредственной связи приемников (антенн) с центром обработки информации, что приводит к ограничениям на площадь, покрываемую системой. Кроме того, тут появляется проблемы «добавления» задержек при доставке сигналов по проводам, но они могут быть решены за счет калибровки системы относительно передатчиков с заведомо известными координатами. Поскольку нашей задачей является построение локальной системы для аэропорта, а так же ввиду наличия некоторой инфраструктуры, заказчиком был выбран третий вариант архитектуры системы.Разработка структуры приемника Непосредственной задачей создаваемого устройства является получение аналогового сигнала с приемных антенн, обнаружение в нем кадров ADS-B и вычисление задержек между приемом одного и того же кадра разными антеннами. В дальнейшем собранная информация по каждому принятому кадру передается вышестоящей системе.Кадр формата ADS-B Mode-S (еще их называют сквиттер — от англ. squitter) состоит из 56 или 112 бит данных с предшествующей преамбулой. Преамбула длительностью 8 мкс содержит две пары импульсов идущих на некотором удалении друг от друга, после чего следует информационная часть, в которой каждый бит данных закодирован переходом 0=>1 или 1=>0.Первый взгляд на эту картинку вызывает желание поставить компаратор и просэмплировать результат на максимально возможной частоте (хоть 1–2 ГГц при желании), регистрируя точный момент начала кадра. К сожалению, данное решение не будет [нормально] работать и причин тому немало:
при переносе сигнала на RF частоту (1090 МГц) и обратно форма сигнала значительно искажается, импульсы становятся далеко не прямоугольными; сигналы от разных источников будут иметь разную мощность, а значит появляется проблема выбора уровня, по которому должен срабатывать компаратор; в условиях большого количества транспондеров работающих рядом весьма вероятна ситуация, когда два (и более) сквиттеров накладываются друг на друга — это вполне нормальная ситуация и приемники должны уметь принимать такие сигналы в ряде случаев; помехи в эфире и переотражения, искажающие форму принимаемых сигналов; ну и наконец, такое решение оставляет за скобками задачу непосредственно приема и декодирования сообщений с целью идентификации — от какого объекта был послан данный сквиттер. В связи с этим был использован другой подход, позволяющий по формам принимаемых сигналов более точно установить разницу во времени их приема. Математическое моделирование показало, что частота сэмплирования в данном случае может быть относительно невысокой, в нашем случае она была выбрана равной 12 МГц, то есть 12 отсчетов на один бит передаваемых данных (напомню, длительность 1 бита составляет 1 мкс).В давние времена я писал статью об общих подходах по разработке аппаратуры. В принципе, с тех времен принципиально ничего не поменялось. Изначально, как было сказано выше, на математической модели прошла обкатку сама идея вычисления задержек, после получения положительных результатов была разработана функциональная схема устройства.
Одним из требований к системе является масштабируемость — возможность увеличивать число каналов приема без значительного изменения архитектуры устройства. Планировалось, что одно устройство сможет обслуживать до 32 приемных каналов (16 с резервированием).Пришедшие с антенн сигналы переносятся на низкую частоту в блоках АМ-демодуляции, количество которых равно числу приемных каналов. Далее производится оцифровка данных с помощью многоканальных АЦП с относительно невысокой частотой дискретизации (десятки МГц). Такие АЦП имеют много аналоговых входов данных и скоростной последовательный или последовательно-параллельный цифровой интерфейс, в рамках которого информация со всех каналов предается упакованной в кадры. Это позволяет значительно сэкономить на трассировке печатной платы и на ресурсах элементов ввода-вывода микросхем, реализующих интерфейс с АЦП.
В качестве устройства обработки информации наиболее удобно (в данном случае) использовать FPGA, позволяющую решать сразу комплекс задач — интерфейс с АЦП, буферизация данных в скоростной внутренней памяти, DSP-обработка и сложные управляющие алгоритмы, реализуемые на встраиваемом процессоре. На самом деле вопрос выбора аппаратной платформы непростой. По общим прикидкам, есть шанс, что на хорошем DSP тоже можно успеть производить всю обработку, но рисковать не хотелось. Тем более, что в любом случае, нужно еще и поддерживать интерфейс с АЦП, а значит ставить FPGA, скорее всего, так или иначе пришлось бы.
Полученные сигналы буферизируются и отправляются в блоки приема кадров ADS-B. Количество блоков соответствует числу принимаемых каналов. В них происходит обнаружение преамбулы, выделение данных и проверка их контрольных сумм. Так же предпринимается ряд мер по приему наложенных друг на друга кадров, в том случае если один из них имеет заметно большую мощность. Полученные кадры с временными отметками передаются для дальнейшей обработки.
Одновременно с этим производится другая процедура — вычисление точной задержки (с точностью меньше одного интервала дискретизации) по формам принятых сигналов. Для всех принятых кадров устанавливается их положение в буфере после чего они парами (относительно какого-нибудь канала, выбранного ведущим) отправляются на обработку совмещенные с точностью до одного интервала дискретизации. После интенсивной цифровой обработки как во временной, так и в спектральной областях, на выходе получается число в долях частоты дискретизации — насколько во времени отстоят кадры друг от друга. К примеру, на следующей картинке показаны две реализации сигнала, отстоящие друг от друга на половину интервала дискретизации (для удобства восприятия они совмещены во времени и метками указаны моменты, когда они были просэмплированы). Блок вычисления точной задержки при подаче на вход таких сигналов выдаст значение 0,5 (или -0,5 в зависимости от того, какой из сигналов пришел раньше), т.е. половина интервала дискретизации.
По окончании данной процедуры можно подготовить итоговую информацию по каждому кадру: содержащиеся в кадре данные и задержки приема по каждому из каналов. Сложность процедуры общего управления обработкой кадров заключается еще и в том, что разные каналы в одно и тоже (близкое) время могут принять кадры от разных объектов — в зависимости от того, чей передатчик мощнее и кто где будет расположен относительно антенн. В конечном итоге собранная информация отправляется в вышестоящую систему для дальнейшей обработки и вычисления пространственного положения объектов.
Как можно видеть, получившийся текст не содержит ни строчки кода. Вдаваться в какие-либо нюансы реализации — дело долгое и непростое. Приводить код, на мой взгляд — занятие и вовсе бессмысленное, ибо любой отдельный кусочек выглядит банально, а слишком большой объем все равно никто читать не будет. Поэтому в данной статье я сосредоточился на основных идеях и общеструктурном описании. Может быть в дальнейшем будет написана еще одна часть, раскрывающая подробности реализации каких-то отдельных элементов. Ну, а сейчас пора заканчивать…
В качестве эпилога В рамках первого этапа разработки из радиодеталей, найденных в мусорном ведре, был создан прототип описанной выше системы, содержащий всего 4 канала. При тестировании «на столе» погрешность измерения задержек при сильном уровне сигнала составляла менее 2 нс и плавно снижалась с ухудшением соотношения сигнал/шум. При проведении испытаний в реальных условиях, погрешность составила что-то около 10 нс, что, по словам коллег, примерно в 2–3 раза лучше, чем у аналогичной покупной системы. С учетом, что рассчетная стоимость разрабатываемого с нуля изделия за счет того, что разработчики жили в бараках на хлебе с водой была в районе серийных образцов конкурентов, все это внушало радужные перспективы на успешное завершение проекта.К сожалению, осенью прошлого года произошло печальное событие — в аэропорту Внуково потерпел катастрофу частный лайнер, да еще и с весьма статусным пассажиром. Одним из факторов случившегося являлось отсутствие в аэропорту современной системы навигации, вроде той, о которой рассказывалось выше. Данное событие привело к парадоксальным последствиям для проекта — где-то высоко наверху было решено, что создавать собственную систему — занятие слишком долгое и негарантированное, в связи с чем принято решение о закупке готовых приемников (а возможно и других составляющих системы — не владею вопросом) у западных партнеров, а текущая разработка была закрыта.