VMEbus (VMEbus, Versa Module Europa bus) является стандартом аппаратной шины, разработанной и используемой в компьютерных системах для обмена данными между различными компонентами системы. VMEbus был первоначально разработан компанией Motorola в 1981 году и является одним из наиболее распространенных и популярных стандартов шины в индустрии. В какой-то степени данная шина является наследницей концепции системной шины Multibus.
VMEbus предлагает высокопроизводительную, надежную и гибкую шину, которая может быть использована для подключения различных компонентов компьютерной системы, таких как центральные процессоры, память, ввод-выводные устройства и периферийные устройства.
Шина VMEbus основана на функциональных модулях, называемых модулями VME. Эти модули могут быть карточками расширения, модулями памяти, модулями ввода-вывода и другими устройствами. Они подключаются к основной шине через специальные слоты и могут быть легко заменены или добавлены без необходимости изменения основной системы.
Характеристики VMEbus включают высокую скорость передачи данных (до 80 МБ/с), поддержку множества различных протоколов обмена данными и возможность работы в многопроцессорной среде.
VMEbus широко используется в области промышленной автоматизации, научных исследований, военной техники и других областях, где требуется высокая производительность и надежность.
Шина VME была стандартизирована МЭК как ANSI/IEEE 1014—1987. Физически в VME используется конструктив Евромеханика. Впервые разработанная в 1981 году, шина VME находит широкое применение до сих пор.
Описание шины
Во многом шина 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.