Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия
- Название:Аппаратные интерфейсы ПК. Энциклопедия
- Автор:
- Жанр:
- Издательство:Издательский дом «Питер»
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-180-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Михаил Гук - Аппаратные интерфейсы ПК. Энциклопедия краткое содержание
Книга посвящена аппаратным интерфейсам, использующимся в современных персональных компьютерах и окружающих их устройствах. В ней подробно рассмотрены универсальные внешние интерфейсы, специализированные интерфейсы периферийных устройств, интерфейсы устройств хранения данных, электронной памяти, шины расширения, аудио и видеоинтерфейсы, беспроводные интерфейсы, коммуникационные интерфейсы, вспомогательные последовательные интерфейсы. Сведения по интерфейсам включают состав, описание сигналов и их расположение на разъемах, временные диаграммы, регистровые модели интерфейсных адаптеров, способы использования в самостоятельно разрабатываемых устройствах. Книга адресована широкому кругу специалистов, связанных с эксплуатацией ПК, а также разработчикам аппаратных средств компьютеризированной аппаратуры и их программной поддержки.
Аппаратные интерфейсы ПК. Энциклопедия - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Если устройство имеет более одного регистра (ячейки), то для выбора конкретного регистра (ячейки) ему требуется несколько линий адреса. Как правило, старшие биты шины адреса поступают на вход дешифраторов адреса, формирующих сигналы выборки устройств, а младшие биты — на адресные входы самих устройств. Тогда каждое устройство в пространстве будет занимать наиболее компактную область смежных адресов размером в 2 nбайт, где n — номер младшей линии адреса, поступающей на дешифратор. Из них реально необходимы 2 mадресов, где m — номер самой старшей линии адреса, участвующей в выборе регистра устройства. В идеале должно быть n=m+1: при большем значении n отведенное (по дешифратору) пространство адресов не будет использовано полностью и регистры устройства будут повторяться в отведенной области 2 n-m-1раз, то есть у них появятся адреса-псевдонимы (alias). Адреса-псевдонимы будут отличаться от истинного адреса (минимального из всех псевдонимов) на K×2 m+1, где K — целое число. Меньшее значение n недопустимо, поскольку тогда не все регистры устройства будут доступны задатчику. В принципе можно использовать дешифратор адреса, срабатывающий только на какой-то части адресов из области 2 n(не кратной степени двойки), если устройству требуется «неудобное» количество регистров. Однако на практике «фигурное выпиливание» областей из пространства адресов обычно не делают, так что часть адресов может пропадать бесполезно.
Разрядность данных в каждом цикле обращения определяется потребностями текущего задатчика и возможностями исполнителя. В IBM PC/XT и системная шина, и шина ISA были 8-разрядными, так что вопросов согласования разрядности не возникало. В IBM PC/AT286 (и 386-SX) системная шина уже 16-разрядная, и в современных ПК с 32- и 64-разрядными системными шинами контроллер шины ISA является ее 16-разрядным задатчиком. На системной плате имеется «косой буфер», он же перестановщик байтов, который при необходимости транслирует данные с младшего байта шины на старшую или обратно. Логика управления этим буфером использует сигналы SBHE#
, SA0
, IOCS16#
и MEMCS16#
. Поддержка 16-разрядных передач сообщается адресуемым исполнителем сигналами IOCS16#
и MEMCS16#
при срабатывании его дешифратора адреса. Сигнал IOCS16#
влияет только на разрядность обращений к портам, MEMCS16#
— к памяти. Все операции обмена (транзакции) начинаются задатчиком единообразно, поскольку он еще не «знает» возможностей исполнителя. Развитие событий зависит от намерений задатчика и полученных сигналов разрешения 16-битных передач. В чисто 16-разрядных машинах начальный адрес однозначно соответствует передаваемому байту или младшему байту передаваемого слова [3] То есть адрес слова в L-H порядке, принятом для изделий Intel
. В машинах с 32-разрядными процессорами начальный адрес, выставляемый на шине в начале транзакции, зависит от разрядности данных, запланированной задатчиком, и может зависеть от положения адресуемых данных относительно границы двойного слова (32 битного). 16-разрядные передачи выполняются за 1 цикл только при условии передачи по четному адресу (A0=0) и при ответе исполнителя сигналом 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-битных передач по нечетным адресам обычно избегают (даже чисто подсознательно), и побочные эффекты от такого порядка маловероятны.
Таблица 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 | - |
Момент помещения действительных данных на линии SD[15:0]
определяется управляющими сигналами чтения/записи, так что исполнителю не требуется синхронизация с тактовым сигналом шины. В циклах чтения адресованный исполнитель должен выдать данные на шину по началу (спаду) соответствующего сигнала чтения ( IOR#
, MEMR#
, SMEMR#
) и удерживать их до конца действия сигнала (пока не произойдет подъем сигнала). В циклах записи задатчик выставляет действительные данные несколько позже начала (спада) сигнала записи ( IOW#
, MEMW#
, SMEMW#
). Устройство-исполнитель должно фиксировать для себя эти данные в конце цикла по подъему сигнала записи. От устройства-исполнителя не предусматривается никаких подтверждений исполнения циклов; длительность цикла устанавливает задатчик, но исполнитель может потребовать удлинения или укорочения циклов. С помощью сигнала IOCHRDY
исполнитель может удлинить цикл на произвольное число тактов, при этом задатчик будет вводить дополнительные такты ожидания (wait states). Обычно контроллер шины следит за длительностью цикла и по достижении критического времени принудительно его завершает (по тайм-ауту, возможно, и не сообщая об этом событии). Слишком длинные циклы тормозят работу компьютера, а превышение длительности 15 мкс может привести к сбою регенерации и потере данных в ОЗУ. С помощью сигнала 0W#
исполнитель предлагает задатчику укоротить цикл, исключив такты ожидания. Реакция задатчика на одновременное использование сигналов IOCHRDY
и 0WS#
непредсказуема, этой ситуации следует избегать.
Интервал:
Закладка: