Руководство пользователя SpaceWire
Стив Паркс (Steve Parkes)
2012 СТАР-Данди Лимитед
Эта статья – перевод книги SpaceWire User's Guide
ISBN английской книги: 978-0-9573408-0-0
Глоссарий
Символ данных | Cимвол, содержащий 8 бит данных |
---|---|
Адрес назначения | начальный байт или байты пакета, которые используются маршрутизаторами для определения маршрута пакета к месту назначения |
ЕЕР | символ ошибочного конца пакета (Error End of Packet), который используется для завершения пакета при возникновении ошибки |
EOP | символ конца пакета (End of Packet), маркер, указывающий на конец пакета |
FCT | метка управления потоком, который обменивается на восемь N‑символов |
Входной порт | часть интерфейса SpaceWire в маршрутизаторе, принимающая пакеты |
Канал (установленное соединение, Link) | соединение между двумя интерфейсами SpaceWire |
N‑символ (N‑Char) | информационный символ данных (EOP или EEP) |
Узел | источник или назначение пакетов SpaceWire |
Null | символ, который отправляется, когда нет другой информации для отправки, чтобы сохранить активный канал |
Выходной порт | часть интерфейса SpaceWire в маршрутизаторе, которая отправляет пакеты |
Пакет | последовательность информационных символов, за которой следует EOP или EEP, пакет состоит из адреса назначения, передаваемых данных и EOP/EEP |
Порт | входной или выходной порт маршрутизатора SpaceWire |
Маршрутизатор | коммутатор пакетов, который пересылает пакеты к месту назначения, выбирая канал для пересылки пакета на основе адреса назначения пакета |
Интерфейс SpaceWire | интерфейс, используемый для отправки пакетов SpaceWire и Time‑кодов |
Time‑код | код, состоящий из символа Escape, за которым следует символ данных, где символ данных содержит два зарезервированных бита и шесть битов информации о времени |
1 Введение
Руководство пользователя SpaceWire предназначено для ознакомления читателя со SpaceWire.
Раздел 2 начинается с обзора SpaceWire, краткой истории SpaceWire, рассмотрения примера приложения SpaceWire, изучения того, как работает SpaceWire, рассмотрения различных архитектур SpaceWire и, наконец, рассматриваются реальные решения для иллюстрации использования SpaceWire на практике.
В разделе 3 более подробно рассматриваются каналы SpaceWire. В нём подробно описывается каждый уровень стандарта SpaceWire, объясняется принцип работы каждого уровня и причины, по которым SpaceWire разработан именно таким образом.
Раздел 4 описывает маршрутизаторы и сети SpaceWire. Представлены узлы и маршрутизаторы SpaceWire, объяснён механизм работы внутри маршрутизатора, а также способ его настройки. Детально описывается работа микросхемы маршрутизатора SpaceWire Atmel AT7910E SpW-10X.
Раздел 5 объясняет, как работают Time ‑ коды SpaceWire, и знакомит с некоторыми приложениями, для которых они используются.
В разделе 6 представлены некоторые протоколы SpaceWire более высокого уровня. Этот раздел ещё не завершён. Пожалуйста, проверьте последнюю версию на сайте www.star-dundee.com.
Руководство пользователя SpaceWire составлено из нескольких документов, написанных Стивом Парксом (Steve Parkes), генеральным директором STAR-Dundee и автором этого руководства.
2 Сеть обработки данных SpaceWire
SpaceWire — это сеть обработки данных для бортовых применений, которая соединяет вместе инструменты, запоминающие устройства, процессоры, телеметрию нисходящей линии связи и другие бортовые подсистемы123. SpaceWire прост в реализации и обладает некоторыми специфическими характеристиками, которые помогают ему поддерживать приложения для обработки данных в космосе: высокая скорость, малое энергопотребление, простота, относительно низкая стоимость реализации и архитектурная гибкость, что делает его идеальным для многих космических применений. SpaceWire обеспечивает высокоскоростные (от 2 Мбит/с до 200 Мбит/с) двунаправленные полнодуплексные каналы передачи данных, которые соединяют вместе оборудование с поддержкой SpaceWire. Сети обработки данных строятся приложениями с использованием дву хточечных каналов передачи данных и коммутаторов маршрутизации.
С тех пор как стандарт SpaceWire был опубликован в январе 2003 года, он был принят Европейским Космическим Агентством, НАСА, Японским Агентством Аэрокосмических Исследований и корпорацией «Роскосмос» для многих применений и широко используется в научных исследованиях, наблюдениях за Землёй, коммерческих и других космических аппаратах. Известные применения с использованием SpaceWire включают: Gaia, марсоход ExoMars, BepiColombo, космический телескоп Джеймса Уэбба, GOES-R, лунный разведывательный орбитальный аппарат и Astro-H.
2.1 Обоснование и краткая история SpaceWire
До того, как SpaceWire стал стандартом, у многих производителей космических аппаратов и оборудования уже был собственный интерфейс связи для межблочной связи, например, подключение инструментов с высокой скоростью передачи данных к запоминающим устройствам. Это привело к тому, что на космическом аппарате использова лось несколько различных каналов связи, что увеличило стоимость и время, необходимое для интеграции и испытаний космического аппарата. Существовала явная потребность в стандартной бортовой линии связи, которая упростила бы разработку космического аппарата.
Ещё в 1992 году, когда началась работа над тем, что позже стало называться SpaceWire, также существовал значительный интерес к высокопроизводительным системам цифровой обработки сигналов, возможности которых были выше возможностей однокристальных устройств, доступных в то время. Было исследовано использование параллельной обработки, и это потребовало некоторой формы сети для соединения отдельных элементов обработки4. Транспьютер Inmos5, микропроцессор, предназначенный для параллельной обработки, был изучен, и последовательные каналы связи, разрабатываемые для транспьютера T90006, были определены как привлекательное решение для бортовой с ети космического аппарата. Эта технология последовательной связи была впоследствии опубликована как IEEE 1355-19957.
Несколько радиационно-стойких устройств были разработаны с использованием стандарта IEEE 1355-1995 и использовались в некоторых космических проектах. Однако с этим стандартом было много проблем, которые необходимо было решить, если эта технология должна была продолжать использоваться для космических аппаратов Европейского Космического Агентства. Университет Данди получил контракт от Европейского Космического Агентства8 на изучение и решение этих проблем, что в конечном итоге привело к стандарту SpaceWire.
SpaceWire стремится:
- способствовать созданию высокопроизводительных бортовых систем обработки данных;
- помогают снизить затраты на системную интеграцию;
- продвигать совместимость между оборудованием для обработки данных и подсистемами;
- поощрять повторное использование оборудования для обработки данных в нескольких различных применений.
Использование стандарта SpaceWire гарантирует совместимость оборудования как на уровне компонентов, так и на уровне подсистем. Инструменты, блоки обработки данных, запоминающие устройства и телеметрические системы нисходящей линии связи, использующие интерфейсы SpaceWire, разработанные для одного применения, могут быть легко использованы в другом. Этот стандарт:
- уменьшает стоимость разработки (дешевле);
- сокращает сроки разработки (быстрее);
- повышает надёжность (лучше);
- увеличивает объём научной работы, которую можно выполнить в рамках ограниченного бюджета (больше).
2.2 Пример применения SpaceWire
Интерфейс может поддерживать множество различных архитектур обработки полезной нагрузки с использованием двухточечных каналов связи и коммутаторов маршрутизации. Архитектура обработки данных может быть построена в соответствии с требованиями конкретного проекта для того, чтобы не навязывать определённое решение на ограниченную шину или сеть с ограниченной топологией. Пример решения архитектуры SpaceWire показан на рисунке 1. В нём используются два маршрутизатора SpaceWire для обеспечения взаимосвязи между устройствами, памятью и модулями обработки.
Устройство 1 в верхнем левом углу работает с высокой скоростью передачи данных. Канал связи «точка-точка» SpaceWire используется для потоковой передачи данных из этого устройства непосредственно в модуль памяти. Если одного канала SpaceWire недостаточно для обеспечения скорости передачи данных от этого прибора, можно использовать два или более каналов параллельно.
Устройство 2 имеет более низкую скорость передачи данных, чем устройство 1. Его данные передаются через маршрутизатор SpaceWire 1 в модуль памяти.
Устройство 3 не имеет интерфейса SpaceWire, поэтому для его подключения к маршрутизатору SpaceWire используется модуль ввода-вывода (I/O). Затем его данные могут быть отправлены по сети SpaceWire в модуль запоминающих устройств.
Устройство 4 содержит подмодули, которые связаны между собой с помощью шины CAN. Контроллер удалённого терминала (Remote Terminal Controller, RTC) используется для соединения шины CAN и SpaceWire. Другие сигналы устройства также подключаются к RTC, который содержит процессор для выполнения функций моста и локального управления прибором.
Устройства 5, 6 и 7 расположены в удалённой части космического аппарата. Чтобы избежать прокладки трёх кабелей SpaceWire к этому удалённому местоположению, используется второй маршрутизатор (маршрутизатор SpaceWire 2), который собирает информацию от этих трёх приборов и передаёт её по одному каналу SpaceWire на маршрутизатор 1, а затем на запоминающее устройство.
Модуль памяти может получать данные от любого из устройств либо напрямую, как в случае с устройством 1, либо опосредованно через маршрутизатор 1. Данные, хранящиеся в модуле памяти, могут быть отправлены в модуль форматирования/шифрования телеметрии для отправки на Землю, либо он может быть сначала отправлен в блок обработки данных или блок сжатия данных. Это устройство может возвращать обработанные/сжатые данные в модуль запоминающих устройств или отправлять их прямо в модуль телеметрии через маршрутизатор 1.
Центральный процессор отвечает за управление всеми устройствами, модулем памяти и блоком телеметрии. Через сеть SpaceWire он имеет доступ ко всем этим модулям: он может настраивать, контролировать и считывать с них служебную информацию и информацию о состоянии. Процессор также подключён к шине управления космическим аппаратом, по которой он может получать телекоманды и пересылать служебную информацию.
С несколькими приборами и процессором данных/компрессором, отправляющим данные в модуль устройств через маршрутизатор 1, одного канала от этого маршрутизатора к модулю памяти может быть недостаточно для обработки всех данных, поэтому был добавлен второй канал, чтобы повысить пропускную способность. В сети SpaceWire могут быть добавлены каналы для обеспечения дополнительной пропускной способности или повышения отказоустойчивости системы. На рисунке 1 для ясности резервирование не отмечено. В применении для космоса будет включена дополнительная пара маршрутизаторов с дублирующими каналами на модули для обеспечения резервирования. С помощью SpaceWire легко поддерживать традиционные резервные модули с перекрёстными соединениями.
2.3 Как работает SpaceWire
Рассмотрев способ использования интерфейс для обеспечения системы обработки данных космического аппарата, рассмотрим интерфейс подробнее.
2.3.1 Каналы SpaceWire
Каналы SpaceWire — это каналы передачи данных «точка-точка», которые соединяют вместе узлы (например, прибор, процессор, запоминающее устройство) с другим узлом или маршрутизатором. Информация может передаваться по обоим направлениям связи одновременно. Каждый канал представляет собой полнодуплексный двунаправленный последовательный канал передачи данных, который может работать со скоростью передачи данных от 2 Мбит/с до 200 Мбит/с. Он отправляет информацию в виде последовательного потока битов, используя два сигнала в каждом направлении (данные и строб). Эти сигналы передаются по каналу посредством низковольтной дифференциальной сигнализации (LVDS)910, которая требует двух проводов для каждого сигнала, в результате чего кабель SpaceWire содержит четыре экранированные витые пары.
Битовая синхронизация в SpaceWire достигается путём отправки тактового сигнала вместе с последовательными данными. Чтобы уменьшить требования к максимальному рассогласованию тактовых импульсов и данных, тактовый сигнал кодируется в стробирующий сигнал таким образом, что операция XOR данных и стробирующего сигнала восстанавливает тактовый сигнал.
Синхронизация символов выполняется только один раз, при запуске канала. Если синхронизация символов когда-либо будет потеряна, это будет определено как ошибка чётности, и связь будет перезапущена для восстано вления синхронизации символов.
SpaceWire предоставляет простой механизм для запуска канала, поддержания канала в рабочем состоянии, отправки данных по каналу, гарантии того, что данные не будут отправлены, если получатель на другом конце канала не готов к этому, а также для восстановления после любых ошибок связи. Всё это обрабатывается машиной состояний в интерфейсе SpaceWire и прозрачно для пользовательского приложения.
2.3.2 Пакеты SpaceWire
Информация передаётся по каналу SpaceWire отдельными пакетами. Пакеты могут отправляться в обоих направлениях канала при условии, что в получателе есть место для дополнительных данных. Пакет форматируется, как показано на рисунке 2.
«Адрес назначения» — это первая часть отправляемого пакета, представляющая собой список символов данных, который представляет либо идентификатор узла назначения, либо путь, который пакет должен пройти через сеть SpaceWire, чтобы достичь точку назначения. В случае соединения точка-точка непосредственно между двумя точками (без маршрутизаторов между ними) адрес назначения не требуется.
«Передаваемые данные» — это данные, которые должны быть переданы от источника к месту назначения. Любое количество байтов данных может быть передано в пакете SpaceWire.
«Конец пакета» (EOP) используется для обозначения конца пакета. Символ данных, следующий за EOP, является началом следующего пакета. Размер пакета SpaceWire не ограничен.
Как видно, формат пакета для SpaceWire очень прост. Однако он также очень мощный, позволяя использовать SpaceWire для переноса ряда пользовательских протоколов с минимальными издержками.