Аппаратные интерфейсы ПК. Энциклопедия
Шрифт:
♦
К новым управляющим сигналам относятся следующие.
♦
♦
♦
♦
В шине EISA на дополнительных контактах слотов (недоступных картам ISA) располагается расширение шин данных и адреса до 32 бит, а также набор сигналов, обеспечивающих передачу данных в синхронном режиме с возможностью пакетных циклов.
6.1.1. Обычная передача данных
Для передачи данных от исполнителя к задатчику предназначены циклы чтения ячейки памяти или порта ввода-вывода, для передачи данных от задатчика к исполнителю — циклы записи ячейки памяти или порта ввода-вывода. В каждом цикле текущий (на время данного цикла) задатчик формирует адрес обращения и управляющие сигналы, а в циклах записи еще и данные на шине. Адресуемое устройство-исполнитель в соответствии с полученными управляющими сигналами принимает (в цикле записи) или формирует (в цикле чтения) данные. Также оно может, при необходимости, управлять длительностью цикла и разрядностью передачи. Обобщенные временные диаграммы циклов чтения или записи памяти или ввода-вывода приведены на рис. 6.2. Здесь условный сигнал CMD* изображает один из следующих сигналов:
♦
♦
♦
♦
Рис. 6.2. Временные диаграммы циклов чтения или записи на шине ISA
В каждом из рассматриваемых циклов активными (с низким уровнем) могут быть только сигналы лишь из одной строки данного списка, и во время всего цикла сигнал
В начале каждого цикла контроллер шины устанавливает адрес обращения: на линиях
Если устройство имеет более одного регистра (ячейки), то для выбора конкретного регистра (ячейки) ему требуется несколько линий адреса. Как правило, старшие биты шины адреса поступают на вход дешифраторов адреса, формирующих сигналы выборки устройств, а младшие биты — на адресные входы самих устройств. Тогда каждое устройство в пространстве будет занимать наиболее компактную область смежных адресов размером в 2n байт, где n — номер младшей линии адреса, поступающей на дешифратор. Из них реально необходимы 2m адресов, где m — номер самой старшей линии адреса, участвующей в выборе регистра устройства. В идеале должно быть n=m+1: при большем значении n отведенное (по дешифратору) пространство адресов не будет использовано полностью и регистры устройства будут повторяться в отведенной области 2n-m-1 раз, то есть у них появятся адреса-псевдонимы (alias). Адреса-псевдонимы будут отличаться от истинного адреса (минимального из всех псевдонимов) на K×2m+1, где K — целое число. Меньшее значение n недопустимо, поскольку тогда не все регистры устройства будут доступны задатчику. В принципе можно использовать дешифратор адреса, срабатывающий только на какой-то части адресов из области 2n (не кратной степени двойки), если устройству требуется «неудобное» количество регистров. Однако на практике «фигурное выпиливание» областей из пространства адресов обычно не делают, так что часть адресов может пропадать бесполезно.
Разрядность данных в каждом цикле обращения определяется потребностями текущего задатчика и возможностями исполнителя. В IBM PC/XT и системная шина, и шина ISA были 8-разрядными, так что вопросов согласования разрядности не возникало. В IBM PC/AT286 (и 386-SX) системная шина уже 16-разрядная, и в современных ПК с 32- и 64-разрядными системными шинами контроллер шины ISA является ее 16-разрядным задатчиком. На системной плате имеется «косой буфер», он же перестановщик байтов, который при необходимости транслирует данные с младшего байта шины на старшую или обратно. Логика управления этим буфером использует сигналы
3
То есть адрес слова в L-H порядке, принятом для изделий Intel
В табл. 6.4 приводятся состояния сигналов шины ISA для различных вариантов записи в порты ввода-вывода, проверенные экспериментальным путем. Вывод 16-разрядных данных выполнялся командой
Таблица 6.4. Состояние сигналов при 8- и 16-битных обращениях к устройству ISA
| Сигнал (шина) | 1 цикл | 2 цикл |
|---|---|---|
| 1. Вывод 16-разрядных данных в 16-битное устройство по четному адресу | ||
| SBHE# | L | – |
| SA | DX(A0=0) | – |
| D[15:8] | АН | – |
| D[7:0] | AL | – |
| IOCS16# | L | – |
| 2. Вывод 16-разрядных данных в 16-битное устройство по нечетному адресу ххх1, ххх5, xxx9, xxxD | ||
| SBHE# | L | H |
| SA | DX(A0=1) | DX+1 (A0=0) |
| D[15:8] | AL | 0 |
| D[7:0] | AL | AH |
| IOCS16# | L | L |
| 3. Вывод 16-разрядных данных в 16-битное устройство | ||
| SBHE# | H | L |
| SA | DX+1 (A0=0) | DX (A0=1) |
| D[15:8] | 0 | AL |
| D[7:0] | AH | 0 |
| IOCS16# | L | L |
| 4. Вывод 16-разрядных данных в 8-битное устройство по четному адресу | ||
| SBHE# | L | L |
| SA[1:0] | DX(A0=0) | DX+1 (A0=1) |
| D[15:8] | AH | AH |
| D[7:0] | 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[15:8] | AL | 0 |
| D[7:0] | AL | AH |
| IOCS16# | H | H |
| 6. Вывод 16-разрядных данных в 8-битное устройство по нечетному адресу xxx3, ххх7, xxxB, xxxF | ||
| SBHE# | H | L |
| SA[1:0] | DX+1(A0=0) | DX(A0=1) |
| D[15:8] | 0 | AL |
| D[7:0] | AH | AL |
| IOCS16# | H | H |
| 7. Вывод 8-разрядных данных в 16-битное устройство по четному адресу | ||
| SBHE# | H | – |
| SA[1:0] | DX(A0=0) | – |
| D[15:8] | 0 | – |
| D[7:0] | AL | – |
| IOCS16# | L | – |
| 8. Вывод 8-разрядных данных в 16-битное устройство по нечетному адресу | ||
| SBHE# | L | – |
| SA[1:0] | DX(A0=1) | – |
| D[15:8] | AL | – |
| D[7:0] | 0(AL?) | – |
| IOCS16# | L | – |
Момент помещения действительных данных на линии
Некорректное управление сигналом
Номинальная длительность цикла определяется чипсетом и может программироваться в BIOS Setup заданием числа тактов ожидания (wait states). При этом циклы обращения к памяти, как правило, короче циклов обращения к портам ввода-вывода. Для управления длительностью цикла используются также сигналы управления разрядностью передачи: если устройство поддерживает 16-битные передачи, предполагается, что оно может работать с меньшим количеством тактов ожидания. Этим объясняется, что в BIOS Setup длительности циклов ISA задаются раздельно как для памяти и ввода-вывода, так и для 8- и 16-битных операций.