VMEbus

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

VMEbus (англ. VersaModule Eurocard bus, иногда VME) — стандарт на компьютерную шину, первоначально разработанный для семейства микропроцессоров Motorola 68000, и в дальнейшем нашедший применение для множества других приложений. Шина VME была стандартизирована МЭК как ANSI/IEEE 1014—1987. Физически в VME используется конструктив Евромеханика. Впервые разработанная в 1981 году, шина VME находит широкое применение вплоть до сегодняшнего дня.

История шины[править | править вики-текст]

В 1979 году компания Motorola разрабатывала свой новый микропроцессор 68000, и один из её инженеров, Джек Кистер, поднял вопрос о создании стандартизированной шины для систем, использующих 68000, которую он назвал VERSAbus. С тех пор спецификация стандарта была несколько раз пересмотрена и в 1987 году была принята действующая по настоящее время спецификация VMEbus Rev. C1, которая является международным стандартом МЭК 821. В США этот стандарт также имеет название ANSI/IEEE 1014—1987.

Характеристики шины[править | править вики-текст]

  • Разрядность шины — 32/64
  • Адрес/Данные — раздельные (VME32), мультиплексируемые (VME64)
  • Тип шины — Асинхронная
  • Конструктив — Евромеханика 3U, 6U, 9U
  • Максимальное количество модулей в крейте — 21 штука
  • Пропускная способность в 32 разрядном варианте — 40 Мбайт/с (VME32), 80 Мбайт/с (VME64)

В режиме блочных передач (когда на 1-у передачу адреса идёт несколько передач данных) скорость может достигать 320 Мбайт/с (VME64).

Описание шины[править | править вики-текст]

Во многом шина VMEbus представляет собой внешние интерфейсы процессора 68000, доработанные для соединения нескольких печатных плат. Обычно подобный дизайн является недостатком, так как принуждает создавать системы подобные тем, для которых шина применялась изначально. Однако, одной из ключевых особенностей процессора 68000 была плоская, 32-битная модель памяти и отсутствие деления памяти на сегменты, что делает шину VME достаточно универсальной для большинства применений.

Как и шина процессора 68000, VME использует отдельную адресную шину и отдельную шину данных, обе из которых являются 32-битными. На самом деле, во время разработки VME, внешняя шина процессора 68000 использовала 24-разрядную шину адреса и 16-разрядную шину данных (хотя внутри микропроцессора обе шины были 32-разрядными), но разработчики VME предвидели необходимость применения 32-разрядных шин в будущем. Для того, чтобы обеспечить возможность применения шин различной разрядности, была предусмотрена возможность применения двух различных типов разъёмов: P1 и P2. Разъём типа P1 содержит три ряда по 32 контакта, и позволяет использовать младшие 24 разряда адреса и 16-разрядную шину данных, а также все управляющие сигналы. Разъём типа P2 содержит на один ряд контактов больше; этот дополнительный ряд содержит оставшиеся 8 линий адреса и 16 линий данных.

Логически все устройства шины VME делятся на три типа:

  • ведущий;
  • ведомый;
  • арбитр.

Ведущий — инициирует циклы на шине. Ведомый — осуществляет операции по команде ведущего. Арбитр — осуществляет контроль за занятостью шины.

Для управления шиной используется набор из девяти линий, известный как arbitration bus. Всю передачу информации по шине контролирует арбитр шины, расположенный на плате, установленной в слот номер 1 шасси, такая плата называется arbiter module. В общем случае для передачи информации по шине каждая плата должна запросить доступ к шине, установив одну из линий bus request in на arbitration bus в активное состояние (лог. 0) для того, чтобы арбитр мог определить её номер слота. Когда арбитр освобождает шину, он сканирует линии bus request in, и проверяет, находятся какие-либо из них в активном состоянии. Если это так, то арбитр устанавливает линию bus busy в активное состояние, указывая таким образом всем устройствам на шине, что шина занята и разрешает доступ к шине одному устройству путём установки линии bus grant out в активное состояние.

После этого устройство получает доступ к шине. Для того, чтобы записать данные, устройство выставляет адрес и данные на шину, и устанавливает в активное состояние линии address strobe и две линии data strobe, для указания того, что данные готовы, а также устанавливает линию write в активное состояние. Для указания разрядности данных, пересылаемых в данном цикле используется две линии data strobe, с помощью которых кодируется размер данных: 8, 16 или 32 бита (или 64 для VME64). Ведомое устройство, прочитавшее адрес с шины и опознавшее его как свой, читает данные и устанавливает линию data transfer acknowledge по завершении (в случае ошибки устанавливается линия bus error). Чтение данных происходит аналогичным образом, но ведущее устройство устанавливает на шине только адрес и устанавливает линию read в активное состояние. Другое устройство устанавливает на шине данные и data strobe в активное состояние. Подобный способ обмена называется асинхронным, означая то, что на шине не существует сигнала общей синхронизации (который есть на синхронных шинах, таких, как PCI).

Шина VME имеет семь линий запроса на прерывание (именно столько их было у 68000). При приходе запроса на прерывание по одной из этих линий арбитр шины записывает уровень прерывания на шину адреса, чтобы указать, какое прерывание надо обработать. Следует отметить, что в этом случае не используется номер карты, так как карты во многих случаях могут разделять прерывания. Часто отмечают, что чрезмерное количество уровней прерываний является одним из немногих примеров избыточности в архитектуре 68000, однако для шины VME это не является большим недостатком.

См. также[править | править вики-текст]

  • VXI, VMEbus eXtention for Instrumentation.

Ссылки[править | править вики-текст]