Разработка контроллера протокола MIL-STD-1553B на ПЛИС. Часть 1
Введение
Существуют также интерфейсы, область применения которых намного специфичнее перечисленных. Среди них — интерфейсы, применяемые в авиационной отрасли:
- MIL-STD-1553B (бортовая авиация Министерства обороны США);
- ARINC-429 (гражданская авиация);
- STANAG-3919B (модернизированный 1553B);
- ASCB (легкие летательные аппараты);
- HSDB (истребители F-22, вертолет RAH-66 Comanche);
- FibreChannel (компьютерная промышленность и авиационная отрасль);
- 646 Ethernet Local Area Network (коммерческая авиация).
Каждый из этих интерфейсов отличается скоростью обмена данными, размером посылки, совмещенной или раздельной линией приема/передачи данных и другими параметрами.
По сравнению с интерфейсами общего применения информации на авиационные протоколы в Интернете намного меньше. Что же касается примеров реализации контроллеров этих интерфейсов, например на ПЛИС, то полноценных сведений практически нет. Следует добавить, что для полноценной реализации подобных устройств необходимо рассмотреть и физический уровень, соответствующий каждому протоколу.
В статье проанализирован полный процесс реализации контроллера протокола MIL-STD-1553B, начиная с описания протокола, как логического, так и физического уровня, выбора компонентов, создания схемы, написания HDL-кода проекта контроллера интерфейса и заканчивая моделированием в ModelSim с использованием testbench.
Автор выбрал именно этот протокол, так как, несмотря на то, что этот документ был разработан по заказу Министерства обороны США в 1970-х годах, он до сих пор широко применяется в авиационной промышленности. Автор лично разрабатывал устройства, имеющие в своем составе контроллер протокола MIL-STD-1553B или его отечественный аналог — МКИО (мультиплексный канал информационного обмена). Статья будет полезна начинающим разработчикам цифровой электроники, имеющей в своем составе ПЛИС. Кроме того, автор решил представить этот материал так, как если бы начинающему разработчику была поставлена задача сконструировать устройство обмена данными по протоколу MIL-STD-1553B, а этой темой он раньше не занимался.
Итак, статья содержит следующие разделы:
- описание протокола MIL-STD-1553B;
- выбор элементной базы;
- создание структурной схемы устройства;
- написание HDL-кода проекта;
- моделирование HDL-кода проекта в ModelSim.
В связи с тем, что объем статьи не позволяет опубликовать ее полностью в одном номере, материал разделен на четыре части. В первой части описаны особенности протокола MIL-STD-1553B, необходимые электронные компоненты, а также рассмотрена структурная схема устройства.
Описание протокола MIL-STD-1553B
Не будем углубляться в подробности протокола, так как полностью этот стандарт можно найти в Интернете [1]. Мы приведем в статье лишь ту информацию, с помощью которой начинающий разработчик сможет понять, что конкретно представляет собой этот протокол. Автор считаем важным предложить различные варианты реализации физического и логического уровня контроллера под нужный нам интерфейс обмена данными, так как в реальной ситуации перед специалистом редко когда ставится задача, в точности такая же, как в представленном разработчику материале.
Итак, стандарт MIL-STD-1553B был разработан по заказу Министерства обороны США и изначально предназначался для использования в военной авионике, но в дальнейшем его стали применять и в гражданских системах.
Каналы обмена информацией, выполненные по MIL-STD-1553B, имеют шинную организацию. Есть одна общая магистраль, а к ней, через гальваническую развязку, подключаются абоненты. Количество абонентов может достигать 31 (рис. 1).
Рассматриваемый нами протокол предусматривает резервирование. То есть каждый из абонентов может быть подключен к двум каналам — основному и резервному, которые в иностранной литературе обозначаются как channel A и channel B соответственно.
Все абоненты на магистрали подразделяются на три вида:
- КК — контроллер канала. Центральное устройство системы. Отправляет командные слова (КС) и информационные данные остальным абонентам. На одной магистрали может быть только один КК.
- ОУ — оконечное устройство. Одно из 31-го периферийного устройства. Ожидает командные слова от КК, обрабатывает их и отдает ответное слово (ОС) обратно на КК. Каждый из ОУ имеет уникальный адрес разрядностью 5 бит.
- М — монитор. Нечто вроде отчетного устройства. Следит за информацией в канале. Собирает статистику и пр. Монитор — безадресное устройство и не выдает в магистраль никакой информации. В данном случае монитор можно сравнить с «черным ящиком» самолета, который записывает переговоры пилотов и показания датчиков.
Стандарт MIL-STD-1553B предусматривает возможность организации иерархической системы, то есть каждое из ОУ может быть «интеллектуальным», а значит, является контроллером канала со своими оконечными устройствами нижнего уровня.
Рассмотрим физический уровень подключения абонента к магистрали. Стандарт предусматривает два вида подключения — с одинарной и двойной трансформаторной развязкой. Выбор схемы подключения определяется расстоянием от абонента до магистрали (рис. 2). Здесь IT — изолирующий трансформатор; CT — согласующий трансформатор; Ri1 = 55 Ом; Ri2 = 0,75Zo; Zo — волновое сопротивление линии магистрали (characteristicimpedance), которое составляет 70–85 Ом на частоте 1 МГц; Vp-p — значение напряжения peak-to-peak (размах).
По поводу рис. 2 следует уточнить, что одинарная трансформаторная развязка используется, если протяженность соединения до основной магистрали не превышает ≈30 см (по стандарту — один фут). Двойная трансформаторная развязка используется, если протяженность соединения не превышает ≈6 м (по стандарту — 20 футов).
Под абонентом понимается цифровая система управления для организации и обработки пакетов протокола на логическом уровне, а также драйвер физического уровня. В качестве цифровой системы управления может использоваться микроконтроллер или ПЛИС. Драйвер — это устройство, предназначенное для преобразования уровней напряжений в магистрали в логические уровни КМОП или ТТЛ.
Итак, особенности физического уровня мы рассмотрели. Теперь перейдем к логическому уровню протокола.
Информация в мультиплексном канале передается с частотой 1 МГц словами по 20 бит. Слова передаются пакетами. Количество слов в пакете может быть разным, в зависимости от вида пакета (мы рассмотрим это далее).
Необходимо отметить, что вся информация на магистрали передается в коде «Манчестер-2». Это означает, что наша цифровая система управления должна иметь в своем составе кодер и декодер этого кода.
«Манчестер-2» относится к самосинхронизирующимся кодам и имеет нулевую постоянную составляющую. Передача нулей и единиц определяется не уровнем, а переходом с уровня на уровень (рис. 3).
Протокол MIL-STD-1553B предусматривает также два вида синхросигнала (SYNC C и SYNC D), которые позволяют отличать командные слова от информационных. Вид синхросигналов SYNC C и SYNC D представлен на рис. 4.
Согласно стандарту этого протокола слова могут иметь три различных формата:
- командное слово (КС);
- информационное слово (ИС);
- ответное слово (ОС).
Битовый состав этих слов приведен на рис. 5.
Командное слово передается от контроллера канала оконечному устройству. Командное слово содержит в себе адрес ОУ (Address Remote Terminal, ADDR RT), которому предназначена информация, субадрес (sub-address, SUBADDR) и сколько именно слов (N) будет передано на это ОУ или принято с него. Бит приема-передачи (Write-Read, WR) говорит о том, в каком направлении будут передаваться последующие за командным словом информационные слова. Если WR = 0, контроллер канала передает данные на оконечное устройство. Если WR = 1, контроллер канала принимает данные от оконечного устройства.
Если командное слово содержит не субадрес, а признак команды (Command Indication, CI), то вместо количества слов передается команда (Command, COM).
Информационное слово содержит только данные разрядностью 16 бит и может передаваться как от контроллера канала к оконечному устройству, так и в обратном направлении. Что и понятно — информацию нужно передавать как на периферию, так и на центральную машину.
Ответное слово передается оконечным устройством на контроллер канала. Оно необходимо для подтверждения того, что периферия приняла пакет. Для того чтобы контроллер канала знал, от кого пришло ответное слово, в нем содержится адрес ОУ. Остальные биты несут служебную информацию:
- A— признак ошибки в сообщении.
- B — инструментальный бит.
- C — запрос на обслуживание.
- X— зарезервировано, может использоваться по усмотрению разработчика.
- D — признак принятия групповой команды.
- E — признак занятости абонента.
- F — флаг неисправности абонента.
- G — признак принятия управления каналом.
- H — флаг неисправности.
В каждом из этих слов используется бит паритета (Parity, P). Бит паритета должен иметь такое значение, чтобы общее количество единиц в слове (за исключением синхросигнала) было нечетным. Если поле ADDR RTимеет значение «11111», то посылка адресована всем оконечным устройствам. Именно это объясняет то, что всего оконечных устройств может быть не 32, а 31.
Признак команды CI имеет значение «00000» или «11111». Все остальные значения — это субадрес (SUBADDR). Использование дополнительных команд управления позволяет, например, блокировать и разблокировать передатчик резервной линии. (Подробно об этом написано в стандарте.)
Следует упомянуть инструментальный бит (B). Использование инструментального бита позволяет мониторам отличать командные слова от ответных. Значит, при использовании этого бита количество возможных значений SUBADDR сокращается с 30 до 14. Если в поле «количество слов» N указана цифра 0, то имеется в виду 32 слова.
На рис. 6 приведен пример контрольного, информационного и ответных слов в виде манчестерского кода.
На рис. 6а представлена передача командного слова с требованием оконечному устройству с адресом 5 (ADDR RT = 5) принять (так как WR = 0) набор данных с субадресом 2 (SUBADDR = 2) в количестве девяти информационных слов (так как N = 9). Бит паритета в конце этого слова равен 0, потому что количество единиц в слове, не считая синхросигнала, нечетно.
На рис. 6б представлено также командное слово, но с требованием оконечному устройству с адресом 3 передать (так как WR = 1) обратно набор данных с субадресом 7, в количестве слов 32 (так как N = 0).
На рис. 6в представлено информационное слово. Напомним, что его от других слов отличает синхросигнал SYNC D. Поле D имеет значение 1A37 hex (hex означает, что число представлено в шестнадцатеричном виде).
На рис. 6г представлено ответное слово, переданное от оконечного устройства с адресом 5.
На этих временных диаграммах видно, что спектр сигнала при обмене информацией по протоколу MIL-STD-1553B имеет две составляющие:
- 1 МГц — при передаче либо всех нулей, либо всех единиц;
- 0,5 МГц — при передаче чередующихся нулей и единиц.
Завершая раздел описания протокола, рассмотрим разновидность пакетов, которыми обмениваются абоненты (рис. 7).
На рис. 7а представлен пакет передачи информации от контроллера канала оконечному устройству. Заголовком пакета в этом случае является командное слово, содержащее адрес нужного оконечного устройства, субадрес и количество слов, которые контроллер канала собирается передать. Далее, без всяких временных задержек, один за другим, передаются все информационные слова. После передачи последнего информационного слова должен быть выдержан тайм-аут t2 (2–10 мкс), перед тем как оконечное устройство отправит ответное слово, сообщающее контроллеру канала о состоянии принятых данных. Следующий пакет можно начинать передавать, только выдержав тайм-аут t1 (не менее 2 мкс). Необходимо добавить, что если контроллер канала собирается передать информационное слово всем абонентам, то в этом случае ответное слово в пакете отсутствует.
На рис. 7б представлена структура пакета при передаче данных от оконечного устройства на контроллер канала. Заголовком пакета является командное слово с соответствующим битом приемопередачи. Далее, выждав тайм-аут t2,, оконечное устройство сначала передает обратно в магистраль ответное слово и сразу за ним, без всяких задержек, нужное количество информационных слов, указанное в командном слове. Следующий пакет также можно начинать передавать только после тайм-аута t1.
Протокол MIL-STD-1553B предусматривает передачу данных от одного оконечного устройства другому. Структура этого пакета представлена на рис. 7в.
Выбор элементной базы
В этом разделе автор представляет некоторых производителей электронных компонентов, необходимых для конструирования устройства, способного обмениваться информацией по протоколу MIL-STD-1553B.
Как уже было упомянуто в предыдущем разделе, минимальный набор компонентов, необходимых разработчику, чтобы связать некую цифровую систему управления с магистралью стандарта MIL-STD-1553B, состоит из драйвера (приемопередатчика) и трансформатора (изолирующего и/или согласующего).
В таблице 1 приведены некоторые производители приемопередатчиков протокола MIL-STD-1553B, а в таблице 2 — производители трансформаторов этого же протокола.
Производитель |
Компонент |
Напряжение питания, В |
Габариты, мм |
Примечания |
ЗАО «Элкус» |
EL-12N |
+5, +12, –12 |
30×44 |
Только основной канал. Дополнительный компонент — симметрирующий конденсатор |
EL-12R |
+5, +12, –12 |
33,8×38,4 |
Основной и резервный каналы. Дополнительный компонент — симметрирующий конденсатор на каждый канал |
|
EL-15N |
+5, +15, –15 |
30×40 |
Только основной канал. Дополнительный компонент — симметрирующий конденсатор |
|
Data Device Corporation |
BU-63152 |
+5 |
16×16 |
Основной и резервный каналы |
BU-63155 |
+5 |
7×7 |
Только основной канал |
|
BU-67401L |
+3,3 |
7×7 |
Основной и резервный каналы |
|
Holt Integrated Circuits |
HI-1565 |
+5 |
7×7 12,8×10,4 25×8 |
Основной и резервный каналы |
HI-1570 |
+5 |
12,8×10,4 25,5×8 |
Основной и резервный каналы. Возможность регулировки амплитуды сигнала в магистраль |
|
HI-1575 |
+3,3 |
9×9 6×6 |
Основной и резервный каналы. Встроенный кодер-декодер |
Производитель |
Компонент |
Коэффициент передачи |
Габариты, мм |
Примечания |
ОАО «Мстатор» |
ТИЛ3В |
1; 0,5; 0,2 |
12,5×12,5×6,5 |
Используется в связке с 15-В приемопередатчиками |
ТИЛ5В |
1; 0,64; 0,26 |
12,5×12,5×6,5 |
Используется в связке с 12-В приемопередатчиками |
|
ТИЛ6В |
1:2,5 1:1,79 |
12,5×12,5×6,5 |
Используется в связке с 5-В приемопередатчиками |
|
Beta Transformer Technology Corporation |
B-3226 |
1:2,5 1:1,79 |
15,88×15,88×6,2 |
Два коэффициента передачи. С общей точкой |
B-2206 |
1:1,41 |
12,7×8,9×6,35 |
Без общей точки |
|
B-2208 |
1:1,41 |
12,7×8,9×6,35 |
С общей точкой |
|
B-3229 |
1:1,79 |
12,7×8,9×6,35 |
С общей точкой |
|
B-3230 |
1:2,5 |
12,7×8,9×6,35 |
С общей точкой |
|
B-3227 |
1:2,5 1:1,79 |
15,88×15,88×7 |
С общей точкой |
|
Premier Magnetics |
PB-DB2705 |
1:1,41 |
12,7×8,9×6,35 |
С общей точкой |
PB-DB2707 |
1:1,41 |
12,7×8,9×6,35 |
С общей точкой |
|
PB-DB2725 |
1:2,5 1:1,79 |
15,87×15,87×9,52 |
Два коэффициента передачи. С общей точкой |
|
PB-DB2791S |
1:2,5 |
10,16×10,16×4,7 |
– |
|
PB-DB2795 |
1:1,79 |
10,16×10,16×4,7 |
– |
|
PB-DB2745M |
1:2,5 1:1,79 |
10,92×10,92×4 |
Два коэффициента передачи. С общей точкой |
Обсудим компоненты приемопередатчиков из таблицы 1. Первое — на рынке присутствуют драйверы протокола MIL-STD-1553B, требующие для своей работы не одно, а несколько номиналов напряжения питания. А дополнительная цепь питания только для одной микросхемы увеличивает габариты устройства и усложняет его. Второе — при выборе приемопередатчика в плане питающего напряжения следует обратить внимание на то, какие уровни напряжения ввода/вывода поддерживает система управления, которая будет подключена к приемопередатчику. Например, если мы пользуемся 5-В приемопередатчиком, а входные буферы управляющей микросхемы питаются от +3,3 В, то следует убедиться, что «лог. 1» с уровнем +5 В не повредит линии ввода/вывода управляющей микросхемы.
Компании выпускают микросхемы приемопередатчиков в различных корпусах, что дает широкий выбор в плане габаритов.
Анализируя данные графы «Примечания», можно сказать, что существуют исполнения с одним каналом и двумя сразу (основной и резервный). В тех сферах, например авионике, где используется протокол MIL-STD-1553B, в основном требуются два канала как минимум.
Теперь взглянем на таблицу 2. Как известно, существует три различных трансформатора, предназначенных для устройств с протоколом MIL-STD-1553B. Если разработчик собирается использовать длинное соединение с магистралью, то нужно ставить изолирующий трансформатор с одним коэффициентом трансформации. Если же короткое, то необходимо выбрать другой. Производители представляют их в отдельных корпусах, но следует обратить внимание на трансформаторы с двойным коэффициентом трансформации — для возможности реализации ближнего и дальнего подключения.
Итак, определимся с конкретными компонентами для будущего проекта. В качестве системы управления будем использовать ПЛИС. В ПЛИС можно реализовать синхронную логику, любую цифровую схему и тот же самый контроллер. Возьмем, например, ПЛИС семейства Cyclone III от Altera Corporation. Это семейство не позволяет использовать питание банков ввода/вывода больше +3,7 В. Поэтому будем выбирать приемопередатчик с +3,3-В питанием.
Из таблицы 1 по этому параметру нам подходят два компонента: BU-67401L от DDC и HI-1575 от HoltIntegrated. Первый — это простой приемопередатчик с резервным каналом, а второй — такой же, но со встроенным кодером-декодером. То есть HI-1575 при приеме декодирует посылку и выставляет на выходы в параллельном виде. При передаче — процесс обратный. Функционально этот компонент, конечно, выигрывает по сравнению с простым приемопередатчиком, но требует больше выводов ПЛИС для обмена информацией. (Не говоря уже о том, что стоимость HI-1575 будет выше, чем у простого драйвера.)
Автор предпочитает экономить выводы ПЛИС, потому что к ПЛИС, помимо всего прочего, могут быть подключены какие-либо другие периферийные устройства. Тем более что реализация кодирования и декодирования посылок протокола MIL-STD-1553B не занимает большого количества логических ячеек ПЛИС. Итак, в качестве приемопередатчика будем использовать BU-67401L.
Теперь по поводу выбора трансформатора. Нужно выбрать трансформатор с двумя коэффициентами трансформации, чтобы была возможность подключения нашего устройства к магистрали по ближнему и дальнему соединению. Раз мы решили выбрать приемопередатчик от DDC, следует сказать, что DDC имеет дочернее предприятие BTTC, которое производит трансформаторы по стандарту MIL-STD-1553B. Поэтому в нашем случае логичнее будет использовать компонент именно этого производителя. Выберем B-3227.
На рис. 8 приведена обобщенная схема подключения выбранных нами компонентов. Здесь показаны только те сигналы, которые представляют интерес в контексте этой статьи. На рисунке не изображены цепи питания, «земли» и т. д.
Создание структурной схемы проекта на ПЛИС
Практически любой HDL-проект начинается с определения структурной схемы модулей. Очевидно, что наш проект должен содержать модули приемника и передатчика, а также память хранения принятой или передаваемой информации. Автор решил не усложнять проект всеми возможностями протокола (такими как включение/отключение приемопередатчика, статус занятости и пр.), а реализовать прием одного потока данных под конкретным субадресом и передачу другого. На рис. 9 приведена структурная схема нашего будущего HDL-проекта.
Помимо приемника и передатчика на структурной схеме представлен модуль RT_control.v, алгоритм которого основан на работе оконечного устройства. Вспомним, что оконечные устройства могут иметь до 30 субадресов, по которым можно передавать или принимать информацию. Подмодули device3.v и device5.vорганизуют прием и передачу информации соответственно по субадресам 3 и 5. Подмодуль device3.vобеспечивает прием потока данных от контроллера канала и отправку обратно ответного слова. Подмодуль device5.v обеспечивает отправку на контроллер канала ответного слова и следующие за ним информационные слова. Все информационные слова планируется хранить в двухпортовой памяти с разделенными шинами адреса и данных для записи и чтения.
Модуль приемника содержит помимо входных сигналов самого протокола (DI1, DI0) еще и выходную шину принятых данных (data_get[15:0]), а также сигналы сервиса, такие как готовность принятых данных (done) и др. Почти аналогичным образом организован интерфейс модуля передатчика. Интерфейс модуля RT_control.v помимо шин принимаемых и передаваемых данных (rx_data[15:0], tx_data[15:0]) и соответствующих им сигналов управления (rx_done, tx_ready, tx_busy и т. д.) имеет также интерфейсы двухпортовой памяти, соответствующие каждому подмодулю — device3.v и device5.v.
Напомним, что подмодуль device3.v занимается приемом данных от модуля приемника и готов к выдаче этой принятой информации для внешней логики. Подмодуль device5.v, наоборот, записывает от внешней логики в свою память данные, которые потом может передать на контроллер канала с помощью передатчика. Именно поэтому интерфейс памяти для device5.v отличается от device3.v наличием сигнала разрешения записи в память we_dev5.
Одним описанием интерфейсом модулей проекта нельзя ограничиться, поэтому следует рассмотреть каждый модуль в отдельности. Иерархия модулей, написанных на языке описания аппаратуры Verilog, приведена на рис. 10.
Следующие части статьи будут содержать разбор HDL-кода каждого модуля проекта. Во второй части будут рассмотрены модули Top_MIL-1553B: приемник и передатчик.
- ГОСТ Р 52070-2003. «Интерфейс магистральный последовательный системы электронных модулей».
- Дайнеко Д. Реализация CORDIC-алгоритма на ПЛИС // Компоненты и технологии. 2011. № 12.
- IEEE Standart Verilog Hardware Description Language. 2001.
- Mentor Graphics. ModelSim Tutorial. May,