Шина isa что это такое

Обновлено: 29.06.2024

Типы шин ввода-вывода

Типы шин ввода-вывода

За время, прошедшее момента появления первого PC, особенно за последние годы, было разработано довольно много вариантов шин ввода-вывода, так как повышение производительности компьютера всегда было первостепенной задачей. Потребность в повышении производительности определяется тремя факторами:

  • быстродействием процессора;
  • качеством программного обеспечения;
  • возможностями компонентов мультимедиа.

Одной из главных причин, препятствующих появлению новых структур шин ввода-вывода, является их несовместимость со старым стандартом PC, который, подобно крепкому морскому узлу, связывает нас с прошлым. В свое время успех компьютеров класса PC предопределила стандартизация — многие компании разработали тысячи плат, соответствующих требованиям этого стандарта шины. Новая, более быстродействующая шина должна быть совместимой с прежним стандартом, иначе все старые платы придется просто выбросить. Поэтому технология производства шин эволюционирует медленно, без резких скачков. Шины вводавывода различаются архитектурой. Основные типы шин были представлены ранее.

Различия между этими шинами в основном связаны с объемом одновременно передаваемых данных (разрядностью) и скоростью их передачи (быстродействием).

Шина ISA

Шина ISA (Industrial Standard Architecture — промышленная стандартная архитектура) использовалась в первом компьютере IBM PC, выпущенном в 1981 году, а в 1984 году — в расширенном 16-разрядном варианте в IBM PC/AT. Шина ISA — это основополагающий базис архитектуры персональных компьютеров; она использовалась вплоть до конца 1990-х годов. Кажется странным, что шина с такой “древней” архитектурой использовалась в высокопроизводительных компьютерах, выпускавшихся до конца 1990-х годов, но это объясняется ее надежностью, широкими возможностями и совместимостью. К тому же эта шина до сих пор работает быстрее большинства подключаемых к ней периферийных устройств.

Примечание!

8,33 МГц × 16 бит : 2 такта = 66,64 Мбит/с (или 8,33 Мбайт/с)

Эта шина использовалась в первом компьютере IBM PC. В новых системах она не применяется, но до сих пор эксплуатируются сотни тысяч компьютеров с такой шиной, в том числе системы на базе процессоров 286 и 386.


Хотя эта шина очень проста, компания IBM до 1987 года не публиковала ее полного описания и временных диаграмм сигналов на линиях данных и адреса. Поэтому при создании плат адаптеров для первых IBM-совместимых компьютеров разработчикам приходилось самим разбираться в ее работе. По мере распространения IBM-совместимых компьютеров и их превращения в промышленный стандарт процесс разработки существенно упростился.

  • высота — 4,2 дюйма (106,68 мм);
  • длина — 13,13 дюйма (333,5 мм);
  • толщина — 0,5 дюйма (12,7 мм).

16-разрядная шина ISA


Обычная плата адаптера класса AT имеет следующие размеры:

  • высота — 4,8 дюйма (121,92 мм);
  • длина — 13,13 дюйма (333,5 мм);
  • толщина — 0,5 дюйма (12,7 мм).

В компьютерах класса AT могут встретиться платы высотой как 4,8 дюйма, так и 4,2 дюйма (соответствующие старым платам для компьютеров класса PC/XT). Платы с уменьшенной высотой устанавливались в компьютере класса XT модели 286. В данной модели с системной платой, предназначенной для компьютера класса AT, использовался корпус от XT, поэтому высоту плат адаптеров пришлось уменьшить до 4,2 дюйма. После этого большинство производителей стали выпускать только адаптеры с уменьшенной высотой, которые можно установить в любой корпус.

32-разрядная шина ISA

Спустя некоторое время после выпуска 32-разрядного процессора были разработаны первые стандарты на соответствующую шину. Еще до появления первых проектов архитектур МСА и EISA некоторые компании начали разрабатывать собственные конструкции, представляющие собой расширение архитектуры ISA. Хотя их было выпущено сравнительно немного, некоторые из них встречаются даже сейчас.

Дополнительные линии этих шин обычно использовались только при работе с платами расширения памяти и видеоадаптерами, выпускаемыми компаниями, создавшими данный стандарт. Их параметры и разводки разъемов существенно отличаются от стандартных, к тому же их спецификации и схемы контактов не распространялись.

Шина МСА

Появление 32-разрядных микросхем привело к тому, что шина ISA перестала соответствовать возможностям нового поколения процессоров. Процессор 386 может одновременно обрабатывать 32 бит данных, а шина ISA — только 16 бит. Вместо того чтобы снова расширить шину ISA, компания IBM разработала новый стандарт архитектуры. Так появилась шина МСА (Micro Channel Architecture — микроканальная архитектура), которая совершенно не похожа на шину ISA и во всех отношениях превосходит ее.

Компания IBM хотела не просто заменить старый стандарт ISA новым, но и вынудить производителей материнских плат приобретать лицензии на используемые ими технологии. Многие производители купили лицензии на шину ISA, созданную компанией IBM, однако политика лицензирования была не очень агрессивной, и многим удавалось выпускать свои платы и без лицензии на шину. Проблемы, связанные с лицензированием, привели к разработке альтернативной шины EISA (см. следующий раздел), что существенно замедлило распространение МСА.

Работать с компьютерами МСА значительно проще, чем с их предшественниками; это может подтвердить каждый, кто имел с ними дело. В них нет никаких перемычек или переключателей — ни на системной плате, ни на платах адаптеров. Вместо этого можно использовать специальный Reference-диск, поставляемый вместе с компьютерной системой, а также Option-диски, поставляемые вместе с отдельными платами адаптеров. Установив плату, достаточно загрузить файлы с Option-диска на Reference-диск, после чего Option-диск больше не нужен. Reference-диск содержал специальную BIOS и программу настройки для конкретной системы MCA, а конфигурировать систему без подобного диска было просто невозможно. Более подробная информация о шине MCA приведена в предыдущих изданиях настоящей книги, содержащихся на прилагаемом компакт-диске.

Шина EISA

Стандарт шины EISA (Extended Industry Standard Architecture — расширенная промышленная стандартная архитектура) появился в 1988 году в ответ на требование IBM лицензировать использование шины МСА. Конкуренты не сочли нужным платить задним числом за давно используемую шину ISA и, проигнорировав новую разработку IBM, создали свой проект шины.

Вначале разработкой шины EISA занималась компания Compaq, стремившаяся выйти изпод диктата IBM и прекрасно понимавшая, что никто не будет производить ее шины, если она останется единственной компанией, использующей их. Поэтому компания Compaq принялась активно налаживать контакты с другими ведущими производителями компьютерной техники. В результате был создан комитет EISA — некоммерческая организация, целью которой был контроль за разработкой и внедрением шины EISA. Было выпущено весьма ограниченное количество адаптеров EISA. Как правило, это были контроллеры дисковых массивов и серверные сетевые адаптеры.

Количество линий в шине EISA по сравнению с ISA увеличилось до 90 (55 новых), при этом размеры разъема остались прежними. На первый взгляд, 32-разрядный слот EISA выглядит почти так же, как 16-разрядный слот ISA. На самом деле разъем шины EISA является сдвоенным. Первый ряд контактов соответствует 16-разрядному слоту ISA, а остальные расположены в глубине разъема и относятся к расширению EISA. Таким образом, платы ISA могли продолжать использоваться в разъемах EISA. Хотя такой совместимости было недостаточно, чтобы шина EISA завоевала широкую популярность, это привело к созданию следующего стандарта, VL-Bus. Размеры платы EISA таковы:

  • высота — 5 дюймов (127 мм);
  • длина — 13,13 дюйма (333,5 мм);
  • щирина — 0,5 дюйма (12,7 мм).

Используя шину EISA, можно передавать до 32 бит данных одновременно с тактовой частотой 8,33 МГц. В большинстве случаев передача данных осуществляется минимум за два такта, хотя возможна и большая скорость передачи (если плата адаптера имеет достаточное быстродействие). Максимальная полоса пропускания шины составляет около 33 Мбайт/с: 8,33 МГц × 4 байт (32 бит) = 33,32 Мбайт/с.

Наверняка многие и вас знают или даже видели, каким образом управляются большие автоматизированные объекты, например, атомная станция или завод со множеством технологических линий: основное действо часто происходит в большой комнате, с кучей экранов, лампочек и пультов. Это комплекс управления обычно называется ГЩУ — главный щит управления для контроля за производственным объектом.

Наверняка вам было интересно, как всё это работает с точки зрения аппаратной и программной части, и какие там используются протоколы передачи данных. В этой статье мы разберемся, как различные данные попадают на ГЩУ, как подаются команды на оборудование, и что вообще нужно, чтобы управлять компрессорной станцией, установкой производства пропана, линией сборки автомобиля или даже канализационно-насосной установкой.

Нижний уровень или полевая шина — то, с чего всё начинается

Этот неясный для непосвященных набор слов используется, когда нужно описать средства общения устройств управления с подведомственным оборудованием, например, модулями ввода-вывода или измерительными устройствами.



Общая схема автоматизации промышленного объекта

Итак, электрический сигнал от датчика проходит некое расстояние по кабельным линиям (чаще по обычному медному кабелю с некоторым количеством жил), к которым подсоединяются несколько датчиков. Затем сигнал попадает в модуль обработки (модуль ввода-вывода), там он преобразуется в понятный контроллеру цифровой язык. Далее этот сигнал по полевой шине попадает непосредственно в контроллер, где и обрабатывается уже окончательно. На основе таких сигналов и строится логика работы самого контроллера. Существует и обратный путь: от контроллера команда управления по полевой шине попадает в модуль вывода, где преобразуется из цифрового вида в аналоговый и поступает по кабельным линиям к исполнительным механизмам и различным устройствам (на схеме выше не указаны).

Верхний уровень: от гирлянды до целой рабочей станции

Если оператору повезло больше, то в качестве верхнего уровня ему достанется панель оператора — некий плоскопанельный компьютер, который тем или иным образом получает данные для отображения от контроллера и выводит их на экран. Такая панель обычно монтируется на сам шкаф автоматики, поэтому взаимодействовать с ней приходится, как правило, стоя, что вызывает неудобства, плюс качество и размер изображения — если это малоформатная панелm — оставляет желать лучшего.


Ну и, наконец, аттракцион невиданной щедрости — рабочая станция (а то и несколько дублирующих), представляющая собой обычный персональный компьютер.

Для наглядного отображения информации на рабочих станциях и плоскопанельных компьютерах используют специализированное программное обеспечение — SCADA-системы. На человеческий язык SCADA переводится как система диспетчерского управления и сбора данных. Она включает в себя множество компонентов, таких как человеко-машинный интерфейс, визуализирующий технологические процессы, систему управления этими процессами, систему архивирования параметров и ведение журнала событий, систему управления тревогами и т.д. Всё это дает оператору полноценную картину происходящих на производстве процессов, а также возможность ими управлять и оперативно реагировать на отклонения от технологического процесса.

В общем-то, этот верхний уровень менее интересен, нежели полевая шина, поскольку этого верхнего уровня может вообще не быть (из серии нечего там смотреть оператору, контроллер сам разберется, что и как нужно делать).

Мало кто знает, но на седьмой день создания мира Бог не отдыхал, а создавал Modbus. Наравне с HART-протоколом, Modbus, пожалуй, самый старый промышленный протокол передачи данных, он появился аж в 1979 году.

Более того, регистр передачи данных Modbus является 16-битным, что сразу же накладывает ограничения на передачу типов real и double. Они передаются либо по частям, либо с потерей точности. Хотя Modbus до сих пор повсеместно используется в случаях, когда не нужна высокая скорость обмена и потеря передаваемых данных не критична. Многие производители различных устройств любят расширять протокол Modbus своим исключительным и очень оригинальным образом, добавляя нестандартные функции. Поэтому данный протокол имеет множество мутаций и отклонений от нормы, но все же до сих пор успешно живет в современном мире.
Протокол HART тоже существует с восьмидесятых годов, это промышленный протокол обмена поверх двухпроводной линии токовой петли, в которую напрямую включаются датчики 4-20 мА и другие приборы с поддержкой протокола HART.

Для коммутации линий HART используются специальные устройства, так называемые HART-модемы. Также существуют преобразователи, которые на выходе предоставляют пользователю уже, допустим, протокол Modbus.

Примечателен HART, пожалуй, тем, что помимо аналоговых сигналов датчиков 4-20 мА в цепи передается и цифровой сигнал самого протокола, это позволяет соединить цифровую и аналоговую часть в одной кабельной линии. Современные HART-модемы могут подключаться в USB-порт контроллера, соединяться по Bluetooth, либо же старинным способом через последовательный порт. Десяток лет назад по аналогии с Wi-Fi появился и беспроводной стандарт WirelessHART, работающий в диапазоне ISM.

Второе поколение протоколов или не совсем промышленные шины ISA, PCI(e) и VME

На смену протоколам Modbus и HART пришли не совсем промышленные шины, такие как ISA (MicroPC, PC/104) или PCI/PCIe (CompactPCI, CompactPCI Serial, StacPC), а также VME.



Контроллер и модули ввода-вывода в каркасе PXI на шине PCI. Источник: National Instruments Corporation

Все бы ничего с этими шинами ISA, PCI(e) и VME, особенно для тех времен: и скорость обмена не огорчает, и расположены компоненты системы в едином каркасе, компактно и удобно, горячей замены плат ввода-вывода может и не быть, но пока еще и не очень хочется.

Но есть ложка дегтя, и не одна. Распределенную систему довольно сложно построить в такой конфигурации, шина обмена локальная, нужно что-то придумывать для обмена данными с другими подчиненными или равноправными узлами, тот же Modbus поверх TCP/IP или какой другой протокол, в общем, удобств маловато. Ну и вторая не очень приятная штука: платы ввода-вывода обычно ждут на вход какой-то унифицированный сигнал, и гальванической развязки с полевым оборудованием у них нет, поэтому нужно городить огород из различных модулей преобразования и промежуточной схемотехники, что сильно усложняет элементную базу.



Промежуточные модули преобразования сигнала с гальванической развязкой. Источник: DataForth Corporation

Как работают современные промышленные шины и протоколы

А что теперь? К сегодняшнему дню классическая идеология построения автоматизированных систем немного поменялась. Роль сыграли множество факторов, начиная с того, что автоматизировать тоже должно быть удобно, и заканчивая тенденцией на распределенные автоматизированные системы с удаленными друг от друга узлами.

Пожалуй, можно сказать, что основных концепций построения систем автоматизации на сегодняшний день две: локализованные и распределенные автоматизированные системы.

В случае с локализованными системами, где сбор данных и управление централизовано в одном конкретном месте, востребована концепция некоего набора модулей ввода-вывода, соединенных между собой общей быстрой шиной, включая контроллер со своим протоколом обмена. При этом, как правило, модули ввода-вывода включают в себя и преобразователь сигнала и гальваническую развязку (хотя, разумеется, не всегда). То есть конечному потребителю достаточно понять, какие типы датчиков и механизмов будут присутствовать в автоматизированной системе, сосчитать количество требуемых модулей ввода-вывода для разных типов сигналов и соединить их в одну общую линейку с контроллером. В этом случае, как правило, каждый производитель использует свой любимый протокол обмена между модулями ввода-вывода и контроллером, и вариантов тут может быть масса.

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

Как разработчики выбирают протокол для своего проекта? Все современные протоколы обмена обеспечивают довольно высокое быстродействие, поэтому зачастую выбор того или иного производителя обусловлен не скоростью обмена по этой самой промышленной шине. Не так важна и реализация самого протокола, потому что, с точки зрения разработчика системы, это все равно будет черный ящик, который обеспечивает некую внутреннюю структуру обмена и не рассчитан на вмешательство извне. Чаще всего обращают внимание на практические характеристики: производительность вычислителя, удобство применения концепции производителя к поставленной задаче, наличие нужных типов модулей ввода-вывода, возможность горячей замены модулей без разрыва шины и т.д.

Популярные поставщики оборудования предлагают собственные реализации промышленных протоколов: например, всем известная компания Siemens разрабатывает свою серию протоколов Profinet и Profibus, компании B&R — протокол Powerlink, Rockwell Automation — протокол EtherNet/IP. Отечественное решение в этом списке примеров: версия протокола FBUS от российской компании Fastwel.

Есть и более универсальные решения, которые не привязаны к конкретному производителю, такие как EtherCAT и CAN. Мы подробно разберем эти протоколы в продолжении статьи и разберемся, какие из них лучше подходят для конкретных применений: автомобильной и аэрокосмической промышленности, производства электроники, систем позиционирования и робототехники. Оставайтесь на связи!

С момента появления домашних компьютеров существует возможность расширять их функционал путём установки большего количества RAM, более ёмких накопителей, дополнительных комплектующих. Но только с появлением IBM PC привычной стала идея о полностью открытой модульной компьютерной системе. А именно, концепция карт расширения позволила пользователям компьютеров не зависеть от конфигураций систем, предлагаемых производителями. Подобные конфигурации можно было, в ограниченных пределах, расширять комплектующими, рассчитанными исключительно на эти системы. Благодаря универсальным картам расширения появились целые отрасли промышленности, они стали и причиной возникновения большого рынка любительских устройств, которые можно было подключать к компьютерам.


Такая открытость ISA означала то, что можно было достаточно легко и дёшево создавать собственные ISA-карты. То же касалось и шины PCI, которая появилась после ISA и была такой же открытой. В результате до сих пор существует полная жизни экосистема, в которой есть место и любительским звуковым картам, рассчитанным на слоты PCI или ISA, и картам расширения, позволяющим оснастить IBM PC 1981-го года поддержкой USB, и много чему ещё.

С чего начать тому, кто в наши дни хочет заняться работой с ISA- и PCI-картами?

Цена простоты


По мере того, как разработчики клонов PC использовали в своих моделях компьютеров всё более быстрые процессоры, частота шины AT, в итоге, пришла к значениям, находящимся где-то между 10 и 16 МГц. Это, понятно, привело к тому, что многие существующие AT-карты (ISA) работали в подобных системах неправильно. Через некоторое время большинство производителей оборудования сделало так, чтобы частота шины не была бы напрямую связана с частотой процессора. Но несмотря на то, что в названии шины ISA есть намёк на нечто стандартизированное, настоящего стандарта этой шины не существовало.

В итоге же шина ISA дожила до наших дней, сохранившись, в основном, в промышленном оборудовании и во встраиваемых системах (например, в виде шины LPC), в то время как в других сферах был сначала осуществлён переход на PCI, а позже — на PCIe. А вот интерфейсы для подключения видеокарт к компьютерам шли своим путём. Речь идёт о шинах VESA Local Bus (VLB) и Accelerated Graphics Port (AGP), которые представляют собой специализированные интерфейсы, нацеленные на нужды GPU.

Начало работы с новыми старыми технологиями


При разработке устройств для ISA и PCI физический интерфейс тоже особых проблем не доставляет, так как и в том и в другом случаях используются контакты, расположенные на ребре платы. Именно такой вариант расположения контактов на платах, актуальный до наших дней, был выбран, преимущественно, из-за его дешевизны и надёжности. На плате расширения нет какого-то физического коннектора. Там, на краю, находятся лишь контактные площадки, которые позволяют подключить плату к слоту. При проектировании подобных плат, правда, надо обращать внимание на их толщину, так как от неё зависит надёжность контакта. Обычно хорошо показывает себя толщина платы в 1,6 мм.

Если кто-то хочет самостоятельно создать ISA или PCI-плату — в интернете можно найти параметры контактов для таких плат. Например — этот отличный обзор. Тут, в частности, есть сведения о расстоянии между контактными площадками, о форме платы в том месте, где находятся контакты, о размерах контактных площадок и о других параметрах плат и контактов.

При проектировании электрических цепей плат стоит знать о том, что ISA использует напряжение в 5 В, а PCI может использовать 5 В, 3,3 В, или и то и другое. В случае с PCI платы различают, используя выступы в PCI-слотах и выемки на картах (ключи). Так, если в слоте имеется один выступ, расположенный на расстоянии 56,21 мм от той его стороны, на котором находятся разъёмы подключаемой к нему карты, то это будет слот, рассчитанный на карты, поддерживающие напряжение 3,3 В. Выступ, расположенный на расстоянии 104,77 мм от края слота, указывает на слот для 5 В-карт. На краях карт есть соответствующие выемки. Если карта поддерживает и 5, и 3,3 В — то на ней будет две выемки (это — так называемые универсальные карты).


Ключи на PCI-картах и разъёмах

Существуют 32-битные и 64-битные варианты PCI. Причём, всеобщий интерес на рынке домашних компьютеров вызвал именно первый вариант шины. Если говорить о развитии PCI, то можно отметить интерфейс PCI-X. Эта шина, в 64-битном варианте, в основном, применялась в серверных системах. В PCI-X удвоена максимальная частота шины (с 66 до 133 МГц) и убрана поддержка 5 В. Поэтому PCI-X-карты часто работают при их установке в слоты PCI, рассчитанные на 3,3 В (то же самое справедливо и для PCI-карт, устанавливаемых в слоты PCI-X). 64-битная карта, и PCI, и PCI-X, может перейти в 32-битный режим в том случае, если она установлена в более короткий, 32-битный слот.

Работа с шинами

Каждое устройство, подключённое к шине, увеличивает нагрузку на неё. Кроме того, если речь идёт о шинах с общими линиями связи, важно, чтобы отдельные устройства могли бы отключаться от этих линий в то время, когда они эти линии не используют. Обычно для реализации такой схемы работы используется буферный элемент с тремя состояниями. Например — такой, как распространённый 74LS244.


Логическая схема 74LS244

74LS244 может не только обеспечивать изоляцию, что умеют и стандартные цифровые буферы. Этот элемент может переключаться в высокоимпедансное состояние (Hi-Z), что равносильно отключению устройства.

PCI-карты, по идее, тоже можно создавать, используя подобный подход, но обычно в коммерческих PCI-картах используют специализированные интегральные схемы для ускорения ввода-вывода, которые предоставляют компонентам карт простой интерфейс, похожий на ISA. Подобные решения в наши дни, правда, нельзя назвать дешёвыми (если только не рисковать, связываясь с чем-то вроде WCH CH365). Поэтому хорошей альтернативой подобным решениям является реализация PCI-контроллера на базе FPGA. MCA-версия вышеупомянутой карты Snark Barker использует для взаимодействия с шиной MCA CPLD. На сайтах вроде OpenCores имеются проекты, ориентированные на PCI, которые можно использовать в качестве отправной точки для собственных разработок.

Обмен данными с шинами ISA и PCI


В случае с ISA адрес IO-порта задаётся в самой плате, а для распознавания адреса используется декодер, находящийся на линиях адресного сигнала. Часто на платах для выбора адреса, а так же — линий IRQ и DMA использовались переключатели или перемычки. Технология ISA PnP была призвана улучшить этот процесс, но по факту принесла больше вреда, чем пользы. В случае с PCI технология PnP является частью стандарта. Шина PCI осуществляет поиск устройств при загрузке, а встроенная ROM (BIOS) запрашивает у карт сведения об их нуждах, после чего адреса и другие параметры задаются автоматически.

Итоги

Правда, шины ISA и PCI хороши тем, что они доступны даже любителям. Скорости этих шин, если нужно отлаживать или анализировать платы, вполне укладываются в возможности любительского аппаратного обеспечения и соответствующих осциллографов. Использование достаточно медленных параллельных шин данных означает, что дифференциальные сигналы тут не применяются, а это облегчает трассировку плат.

Хотя те старые шины, о которых мы говорили, не являются игроками той же лиги, что и шина PCIe, их возможности и их широкая доступность означают, что они могут дать старым компьютерам второй шанс. Даже если речь идёт о чём-то очень простом, вроде накопителя, основанного на флэш-памяти, предназначенного для первого IBM PC.

Введение

Пару дней назад мне попался на глаза мой самый первый компьютер – старичок 386й, на процессоре от АМД (Am386-DX), с 4 мегабайтами RAM, VGA-видеокартой и мульти-платой, берущей на себя функции контроллера дисковода, харда, параллельного и последовательного портов.
Конечно, он давно уже был избавлен от своего корпуса и от древнего, почившего харда – теперь он представлял собой просто материнскую плату с парой плат расширения. Несколько лет назад я подключал к нему более новый хард, на 10 ГБ (изначально в нем стоял диск всего на 200 мегабайт), на который я поставил FreeDOS.


Железо

image


Воспользовавшись онлайн симулятором логических схем Logic.Ly, я построил эту схему базируясь на микросхемах, которые были у меня в наличии – 74HC04, четверной элемент NOT, 74HC30 — восьмивходовый NAND и 74HC10, тройной трехвходовый NAND.
Так как элемента OR у нас нет, вспоминаем правила Де Моргана – отрицание конъюнкции есть дизъюнкция отрицаний и отрицание дизъюнкции есть конъюнкция отрицаний, или, в виде логических равенств


Этим и воспользуемся:


Чистого AND у нас тоже нет, поэтому подадим его составляющие на трехвходовый блок NAND и будем входить в прерывание по спаду.
Как видно, вся логика вмещается ровно в три корпуса.


К этим условиям добавляется наличие активного уровня на IOR или IOW (не забываем, что на них, согласно стандарту, активный уровень низкий, то есть нам приходят уже инвертированные сигналы, ~IOR и ~IOW):

Итоговая схема выглядит так:


Теперь начинаем собирать ее в железе, пользуясь макеткой. Сначала расставим три первые микросхемы, к которым идет больше всего входных сигналов, и озаботимся их соединением с шинами питания и земли.


Внимательно добавим соединим выходные цепи, после чего добавим входные в виде достаточно длинных щупов, которые в последствие воткнем в материнскую плату компьютера:


Для удобства я временно закрепил старшие адресные входы слева (А3-А9), младшие справа (А0-А2), а посередине вывел сигнал CS2.

Давайте временно отвлечемся от сборки и попробуем посмотреть осциллографом, что же у нас вышло. Итак, соединяем адресные входы с шиной – так как ISA это именно шина, нам не нужно пытаться воткнуться щупами в тот же разъем, куда вставлена плата контроллера ATA, выбираем любой нам удобный. Щупы, к сожалению, оказались маловаты для таких отверстий, поэтому сверху я воткнул еще и гребенку прямых пинов – по отдельности и щупы и пины выпадают, а вот вместе держатся довольно неплохо.
Также не забываем подключить землю и питание схемы к ISA, а заодно – землю щупов осциллографа.
Включаем осциллограф и компьютер(я сразу зашел в меню настройки БИОСа) и тыкаемся в сигнал CLK. Мы должны увидеть что-то типа этого:


Это, понятное дело, тактовый сигнал шины, частота которого обычно равна 8 МГц. На моей материнской плате его частота равна 7.19 МГц, что отражено в настройках БИОСа. Видимо, это особенность железа – БИОС не позволил мне понизить эту частоту, или хотя бы выставить ее ровно в 8 МГц, упорно выставляя 7.19 МГц. Ну да ладно.
Проверяем контакты входов нашей схемы – тыкнувшись в любой из них мы получим хаотичный сигнал на экране осциллографа, так как система постоянно обращается к разным адресам и портам. Так что если на входе тишина, это значит, что у вас отошел контакт, и его необходимо перепроверить.
Теперь подключаемся к нашему сигналу CS2 и наблюдаем следующую картину:


Вполне ожидаемо – сигналы IOR и IOW не участвуют в формировании CS2, так что он становится активным при совпадении адреса на шине с заданным нами (0x1F0-0x1F7 и 0x3F6). Система проводит регулярную регенерацию DRAM, поэтому мы получаем красивый периодический сигнал. Сейчас самое время поднастроить развертку и уровни осциллографа, чтобы видеть сигналы во всей красе.
Убедившись, что все работает, обесточиваем схему и дособираем ее доконца, получив адскую мешанину проводов типа этого:


Снова включаем компьютер, заходим в меню настройки БИОСа, включаем осциллограф.
Никаких сигналов! Что ж, пришла пора проверить правильность наших выкладок – выбираем пункт “Autodetect hard drive”. Первый диск определяется быстро, и, скорее всего, на экране осциллографа мы ничего не успеем заметить, если только не включили одиночный режим.
А вот второй диск (по причине его отсутствия) будет детектиться достаточночно долго, чтобы мы увидеть на экране компьютера это:


А на экране осциллографа – вот это:


Чтобы совсем убедиться в нашей правоте, выходим из детекта дисков, включаем одиночный режим осциллографа и внимательно смотрим на его экран – ничего! Сколько бы мы не ждали, CS не становится активным! Но стоит только зайти в детектирование дисков, как мы снова ловим знакомую картинку, которая вполне соответствует стандартам — цикли I/O длится четыре такта шины.
Что ж, самое время взять плату с STM32 и подключить ее к системе!
Я подключил следующим образом:

Шина данных ISA (D0 – D7) подключены к GPIOD.0 – GPIOD.7,
Три младших линии адреса (A0 – A2) – к GPIOD.8 – GPIOD.10,
Линию адреса A9 – к GPIOD.11 (нам ведь нужен будет этот бит, чтобы понять, что обращение идет не к 0x1F6, а к 0x3F6!)
Линии IOW и IOR к GPIOD.12 и GPIOD.13.
Сигнал CS – к GPIOB.0

Теперь при прерывании на GPIOB.0 нам необходимо будет просто прочесть GPIOD->IDR (Input Data Register), в котором младшие 8 бит будут искомыми данными, следующие четыре – адресом (причем, возможными комбинациями будут 0000 – 0111 и 1011, соответствующие портам 0x1F0 – 0x1F7 и 0x3F6), следующие два – режимом (чтения при 01 либо записи при 10).
Тут важно отметить следующее – если вдруг мы получим результат с битами режима, находящимися в невалидном состоянии – 00 либо 11, это будет сигнализировать нам об ошибке работы – этот факт нам очень скоро пригодится.
Итак, переходим к софту.

С софтом все предельно просто – мы настраиваем GPIOD на вход, как и GPIOB.0, после чего настраиваем прерывание по спаду на линии EXTI, соединенной с GPIOB.0.
В обработчике прерывания мы будем только читать значение из GPIOD и инкрементировать указатель на буфер. Этот буфер потом можно будет послать на компьютер для анализа по любому интерфейсу, либо вовсе не заморачиваться с этим и посмотреть его прямо в дебаге.
Код настройки представлен ниже:


А вот — код обработчика прерывания:

Тесты, отладка и допиливание

Пришло время проверить, что у нас получилось! Запускаем компьютер, заходим в настройку БИОСа. Запускаем дебаг STMки. Заходим в детектирование дисков, и, после детекта диска C, приостанавливаем выполнение программы контроллера. В окне дебага мы видим, что какие-то данные наловились, и их немало!
Дальше я поступил следующим образом – из окна дебага скопировал содержимое буфера в MS Exel, чтобы разбить на колонки и избавиться от первой, содержащей имя переменной, после чего скопировал столбец со значениями в новый текстовый файл, и получил что-то вроде этого:


Однако, запустим программу, я столкнулся с большой проблемой – очень многие записи из файла содержали режим доступа 11, что означало отсутствие сигналов чтения/записи. Так как вход в интеррапт был возможен только при наличии одного из этих сигналов, я сделал вывод, что интеррапт длится дольше, чем идет цикл шины, и я просто не успеваю считать валидные данные.
Для проверки этой гипотезы я решил выставлять пин GPIOB.2 в 1 при входе в интеррапт, и сбрасывать его в 0 при выходе, после чего повесил на него щуп осциллографа.
Результат был удручающий:


Как видно, система входит в интеррапт уже у самого конца цикла I/O, несмотря на обещанные 12 тактов на вход. Не помог даже атрибут (naked), разница была совершенно незначительной.
Это меня огорчило, но я решил попробовать разогнать контроллер – те же AVRки очень хорошо поддавались разгону, почему бы не проверить, как с этим обстоит дело у STM32. Для этого нам необходимо пойти в файл system_stm32f10x.c, в процедуру инициализации системного тактового сигнала SetSysClockTo72, и найти строку


В этой строке следует поменять константу RCC_CFGR_PLLMULL9 на что-нибудь побольше. Скажу сразу – я попробовал все варианты и в итоге остановился на максимальном значении, RCC_CFGR_PLLMULL16. Таким образом, контроллер совершенно спокойно завелся на частоте 128 МГц вместо 72, даже не греясь.
Кстати, совсем хорошо было бы привязать тактовый сигнал контроллера к CLK шины ISA, чтобы работать с ней синхронно, но мне очень не хотелось отпаивать кварц на отладочной плате, поэтому я не стал этого делать.
Посмотрим, что выдает осциллограф теперь:


Наконец-то мы стали входить в интеррапт достаточно рано для того чтобы успеть его обработать! Давайте снова наберем входных данных и попробуем их проанализировать.
Я несколько дополнил программу, чтобы отчет выдавался форматированным и сразу с именами регистров, к которым идет обращение. В случае с неправильным режимом доступа, в отчет добавляется строка о невалидности данных.
Вот результат работы программы:

Как мы видим, невалидных данных больше нет.
Попробуем разобраться, как БИОС проводит детектирование.
В начале он настойчиво пишет-читает в регистры, задающие адрес – удостоверяясь, что вычитывается то же значение, которое было записано. Если контроллер ATA отсутствует в системе, то БИОС так и будет долго-долго пытаться записать-прочитать этот самый регистр, 0x1F4 – вот пример отчета при вытащенной плате контроллера:

На этом пока все, спасибо за внимание.

Upd:
Только что обнаружил интересную вещь. Если в настройках проекта выставить оптимизацию O1 вместо O3, то время входа в интеррапт становится точно таким, каким и должно быть. После некоторых исследований, я выяснил, что при включенной оптимизации О2 либо О3 компилятор переставляет инструкции, из-за чего сигнальный пин устанавливается в 1 не сразу же после входа в интеррапт, а уже после выполнения части кода.
Таким образом, при оптимизации О1 на осциллографе видно, что система вошла в обработчик интеррапта раньше, но время выполнения этого обработчика больше, чем в случае с О3.

Вы здесь: Главная Системные платы Типы шин ввода-вывода Шина ISA

Архитектура ЭВМ

Компоненты ПК

Интерфейсы

Мини блог

Самое читаемое

  • Арифметико логическое устройство (АЛУ)
  • Страничный механизм в процессорах 386+. Механизм трансляции страниц
  • Организация разделов на диске
  • Диск Picture CD
  • White Book/Super Video CD
  • Прямой доступ к памяти, эмуляция ISA DMA (PC/PCI, DDMA)
  • Карты PCMCIA: интерфейсы PC Card, CardBus
  • Таблица дескрипторов прерываний
  • Разъемы процессоров
  • Интерфейс Slot A

Шина ISA

Шина ISA (Industrial Standard Architecture — промышленная стандартная архитектура) использовалась в первом компьютере IBM PC, выпущенном в 1981 году, а в 1984 году — в расширенном 16-разрядном варианте в IBM PC/AT. Шина ISA — это основополагающий базис архитектуры персональных компьютеров; она использовалась вплоть до конца 1990-х годов. Кажется странным, что шина с такой “древней” архитектурой использовалась в высокопроизводительных компьютерах, выпускавшихся до конца 1990-х годов, но это объясняется ее надежностью, широкими возможностями и совместимостью. К тому же эта шина до сих пор работает быстрее большинства подключаемых к ней периферийных устройств.

Примечание!

8,33 МГц × 16 бит : 2 такта = 66,64 Мбит/с (или 8,33 Мбайт/с)

Эта шина использовалась в первом компьютере IBM PC. В новых системах она не применяется, но до сих пор эксплуатируются сотни тысяч компьютеров с такой шиной, в том числе системы на базе процессоров 286 и 386.


Хотя эта шина очень проста, компания IBM до 1987 года не публиковала ее полного описания и временных диаграмм сигналов на линиях данных и адреса. Поэтому при создании плат адаптеров для первых IBM-совместимых компьютеров разработчикам приходилось самим разбираться в ее работе. По мере распространения IBM-совместимых компьютеров и их превращения в промышленный стандарт процесс разработки существенно упростился.

  • высота — 4,2 дюйма (106,68 мм);
  • длина — 13,13 дюйма (333,5 мм);
  • толщина — 0,5 дюйма (12,7 мм).

16-разрядная шина ISA


Обычная плата адаптера класса AT имеет следующие размеры:

  • высота — 4,8 дюйма (121,92 мм);
  • длина — 13,13 дюйма (333,5 мм);
  • толщина — 0,5 дюйма (12,7 мм).

В компьютерах класса AT могут встретиться платы высотой как 4,8 дюйма, так и 4,2 дюйма (соответствующие старым платам для компьютеров класса PC/XT). Платы с уменьшенной высотой устанавливались в компьютере класса XT модели 286. В данной модели с системной платой, предназначенной для компьютера класса AT, использовался корпус от XT, поэтому высоту плат адаптеров пришлось уменьшить до 4,2 дюйма. После этого большинство производителей стали выпускать только адаптеры с уменьшенной высотой, которые можно установить в любой корпус.

32-разрядная шина ISA

Спустя некоторое время после выпуска 32-разрядного процессора были разработаны первые стандарты на соответствующую шину. Еще до появления первых проектов архитектур МСА и EISA некоторые компании начали разрабатывать собственные конструкции, представляющие собой расширение архитектуры ISA. Хотя их было выпущено сравнительно немного, некоторые из них встречаются даже сейчас.

Дополнительные линии этих шин обычно использовались только при работе с платами расширения памяти и видеоадаптерами, выпускаемыми компаниями, создавшими данный стандарт. Их параметры и разводки разъемов существенно отличаются от стандартных, к тому же их спецификации и схемы контактов не распространялись.

Читайте также: