Шина isa на материнской плате

Шина ISA (Industrial Standard Architecture)

Шина, как известно, представляет из себя, собственно, набор проводов (линий), соединяющий различные компоненты компьютера для подвода к ним питания и обмена данными. В «минимальной комплектации» шина имеет три типа линий:

  • линии управления;
  • линии адресации;
  • линии данных.

Устройства, подключенные к шине, делятся на две основных категории — bus masters и bus slaves. Bus masters — это устройства, способные управлять работой шины, т.е инициировать запись/чтение и т.д. Bus slaves — соответственно, устройства, которые могут только отвечать на запросы. Правда, есть еще «интеллектуальные слуги» (intelligent slaves), но мы их пока для ясности замнем. Ну вот, собственно, и все, что нужно знать про шины для того, чтобы понять, о чем пойдет речь дальше.

Компания IBM в 1981 представила новую шину для использования в компьютерах серии PC/XT. Шина была крайне проста по дизайну, содержала 53 сигнальных линии и 8 линий питания и представляла собой синхронную 8-битную шину с контролем четности и двухуровневыми прерываниями (trigger-edge interrupts), при использовании которых устройства запрашивают прерывания, изменяя состояние линии соответствующего IRQ с 0 на 1 или обратно. Такая организация запросов прерываний позволяет использовать каждое прерывание только одному устройству. Кроме того, шина не поддерживала дополнительных bus masters, и единственными устройствами, управляющими шиной, были процессор и контроллер DMA на материнской плате.

62-контактный слот включал 8 линий данных, 20 линий адреса (А0-А19), 6 линий запроса прерываний (IRQ2-IRQ7). Таким образом, объем адресуемой памяти составлял 1 Мбайт, и при частоте шины 4.77 МГц пропускная способность достигала 1.2 Мбайта/сек.

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

Недостатки шины, вытекающие из простоты конструкции, очевидны. Поэтому для использования в компьютерах IBM-AT (‘Advanced Technology’) в 1984 году была представлена новая версия шины, впоследствии названной ISA. Сохраняя совместимость со старыми 8-битными платами расширения, новая версия шины обладала рядом существенных преимуществ, как то:

  • добавление 8 линий данных позволило вести 16-битный обмен данными;
  • добавление 4 линий адреса позволило увеличить максимальный размер адресуемой памяти до 16 МВ;
  • были добавлены 5 дополнительных trigger-edged линий IRQ;
  • была реализована частичная поддержка дополнительных bus masters;
  • частота шины была увеличена до 8 MHz;
  • пропускная способность достигла 5.3 МВ/сек.

Реализация bus mastering не была особенно удачной, поскольку, например, запрос на освобождение шины (‘Bus hang-off’) к текущему bus master обрабатывался несколько тактов, к тому же каждый master должен был периодически освобождать шину, чтобы дать возможность провести обновление памяти (memory refresh), или сам проводить обновление. Для обеспечения обратной совместимости с 8-битными платами большинстиво новых возможностей было реализовано путем добавления новых линий. Так как АТ был построен на основе процессора Intel 80286, который был существенно быстрее, чем 8088, пришлось добавить генератор состояний ожидания (wait-state generator). Для обхода этого генератора используется свободная линия (контакт В8 NOWS-‘No Wait State’) исходной 8-битной шины. При установке этой линии в 0 такты ожидания пропускаются. Использование в качестве NOWS линии исходной шины позволяло разработчикам делать как 16-битные, так и 8-битные «быстрые» платы.

Новый слот содержал 4 новых адресных линии (LA20-LA23) и копии трех младших адресных линий (LA17-LA19). Необходимость в таком дублировании возникла из-за того, что адресные линии ХТ были линиями с задержкой (latched lines), и эти задержки приводили к снижению быстродействия периферийных устройств. Использование дублирующего набора адресных линий позволяло 16-битной карте в начале цикла определить, что к ней обращаются, и послать сигнал о том, что она может осуществлять 16-битный обмен. На самом деле, это ключевой момент в обеспечении обратной совместимости. Если процессор пытается осуществить 16-битный доступ к плате, он сможет это сделать только в том случае, если получит от нее соответствующий отклик IO16. В противном случае чипсет инициирует вместо одного 16-битного цикла два 8-битных. И все бы было хорошо, но адресных линий без задержки всего 7, поэтому платы, использующие диапазон адресов меньший, чем 128Кбайт, не могли определить, находится ли переданный адрес в их диапазоне адресов, и, соответственно, послать отклик IO16. Таким образом, многие платы, в том числе платы EMS, не могли использовать 16-битный обмен. Подробнее о функционировании шины ISA можно прочитать в описании.

Читайте также:  Летние шины michelin или continental

Несмотря на отсутствие официального стандарта и технических «изюминок» шина ISA превосходила потребности среднего пользователя образца 1984 года, а «засилье» IBM AT на рынке массовых компьютеров привело к тому, что производители плат расширения и клонов AT приняли ISA за стандарт. Такая популярность шины привела к тому, что слоты ISA до сих пор присутствуют на всех системных платах, и платы ISA до сих производятся. Правда, Microsoft в спецификации PC99 предусматривает отказ от ISA, но, как говорится, до этого нужно еще дожить.

Источник

Радости экспериментов с ISA и PCI

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

В первом IBM PC было пять 8-битных слотов расширения, подключённых прямо к процессору 8088. Компьютер IBM PC/AT был основан на процессоре 80286, в результате слоты стали 16-битными. С помощью слотов расширения к компьютеру можно было подключать практически всё что угодно: графические и сетевые карты, дополнительную память, какие-то особые платы. Хотя для этих слотов расширения и не существовало официального наименования, во времена PC/AT их называли, соответственно, PC-шинами и AT-шинами. А название Industry Standard Architecture (ISA) — это ретроним, который придумали создатели клонов PC.

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

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

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

Сверху вниз: 8-битная XT-карта, 16-битная AT/ISA карта, 32-битная EISA-карта

О шине ISA, и о появившихся до неё шинах PC/AT, нужно знать одну важную вещь. Это — не особенно универсальные шины, так как они используются для работы с устройствами, подключёнными к шинам адреса и памяти процессоров 8088 и 80286. Это значит, что, например, тактовая частота шины равняется тактовой частоте соответствующего процессора. А именно, для PC-шины это — 4,77 МГц, а для PC/AT-шины — это 6-8 МГц. Хотя 8-битные карты обычно можно использовать в 16-битных слотах, нет гарантии того, что такие карты, подключённые к этим слотам, будут нормально работать.

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

Правда, была попытка стандартизировать замену ISA, получившую название Extended ISA (EISA). Эта 32-битная шина, работавшая на частоте 8,33 МГц, была создана в 1988 году. Хотя на рынке домашних компьютеров она и не «взлетела», некоторым вниманием она пользовалась среди пользователей серверного оборудования, особенно — как более дешёвая альтернатива собственной шине IBM Micro Channel architecture (MCA). Компания IBM задумывала эту шину в качестве замены ISA.

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

Читайте также:  Кадр данных can шины

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

Естественным результатом этой бурной истории, в той её части, которая касается ISA, стало то, что тому, кто решил создать новую «карту расширения ISA», следует действовать с осторожностью. Для того чтобы подобное изделие отличалось бы по-настоящему широкой совместимостью, можно разработать 8-битную карту, которая может работать на шинах с частотами, находящимися в диапазоне от 4,77 до 20 МГц. А на разработку 16-битных карт стоит обратить внимание тем, кому не нужно поддерживать компьютеры, основанные на процессоре 8088. При разработке PC/104-карт вообще не должно быть никаких проблем с совместимостью, так как эта шина до крайности близка к наиболее стандартному варианту ISA.

При разработке устройств для 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), что равносильно отключению устройства.

В случае с ISA-картами нам, для организации правильного взаимодействия с шиной, нужно нечто вроде 74LS244 или его двунаправленного варианта 74LS245. У каждой сигнальной линии должен быть буфер или «защёлка». Подробнее об этом можно почитать здесь. А тут описан хороший пример современной ISA-карты, называемой Snark Barker и представляющей собой клон SoundBlaster.

Читайте также:  Сузуки бандит 400 давление в шинах

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

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

После создания новенькой платы с золотыми контактами, и после того, как на ней распаяны буферные элементы или FPGA, нужно ещё и иметь возможность обмениваться данными с шиной ISA или PCI, пользуясь соответствующим протоколом. К счастью, существует множество материалов по ISA, например — этот. А вот протокол PCI, вроде протокола PCIe, это — «коммерческая тайна». В результате соответствующие данные можно официально (и небесплатно) достать лишь на сайте PCI-SIG. Правда, спецификации, всё же, «утекли» в общий доступ.

Конечно, можно использовать существующие ISA- или PCI-проекты в качестве шаблона или руководства для собственных проектов. Вышеупомянутые проекты CPLD/FPGA предлагают нам механизм, позволяющий избежать необходимости в самостоятельной реализации протоколов, а значит — помогают сразу добраться до самого интересного. Создателю платы, в любом случае, придётся использовать систему прерываний (IRQ) для соответствующей шины (выделенные сигнальные линии, основанные, в последних версиях PCI, на сообщениях), а так же учитывать возможность использования DMA (DRQn и DACKn в ISA). Рассказ о тонкостях шин ISA и PCI займёт целую статью. Правда, тем, у кого были ISA-карты с переключателями, или (что хуже), с ISA PnP (Plug’n’Pray), многое из этого должно быть уже знакомо.

Как и в случае с любой другой общей шиной, схема взаимодействия с шиной при записи или чтении данных предусматривает запрос доступа к шине у «хозяина шины» или, в случае с шиной PCI с несколькими «хозяевами», использование процедуры арбитража. К карте расширения, кроме того, можно обращаться напрямую (вот материал об этом, в котором речь идёт об ISA). В Linux это подразумевает использование программ ядра ( sys/io.h ). Сначала получают соответствующие разрешения, а потом уже можно отправлять данные в конкретный IO-порт, соответствующий карте. В целом это выглядит так:

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

Итоги

Конечно, если говорить о разработке собственных ISA- или PCI-плат, то тут были рассмотрены лишь самые основы этого дела. Но, надеюсь, мой материал позволил вам хотя бы увидеть общую картину происходящего. Многое из того, что нужно конкретному разработчику карт расширения, зависит от того, какую именно карту он хочет создать, от того является ли она простой 8-битной картой ISA (PC/XT), или 64-битной картой PCI-X.

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

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

Занимались ли вы разработкой собственных ISA- или PCI-карт?

Источник

Поделиться с друзьями
Шинбург