Контакты шины ISA. Шины ISA и EISA Разъемы на материнской плате isa

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

Примечание!

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

Существует два варианта шины ISA, различающихся количеством разрядов данных: старая 8-разрядная версия и новая 16-разрядная. Старая версия работала на тактовой частоте 4,77 МГц в компьютерах классов PC и XT. Новая версия использовалась в компьютерах класса AT с тактовыми частотами 6 и 8 МГц. Позже было достигнуто соглашение о стандартной максимальной тактовой частоте 8,33 МГц для обеих версий шин, что обеспечило их совместимость. В некоторых системах допускается использование шин при работе с большей частотой, но не все платы адаптеров выдерживают такую скорость. Для передачи данных по шине требуется от двух до восьми тактов. Поэтому максимальная скорость передачи данных по шине ISA составляет 8,33 Мбайт/с:

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

Полоса пропускания 8-разрядной шины вдвое меньше (4,17 Мбайт/с). Однако не забывайте, что это теоретические максимумы - из-за сложного протокола обмена данными реальная пропускная способность шины намного ниже (обычно вдвое). Но даже в этом случае шина ISA работает быстрее, чем большинство подключенных к ней периферийных устройств.

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

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

В разъем вставляется плата адаптера с 62 контактами. На разъем подаются 8 линий данных и 20 линий адреса, что позволяет адресовать до 1 Мбайт памяти. Назначение и расположение контактов разъема 8-разрядной шины ISA показано на рисунке.

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

Плата адаптера для 8-разрядной шины ISA имеет следующие размеры:

  • высота - 4,2 дюйма (106,68 мм);

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

Компания IBM буквально “взорвала” мир ПК, представив в 1984 году модель AT, оснащенную процессором 286. Данный процессор поддерживал 16-разрядную шину данных, что позволяло обеспечить взаимодействие между процессором, системной платой и памятью с использованием 16-разрядных, а не 8-разрядных данных. Хотя процессор и можно было установить на системной плате с 8-разрядной шиной ввода-вывода, все равно обеспечивалось повышенное быстродействие при обмене данными с различными платами, подключаемыми к шине.

Вместо того чтобы создавать новую шину ввода-вывода, IBM решила обеспечить совместимость системы с 8- и 16-разрядными адаптерами, оставив тот же 8-разрядный разъем, но добавив к нему еще один дополнительный. В результате был получен разъем для установки 16-разрядных адаптеров. Впервые представленная в компьютерах PC/AT в августе 1984 года 16-разрядная шина ISA также называлась шиной AT.

Дополнительный разъем в каждом 16-разрядном разъеме расширения добавляет 36 контактов (общее количество контактов для передачи данных при этом увеличивается до 98), необходимых для передачи данных большей разрядности. Кроме того, было изменено назначение двух контактов 8-разрядной части разъема. Однако подобные изменения никак не отразились на работоспособности 8-разрядных плат.

Обычная плата адаптера класса 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. Хотя их было выпущено сравнительно немного, некоторые из них встречаются даже сейчас.

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

Совместимых компьютеров . Служит для подключения плат расширения стандарта ISA. Конструктивно выполняется в виде 62-х или 98-контактного разъёма на материнской плате .

С появлением материнских плат формата ATX шина ISA перестала широко использоваться в компьютерах, хотя встречаются ATX-платы с PCI и одним (или двумя) портами ISA . Но пока её ещё можно встретить в старых -компьютерах, а также в промышленных компьютерах.

Для встроенных систем существует вариант компоновки шины ISA, отличающийся применяемыми разъёмами - шина PC/104 .

История

Видеокарта на шине ISA (Trident 512k)

Впервые шина ISA появилась на компьютерах IBM PC/XT в 1981 году . Это была 8-ми битная шина с тактовой частотой 4,77 МГци скоростью передачи данных 4,77 МБ/с. Разъём состоял из 62-х контактов, из них 8 - для данных, 20 - линии адреса, 6 - для прерываний от IRQ2 до IRQ7.

В 1984 году шина была усовершенствована - стала способной передавать 16-бит данных за такт, увеличена тактовая частота до 8 МГц, размер адресуемой памяти был увеличен с 4 МБ до 16 МБ. Разъём увеличили на 36 контактов, при этом он остался совместим с 8-битными картами расширения, под данные теперь отводилось 16 линий, под адрес 24 линии и под прерывания 11 линий шины.

В консорциумом из девяти производителей компьютеров: (AST Research, Epson, NEC, EISA.

В году компании Microsoft усовершенствовали шину и разработали ISA PnP (Plug and Play), которая позволяла операционной системе самой определять назначаемое прерывание для устройства.

Интерфейс ISA был основным на устаревших системах типа . В новых корпусах форм-фактора 1997 года, этот интерфейс обычно отсутствует.

Ссылки

Wikimedia Foundation . 2010 .

Смотреть что такое "Шина ISA" в других словарях:

    У этого термина существуют и другие значения, см. ISA (значения). 5 разъёмов 16 битной и 1 разъём 8 битной шины ISA ISA (от англ. Industry Standard Architecture, ISA bus, пр … Википедия

    Шина расширения компьютерная шина, которая используется на системной карте компьютеров или промышленных контроллеров, для добавления устройств (плат) в компьютер. Есть несколько видов: Персональные компьютеры ISA 8 и 16 разрядная,… … Википедия

    шина с малым количеством линий - Шина персонального компьютера для подключения устройств, не требовательных к скорости передачи данных: загрузочное ПЗУ (BootROM), последовательные и параллельные порты (COM, LPT), клавиатура, мышь, контроллер флоппи дисковода, различные… …

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

    Компьютерная шина, по которой передаются сиг­налы, определяющие характер обмена информацией по ма­гистрали. Сигналы управления определяют, какую операцию (считывание или запись информации из памяти) нужно производить, синхронизируют обмен… … Википедия

    Шина адреса компьютерная шина, используемая центральным процессором или устройствами, способными инициировать сеансы DMA, для указания физического адреса слова ОЗУ (или начала блока слов), к которому устройство может обратиться для… … Википедия

    ISA: ISA устаревшая системная шина IBM PC совместимых компьютеров. Internet Security and Acceleration Server предыдущее название продукта Microsoft Forefront Threat Management Gateway от компании Microsoft. International Society of… … Википедия

    шина AT-bus - шина усовершенствованной технологии Системный интерфейс, разработанный фирмой IBM для ПЭВМ серии IBM PC AT, является развитием системного интерфейса XT bus, обеспечивает совместимость с ним. В интерфейсе используются 16 разрядная шина данных, 24… … Справочник технического переводчика

    шина EISA - расширенная архитектура промышленного стандарта Системная шина ПК, расширившая возможности шины ISA с 16 ти до 32 х разрядов. Была быстро вытеснена шиной PCI. Тематики информационные технологии в целом Синонимы… … Справочник технического переводчика

    Разъёмы шины PCI Express (сверху вниз: x4, x16, x1 и x16). Ниже обычный 32 битный разъем шины PCI. У этого термина существуют и другие значения, см. Шина. Компьютерная шина (от … Википедия

Шина ISA - первая успешная шина для персональных компьютеров. Изначально имела разрядность 8 бит. С вводом архитектура AT шина ISA стала 16-ти разрядной. Шина ISA была одновременно и периферийной и системной шиной. Через эту шину процессора общался не только с периферийными устройствами, но и с оперативной памятью. Даже регенерация памяти происходила с участием этой шины: примерно каждые 15 мкс специальный контроллер посылал сигнал чтения всех ячеек памяти, что заставляло обновить электрические заряды в конденсаторах оперативной памяти.

Разъем ISA-шины

Встречаются два типа разъемов шины ISA: 8-ми разрядные и 16-ми разрядные.

Первый длинный блок контактов идентичен для обоих видов разъемов. А второй, короткий, присутствует только у 16-ти разрядного разъема ISA .

Контакты шины ISA


8-битная ISA

Контакт Назначение
A1 I/O channel check; active low=parity error
A2-A9 Биты данных (7-0)
A10 I/O Channel ready, pulled low to lengthen memory cycles
A11 Address enable; active high when DMA controls bus
A12-A31 Биты адреса (19-0)
B01 Земля (GND)
B02 Сброс (RESET)
B03 Питание +5 Вольт
B04 IRQ 2
B05 Питание -5 Вольт
B06 DMA Request 2
B07 Питание -12 Вольт
B08 No WaitState
B09 Питание +12 Вольт
B10 Земля (GND)
B11 System Memory Write
B12 System Memory Read
B13 I/O Write
B14 I/O Read
B15 DMA Acknowledge 3
B16 DMA Request 3
B17 DMA Acknowledge 1
B18 DMA Request 1
B19 Refresh
B20 System Clock (67 ns, 8-8.33 MHz, 50% duty cycle)
B21 IRQ 7
B22 IRQ 6
B23 IRQ 5
B24 IRQ 4
B25 IRQ 3
B26 DMA Acknowledge 2
B27 Terminal count; pulses high when DMA term. count reached
B28 Address Latch Enable
B29 Питание +5 Вольт
B30 High-speed Clock (70 ns, 14.31818 MHz, 50% duty cycle)
B31 Земля (GND)

16-битная ISA

Контакт Назначение
C1 System bus high enable (data available on SD8-15)
C2-C8 Биты адреса (23-17)
C9 Memory Read (Active on all memory read cycles)
C10 Memory Write (Active on all memory write cycles)
C11-С18 Биты данных (8-15)
D1 Memory 16-bit chip select (1 wait, 16-bit memory cycle)
D2 I/O 16-bit chip select (1 wait, 16-bit I/O cycle)
D3 IRQ 10
D4 IRQ 11
D5 IRQ 12
D6 IRQ 15
D7 IRQ 14
D8 DMA подтверждение 0
D9 DMA запрос 0
D10 DMA подтверждение 5
D11 DMA запрос 5
D12 DMA подтверждение 6
D13 DMA запрос 6
D14 DMA подтверждение 7
D15 DMA запрос 7
D16 Питание +5 Вольт
D17 Used with DRQ to gain control of system
D18 Земля (GND)

Диспетчеризация

Одновременно шиной ISA может пользоваться только одно устройство. По-умолчанию, шиной владеет центральный процессора. Когда другое устройство хочет послать данные, оно устанавливает соответствующий сигнал. Процессор может подтвердить владение шиной, установив ответный сигнал. Устройство может захватить шины на сколь угодное время. Но каждый 15 мкс оно должно выдавать сигнал REFRESH, что того, чтобы произошла регенерация оперативной памяти.

ISA Bus (Industry Standard Architecture) - шина расширения, применявшаяся с первых моделей PC и ставшая промышленным стандартом, В компьютере XT использовалась шина с разрядностью данных 8 бит и адреса - 20 бит. В компьютерах AT ее расширили до 16 бит данных и 24 бит адреса. Конструктивно, как показано на рис. 6.1, шина выполнена в виде двух щелевых разъемов с шагом выводов 2,54 мм (0,1 дюйма). В подмножестве ISA-8 используется только 62-контакт¬ный слот (ряды А, В), в ISА-16 применяется дополнительный 36-контактный слот (ряды С, D). Шина РС/104, разработанная для встраиваемых контроллеров на базе PC, отличается от обычной ISA только конструктивно. В шине EISA - дорогом 32-разрядном расширении ISA - используется «двухэтажный» слот, позволяющий устанавливать и обычные карты ISA.

Для шины ISA выпущено (и продолжает выпускаться) огромное количество разнообразных карт расширения. Ряд фирм выпускает карты-прототипы (Prototype Card), представляющие собой печатные платы полного или уменьшенного формата с крепежной скобой. На платах установлены обязательные интерфейсные цепи - буфер данных, дешифратор адреса и некоторые другие. Остальная часть платы свободна, и здесь разработчик может разместить макетный вариант своего устройства. Эти платы удобны для проверки нового изделия, а также для монтажа единичных экземпляров устройства, когда разработка и изготовление печатной платы нерентабельно.

Рис. 26 Слот ISA

В каждый момент времени шиной может управлять только одно устройство-задатчик, обращающееся к ресурсам (портам или ячейкам памяти) устройств-исполнителей. Шина ISA обеспечивает возможность обращения к 8- или 16-битным регистрам устройств, отображенным на пространства ввода-вывода и памяти. Диапазон адресов памяти для устройств ограничен областью верхней памяти UM А (АОООО-FFFFFh). Для шины ISA-16 настройками CMOS Setup может быть разрешено пространство между 15-м и 16-м мегабайтом памяти (при этом компьютер не сможет использовать более 15 Мбайт ОЗУ). Для шины ISA диапазон адресов ввода-вывода сверху ограничен количеством задействованных для дешифрации бит адреса, нижняя областью адресов О-FFh недоступна (зарезервирована под устройства системной платы). В PC была принята 10-битная адресация ввода-вывода, при которой линии адреса А устройствами игнорировались. Таким образом, диапазон адресов устройств шины ISА ограничивается областью lOOh-3FFh. Впоследствии стали применять 12-битную адресацию (диапазон lOOh-FFFh). При этом приходится учитывать возможность присутствия на шине старых 10-битных адаптеров, которые «отзовутся» на адрес с подходящими ему битами А во всей допустимой области 12-битного адреса четыре раза (у каждого 10-битного адреса будет еще по три 12-битных псевдонима). Полный 16-битный адрес используется только в шинах EISA и PCI.

Шина ISA-8 может предоставить до 6 линий запросов прерываний, ISА-16 - 11. Часть из них могут «отобрать» устройства системной платы или шина PCI.

Шина ISA-8 позволяет использовать до трех 8-битных каналов DMA. На 16-бит¬ной шине доступны еще три 16-битных и один 8-битный канал.

Все перечисленные ресурсы шины должны быть бесконфликтно распределены. Бесконфликтность подразумевает выполнение перечисленных ниже условий.

  • Каждое устройство-исполнитель должно управлять шиной

данных только при чтении по его адресам или по используемому им каналу DMA. Области адресов, по которым выполняется чтение регистров различных устройств, не должны пересекаться. Поскольку при записи шиной данных управляет лишь текущий задатчик, возможность конфликтов, приводящих к искажениям данных, исключена. «Подсматривать» операции записи, адресованные не данному устройству, не возбраняется.

  • Назначенную линию IRQx или DRQx устройство должно

держать на низком уровне в пассивном состоянии и переводить в высокий уровень для активации запроса. Неиспользуемыми линиями запросов устройство управлять не имеет права, они должны электрически отсоединяться или подключаться к буферу, находящемуся в третьем состоянии. Одной линией запроса может пользоваться только одно устройство. Такая нелепость (с точки зрения схемотехники ТТЛ) была допущена в первых PC и из требований совместимости тиражируется до сих пор.

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

Назначение контактов слотов шин ISA и EISA приведено в таблице

Таблица 11. Основной разъем шин ISA-8, ISA-16 и EISA

Ряд В Ряд А
GND IOCHK#
Reset SD7
5 В SD6
IRQ2/9" SD5
-5 В SD4
DRQ2 SD3
-12В SD2
OWS# 2 SD1
+12В SDO
GND IOCHDRY
SMEMW# AEN
SMEMR# SA19
IOWR# SA18
IORD# SA17
DACK3# SA16
DRQ3 SA15
DACK1# SA14
DRQ1 SA13
REFRESH» SA12
BCLK SA11
IRO7 SA10
IRQ6 SA9
IRQ5 SA8
IRQ4 SA7
IRQ3 SA6
DACK2# SA5
C SA4
BALE SA3
+5 В SA2
Osc SA1
GND SA0

1 В4: XT=IRQ2, AT=IRQ9.

2 В8: XT-Card Selected.

Таблица 12. Дополнительный разъем шин ISA-16 и ЕISA

Ряд O Ряд C
MEMCS16# SBHE#
IOCS16# LA23
IRQ10 LA22
IRQ 11 LA21
IRQ12 LA20
IRQ 15 LA19
IRQ14 LA18
DACKO# LA17
DRQO MEMR#
DACK5# MEMW#
DRQ5 SD8
DACK6# SD9
DRQ6 SD10
DACK7# SD11
DRQ7 SD12
+5B SD13
MASTER* SD14
GND SD15

Сигналы шины ISA естественны для периферийных микросхем фирмы Intel (в стиле семейства 8080). Набор сигналов ISA-8 предельно прост. Программное обращение к ячейкам памяти и пространства ввода-вывода обеспечивают следующие сигналы:

  • SD - шина данных. Иное название сигналов - Data или D.
  • SA (Addr, A) - шина адреса.
  • AEN - разрешение адресации портов (запрещает ложную

дешифрацию адреса в цикле DMA).

  • IOW# (IOWC#, IOWR#) - запись в порт.
  • IOR# (IORC#, IORD#) - чтение порта.
  • SMEMW* (SMEMWR#, SMWTC#) - запись в системную

память (в диапазоне адресов 0-FFFFFh).

  • SMEMR* (SMEMRD#, SMRDC#) - чтение системной

памяти (в диапазоне адресов 0-FFFFFh).

Ниже перечислены сигналы, относящиеся к сигналам запросов прерывания и каналам прямого доступа к памяти.

  • IRQ2/9, IRQ - запросы прерываний. Положительный

перепад сигнала вызывает запрос аппаратного прерывания. Для идентификации источника высокий уровень должен сохраняться до подтверждения прерывания процессором, что затрудняет разделение (совместное использование) прерываний. Линия IRQ2/9 в шинах XT вызывает аппаратное прерывание с номером 2, а в AT - с номером 9.

  • DRQ - запросы 8-битных каналов DMA

(положительным перепадом).

  • DACK# - подтверждение запросов 8-битных каналов
  • ТС - признак завершения счетчика циклов DMA.

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

  • IOCHRDY (CHRDY, I/OCHRDY) - готовность устройства,

низкий уровень удлиняет текущий цикл (не более 15 икс).

  • BALE (ALE) - разрешение защелки адреса. После его

спада в каждом цикле процессора линии SA гарантированно содержат действительный адрес.

  • REFRESH* (REF#) - цикл регенерации памяти (в XT

называется DACKO#).

Сигнал появляется каждые 15 мкс, при этом шина адреса указывает на очередную регенерируемую строку памяти.

  • ЮСНК# - контроль канала, низкий уровень вызывает NMI

CPU (разрешение и индикация в системных портах 061h, 062h).

  • RESET (RESDRV, RESETDRV) - сигнал аппаратного

сброса (активный уровень - высокий).

  • BCLK (CLK) - синхронизация шины с частотой около 8

МГц. ПУ могут не использовать этот сигнал, работая только по управляющим сигналам записи и чтения.

  • OSC - несинхронизированная с шиной частота 14,431818

МГц (использовалась старыми дисплейными адаптерами).

Кроме логических сигналов шина имеет контакты для разводки питания +5, -5, +12 и-12 В.

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

  • SD - шина данных.
  • SBHE# - признак наличия данных на линиях SD.
  • LA - нефиксированные сигналы адреса, требующие

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

  • IRQ, IRQ - дополнительные запросы

прерываний.

  • DRQ - запросы 16-битных каналов DMA

(положительным перепадом).

  • DACK# - подтверждение запросов 16-битных каналов
  • DRQO и DACKO* - запрос и подтверждение 8-битного

канала DMA, освободившегося от регенерации памяти.

Перечисленные ниже сигналы связаны с переключением разрядности данных.

  • МEMCS16#(М16#) - адресуемое устройство поддерживает

16-битные обращения к памяти.

  • IOCS16* (I/OCS16*, Ю16#) - адресуемое устройство

поддерживает 16-битные обращения к портам.

К новым управляющим сигналам относятся следующие.

  • MEMW# (MWTC#) - запись в память в любой области до
  • MEMR# (MRDC#) - чтение памяти в любой области до 16
  • OWS# (SRDY#, NOWS#, ENDXFR) - укорочение текущего

цикла по инициативе адресованного устройства.

  • MASTER* (MASTER 16#) - запрос от устройства,

использующего 16-битный канал DMA на управление шиной. При получении подтверждения DACK Bus-Master может захватить шину.

Для передачи данных от исполнителя к задатчику предназначены циклы чтения ячейки памяти или порта ввода-вывода, для передачи данных от задатчика к исполнителю - циклы записи ячейки памяти или порта ввода-вывода. В каждом цикле текущий (на время данного цикла) задатчик формирует адрес обращения и управляющие сигналы, а в циклах записи еще и данные на шине. Адресуемое устройство-исполнитель в соответствии с полученными управляющими сигналами принимает (в цикле записи) или формирует (в цикле чтения) данные. Также оно может, при необходимости, управлять длительностью цикла и разрядностью передачи. Обобщенные временные диаграммы циклов чтения или записи памяти или ввода-вывода приведены на рис. 6.2. Здесь условный сигнал CMD* изображает один из следующих сигналов:

  • SMEMR#, MEMR# - в цикле чтения памяти;
  • SMEMW#, MEMW# - в цикле записи памяти;
  • IOR# - в цикле чтения порта ввода-вывода;
  • IOW# - в цикле записи порта ввода-вывода.

В каждом из рассматриваемых циклов активными (с низким уровнем) могут быть только сигналы лишь из одной строки данного списка, и во время всего цикла сигнал AEN имеет низкий уровень. Цикл прямого доступа к памяти, в котором это правило не соблюдается, рассмотрен ниже, и в таком цикле сигнал AEN будет иметь высокий уровень. Сигналы SMEMR* и SMEMW* вырабатываются из сигналов MEMR# и MEMW# соответственно, когда адрес принадлежит диапазону О-FFFFFh. Поэтому сигналы SMEMR* и SMEMW* задержаны относительно MEMR# и MEMW* на 5-10 не.

Рис. 27. Временные диаграммы циклов чтения или записи на шине ISA

В начале каждого цикла контроллер шины устанавливает адрес обращения: на линиях SA и SBHE# действительный адрес сохраняется на время всего текущего цикла; на линиях 1_А адрес действителен только в начале цикла, так что требуется его «защелкивание». Каждое устройство имеет дешифратор адреса - комбинационную схему, срабатывающую только тогда, когда на шине присутствует адрес, относящийся к данному устройству. В фазе адресации устройства еще «не знают», к какому из пространств (памяти или ввода-вывода) относится выставленный адрес. Но дешифраторы адресов уже срабатывают, и, когда в следующей фазе шина управления сообщает тип операции, адресуемое устройство уже оказывается готовым к ее исполнению. Если устройство использует линии LA (они нужны лишь для обращений к памяти выше границы FFFFFh), то они на дешифратор адреса должны проходить через регистр-защелку, «прозрачный» во время действия сигнала BALE и фиксирующий состояние выходов по его спаду. Это позволяет дешифратору, всегда вносящему некоторую задержку, начинать работу раньше, чем поступит управляющий сигнал чтения или записи. При обращении к портам ввода-вывода сигналы 1_А не используются.

Если устройство имеет более одного регистра (ячейки), то для выбора конкретного регистра (ячейки) ему требуется несколько линий адреса. Как правило, старшие биты шины адреса поступают на вход дешифраторов адреса, формирующих сигналы выборки устройств, а младшие биты - на адресные входы самих устройств. Тогда каждое устройство в пространстве будет занимать наиболее компактную область смежных адресов размером в 2П байт, где п - номер младшей линии адреса, поступающей на дешифратор. Из них реально необходимы 2Ш адресов, где m - номер самой старшей линии адреса, участвующей в выборе регистра устройства. В идеале должно быть n=m+l: при большем значении п отведенное (по дешифратору) пространство адресов не будет использовано полностью и регистры устройства будут повторяться в отведенной области 2n"m"1 раз, то есть у них появятся адреса-псевдонимы (alias). Адреса-псевдонимы будут отличаться от истинного адреса (минимального из всех псевдонимов) на Kx2m+1, где К - целое число. Меньшее значение п недопустимо, поскольку тогда не все регистры устройства будут доступны задатчику. В принципе можно использовать дешифратор адреса, срабатывающий только на какой-то части адресов из области 2П (не кратной степени двойки), если устройству требуется «неудобное» количество регистров. Однако на практике «фигурное выпиливание» областей из пространства адресов обычно не делают, так что часть адресов может пропадать бесполезно.

Разрядность данных в каждом цикле обращения определяется потребностями текущего задатчика и возможностями исполнителя. В IBM PC/XT и системная шина, и шина ISA были 8-разрядными, так что вопросов согласования разрядности не возникало. В IBM PC/AT286 (и 386-SX) системная шина уже 16-разрядная, и в современных ПК с 32- и 64-разрядными системными шинами контроллер шины ISA является ее 16-разрядным задатчиком. На системной плате имеется «косой буфер», он же перестановщик байтов, который при необходимости транслирует данные с младшего байта шины на старшую или обратно. Логика управления этим буфером использует сигналы SBHE#, SAO, IOCS16* и MEMCS16*. Поддержка 16-разрядных передач сообщается адресуемым исполнителем сигналами IOCS16* и MEMCS16* при срабатывании его дешифратора адреса. Сигнал IOCS16# влияет только на разрядность обращений к портам, MEMCS16* - к памяти. Все операции обмена (транзакции) начинаются задатчиком единообразно, поскольку он еще не «знает» возможностей исполнителя. Развитие событий зависит от намерений задатчика и полученных сигналов разрешения 16-битных передач. В чисто 16-разрядных машинах начальный адрес однозначно соответствует передаваемому байту или младшему байту передаваемого слова1. В машинах с 32-разрядными процессорами начальный адрес, выставляемый на шине в начале транзакции, зависит от разрядности данных, запланированной задатчиком, и может зависеть от положения адресуемых данных относительно границы двойного слова (32 битного). 16-разрядные передачи выполняются за 1 цикл только при условии передачи по четному адресу (АСНО) и при ответе исполнителя сигналом IOCS16* или MEMCS16*, в иных случаях они разбиваются на два цикла. 32-разрядные передачи будут разбиваться на 2 (16+16), 3 (8+16+8) или 4 (8+8+8+8) цикла, в зависимости от возможностей исполнителя и четности адреса. Порядок, в котором передаются байты (во времени), неоднозначен (возможен как инкремент, так и декремент адреса), но в адресном пространстве они раскладываются по своим местам однозначно.

В табл. 6.4 приводятся состояния сигналов шины ISA для различных вариантов записи в порты ввода-вывода, проверенные экспериментальным путем. Вывод 16-разрядных данных выполнялся командой OUT DX,AX (в DX - адрес порта, в АХ - данные; AL содержит младший байт, АН - старший), вывод 8-разрядных - командой OUT DX,AL. Несколько неожиданные (для автора) варианты 3 и 6 с декрементом адреса, возможно, будут иметь место не на всех системных платах, но их следует иметь в виду при проектировании устройств, претендующих на глобальную совместимость. Правда на практике 16-битных передач по нечетным адресам обычно избегают (даже чисто подсознательно), и побочные эффекты от такого порядка маловероятны.

Таблица 13. Состояние сигналов при 8- и 16-битных обращениях к устройству ISA

Сигнал (шина) 1 цикл 2 цикл
1. Вывод 16-разрядных данных в 16-битное устройство по четному адресу
SBHE# L
SA DX(AO=0)
D АН
D AL
IOCS16# L
2. Вывод 16-разрядных данных в 16-битное устройство по нечетному адресу ххх1,ххх5, xxx9,xxxD
SBHE# L H
SA DX(AO=1) DX+1 (A0=0)
D AL
D AL AH
IOCS16# L L
3. Вывод 16-разрядных данных в 16-битное устройство по нечетному адресу хххЗ,ххх7, xxxB.xxxF
SBHE# H L
SA (A0=0) DX (A0= 1
D AL
D AH
IOCS16* L L
4. Вывод 16-разрядных данных в 8-битное устройство по четному адресу
SBHE# L L
SA DX(AO=0) DX+1(AO=1)
D AH AH
D AL AH
IOCS16* H H
5. Вывод 16-разрядных данных в 8-битное устройство по нечетному адресу ххх1,ххх5, xxx9,xxxD
SBHE# L H
SA[ 1:0] DX (A0= 1) DX+1 (A0=0)
D AL
D AL AH
IOCS16# H H
6. Вывод 16-разрядных данных в 8-битное устройство по нечетному адресу хххЗ,ххх7, xxxB,xxxF
SBHE# H L
SA[ 1:0] DX+1(AO=0) DX(AO=1)
D AL
D AH AL
IOCS16# H H
7. Вывод 8-разрядных данных в 16-битное устройство по четному адресу
SBHE# H
SA DX(AO=0)
D
D AL
IOCS16* L
8. Вывод 8-разрядных данных в 16-битное устройство по нечетному адресу
SBHE# L
SA DX(AO=1)
D AL
D 0(AL?)
IOCS16* L

Момент помещения действительных данных на линии SD определяется управляющими сигналами чтения/записи, так что исполнителю не требуется синхронизация с тактовым сигналом шины. В циклах чтения адресованный исполнитель должен выдать данные на шину по началу (спаду) соответствующего сигнала чтения (IOR#, MEMR#, SMEMR#) и удерживать их до конца действия сигнала (пока не произойдет подъем сигнала). В циклах записи задатчик выставляет действительные данные несколько позже начала (спада) сигнала записи (IOW#, MEMW#, SMEMW#). Устройство-исполнитель должно фиксировать для себя эти данные в конце цикла по подъему сигнала записи. От устройства-исполнителя не предусматривается никаких подтверждений исполнения циклов; длительность цикла устанавливает задатчик, но исполнитель может потребовать удлинения или укорочения циклов. С помощью сигнала IOCHRDY исполнитель может удлинить цикл на произвольное число тактов, при этом задатчик будет вводить дополнительные такты ожидания (wait states). Обычно контроллер шины следит за длительностью цикла и по достижении критического времени принудительно его завершает (по тайм-ауту, возможно, и не сообщая об этом событии). Слишком длинные циклы тормозят работу компьютера, а превышение длительности 15 мкс может привести к сбою регенерации и потере данных в ОЗУ. С помощью сигнала OWS# исполнитель предлагает задатчику укоротить цикл, исключив такты ожидания. Реакция задатчика на одновременное использование сигналов IOCHRDY и OWS# непредсказуема, этой ситуации следует избегать.

Номинальная длительность цикла определяется чипсетом и может программироваться в BIOS Setup заданием числа тактов ожидания (wait states). При этом циклы обращения к памяти, как правило, короче циклов обращения к портам ввода-вывода. Для управления длительностью цикла используются также сигналы управления разрядностью передачи: если устройство поддерживает 16-битные передачи, предполагается, что оно может работать с меньшим количеством тактов ожидания. Этим объясняется, что в BIOS Setup длительности циклов ISA задаются раздельно как для памяти и ввода-вывода, так и для 8- и 16-битных операций. Кроме длительности цикла, устройства могут быть критичны к времени восстановления (recovery time) - длительности пассивного состояния управляющих сигналов чтения-записи между циклами. Этот параметр также может программироваться в BIOS Setup и тоже раздельно для 8- и 16-разрядных операций.

Карты расширения для подключения к шине данных, как правило, используют буферные микросхемы, раздельные для линий SD и SD. Здесь широко применяются микросхемы 74ALS245 (1533АП6) - 8-разрядные двунаправленные приемопередатчики. Буфер должен открываться сигналом ОЕ# (Output Enable - разрешение выхода), когда на шине адреса присутствует адрес, относящийся к диапазону адресов подключаемого устройства. «Дежурным» является направление передачи «от шины - к устройству»; переключение в обратную сторону производится по сигналу IOR#, если устройство представляет порты ввода-вывода, или MEMRD*, если устройство приписано к пространству памяти. Таким образом, буферы имеют право передавать данные на шину (управлять шиной данных) только во время действия сигнала чтения, относящегося к зоне адресов данного устройства. Карта расширения может являться комбинацией 8- и 16-битных устройств; например, некогда популярные мультикарты содержали 16-битный адаптер AT A и набор 8-битных контроллеров портов COM, LPT, GAME и контроллера НГМД. В таких картах логика управления буферами и сигналами IOCS16* и MSC16* управляется сигналами от дешифратора адреса. Если устройство по данному адресу является 8-разрядным (не формирует сигналы IOCS16* или MSC16*), то оно имеет право разрешать чтение только через буфер линий SD, а буфер старших линий SD (если он имеется на карте) должен быть переведен в третье состояние. Если устройство по данному адресу является 16-разрядным, то оно формирует сигнал IOCS16* или MSC16*, а разрешением буферов управляют сигналы SBHE* и SAO. В этом случае буфер линий SD разрешается только при SAO=0, а буфер линий SD разрешается только при SBHE#=L. Некорректное разрешение буферов может приводить к их конфликту с перестановщиком байтов системной платы и искажениям данных.

Восьмиразрядные устройства (например, микросхемы 8255, 8250, 8253 и т. п.) следует подключать только к линиям SD и при обращении к ним не формировать сигналы IOCS16* или MSC16*. Никакие «косые» буферы (перестановщики байтов) на интерфейсных картах не нужны.

В одном из источников описывается эффект перестановки байтов при обращении к порту ввода-вывода: «Если прочитать слово из порта по четному адресу, значение одно, а если по нечетному - старшие 8 бит предыдущего значения становятся младшими, а старшие нового = FFh». Первые подозрения падают на ошибку в логике управления буферами. На самом деле все объясняется гораздо проще. Пусть имеется устройство с двухбайтным регистром, младший байт которого имеет адрес RO (четный), старший - RO+1, а по адресу R+2 устройство (и никакие другие) не откликается. Пусть в данный момент в нем записано число AA55h, тогда чтением порта по команде IN AX, R0 получим в регистрах процессора AL=55h, AH=AAh. Теперь если попытаться его «прочитать по нечетному адресу», то есть командой IN АХ, R0+1, то получим AL=AAh (содержимое RO+1, к которому мы на самом деле и адресовались!), a AH=FFh (результат чтения «пустоты»). Так что это не «эффект перестановки», а просто незнание общего правила «интеловской» адресации: адресом слова (двойного, учетверенного...) является адрес его младшего байта. Если в нашем устройстве применяется неполная дешифрация адреса (линия SA1 не используется ни для дешифрации адреса, ни для выбора регистра), то мы увидим полную перестановку байт - в AH=55h, результат чтения RO по адресу-псевдониму RO+2. Логика работы контроллера шины вместе со всеми буферами делает обращение к любой ячейке памяти или порту инвариантным к способу программной адресации - что закажешь, то и получишь, но требуется учитывать особенности периферийных устройств, у которых в адресации портов нередко встречаются псевдонимы. Адреса-псевдонимы встречаются и в пространстве памяти (например, копии образов BIOS под границей 1-го и 16-го мегабайтами памяти в «классических» PC/AT).