Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Обычная передача данных






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

♦ SMEMR#, MEMR# — в цикле чтения памяти;

♦ SMEMW#, MEMW# — в цикле записи памяти;

♦ IOR# — в цикле чтения порта ввода-вывода;

♦ IOW# — в цикле записи порта ввода-вывода.

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



Глава 6. Шины и карты расширения


 

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

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

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


6.1. Шины ISA, EISA и PC/104_______________________________ 153

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

1 То есть адрес слова в L-H порядке, принятом для изделий Intel.


154_____________________________________ Глава 6. Шины и карты расширения

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(AO=0)

D[15: 8] АН

D[7: 0] AL -

IOCS16# L

2. Вывод 16-разрядных данных в 16-битное устройство по нечетному адресу ххх1, ххх5, xxx9, xxxD
SBHE# L H

SA DX(AO=1) DX+1 (A0=0)

D[15: 8] AL 0

D[7: 0] AL AH

IOCS16# L L

3. Вывод 16-разрядных данных в 16-битное устройство по нечетному адресу хххЗ, ххх7, xxxB.xxxF
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(AO=0) DX+1(AO=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.1. Шины ISA, EISA и PC/104________________________________________ 155

Сигнал (шина)____________ 1 цикл______________________ 2 цикл______________________

6. Вывод 16-разрядных данных в 8-битное устройство по нечетному адресу хххЗ, ххх7, xxxB, xxxF
SBHE# H L

SA[1: OJ DX+1(AO=0) DX(AO=1)

D[15: 8] 0 AL

D[7: 0] AH AL

IOCS16# H H

7. Вывод 8-разрядных данных в 16-битное устройство по четному адресу
SBHE# H

SA[1: 0] DX(AO=0)

D[15: 8] 0

D[7: 0] AL

IOCS16* L

8. Вывод 8-разрядных данных в 16-битное устройство по нечетному адресу
SBHE# L

SA[1: 0] DX(AO=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 мкс может привести к сбою регенерации и потере данных в ОЗУ. С помощью сигнала OWS# исполни­тель предлагает задатчику укоротить цикл, исключив такты ожидания. Реакция задатчика на одновременное использование сигналов IOCHRDY и OWS# непред­сказуема, этой ситуации следует избегать.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.