Isa карты. ISA и EISA — одни из первых стандартов шин. Цикл ПДП - Нормальный цикл

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

Наибольший интерес вызывают два типа шин – системный и локальный.

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

Локальной шиной, как правило, называется шина, непосредственно подключенная к контактам микропроцессора, т.е. шина процессора.

Существует несколько стандартов организации системной шины для ПК.

Шина ISA (Industry Standart Architecture) – шина, применявшаяся с первых моделей PC и ставшая промышленным стандартом. В PC моделей XT применялась шина с разрядностью данных 8 бит и адреса – 20 бит. В моделях AT шина была расширена до 16 бит данных и 24 бита адреса, какой она остается до сих пор. Конструктивно шина выполнена в виде двух слотов. Подмножество ISA-8 использует только первый 62-контактный слот, в ISA-16 применяется дополнительный 36-контактный слот. Тактовая частота – 8 МГц. Скорость передачи данных до 16 Мбайтс. Обладает хорошей помехоустойчивостью.

Шина обеспечивает своим абонентам возможность отображения 8- или 16- битных регистров на пространство ввода-вывода и памяти. Диапазон доступных адресов памяти ограничен областью UMA (Unified Memory Architecture - унифицированная архитектура памяти), но для шины ISA-16 специальными опциями BIOS Setup может быть разрешено и пространство в области между15-м и 16-м мегабайтом памяти (правда при этом компьютер не сможет использовать более 15 Мбайт ОЗУ). Диапазон адресов ввода-вывода сверху ограничен количеством используемых для дешифрации бит адреса, нижняя граница ограничена областью адресов 0-FFh, зарезервированных под устройства систнемной платы. В PC была принята 10-битная адресация ввода-вывода, при которой линии адреса A устройствами игнорировались. Таким образом, диапазон адресов устройств шины ISA ограничивается областью 100h-3FFh, то есть всего 758 адресов 8-битных регистров. На некоторые области этих адресов претендуют и системные устройства. Впоследствии стали применять и 12-битную адресацию (диапазон 100h-FFFh), но при ее использовании всегда необходимо учитывать возможность присутствия на шине и старых 10-битных адаптеров, которые "отзовутся" на адрес с подходящими ему битами A во всей допустимой области четыре раза.

В распоряжении абонентов шины ISA-8 может быть до 6 линий запросов прерываний IRQ (Interrupt Request), для ISA-16 их число достигает 11. Заметим, что при конфигурировании BIOS Setup часть из этих запросов могут отобрать устройства системной платы или шина PCI.

Абоненты шины могут использовать до трех 8-битных каналов DMA (Direct Memory Access - прямой доступ к памяти), а на 16-битной шине могут быть доступными еще три 16-битных канала. Сигналы 16-битных каналов могут использоваться и для получения прямого управления шиной устройством Bus- Master. При этом канал DMA используется для обеспечения арбитража управления шиной, а адаптер Bus-Master формирует все адресные и управляющие сигналы шины, не забывая "отдать" управление шиной процессору не более, чем через 15 микросекунд (чтобы не нарушить регенерацию памяти).

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

Каждый абонент должен при операциях чтения управлять шиной данных

(выдавать информацию) только по своим адресам или по обращению к используемому им каналу DMA. Области адресов для чтения не должны пересекаться. "Подсматривать" не ему адресованные операции записи не возбраняется.

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

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

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

С появлением 32-битных процессоров делались попытки расширения разрядности шины, но все 32-битные шины ISA не являются стандартизованными, кроме шины EISA.

2. Шина EISA

С появлением 32-разрядных микропроцессоров 80386 (версия DX) фирмами Compaq, NEC и рядом других фирм, была создана 32-разрядная шина EISA, полностью совместимая с ISA.

Шина EISA (Extended ISA) - жестко стандартизованное расширение ISA до 32 бит. Конструктивное исполнение обеспечивает совместимость с ней и обычных ISA-адаптеров. Узкие дополнительные контакты расширения расположены между ламелями разъема ISA и ниже таким образом, что адаптер ISA, не имеющий дополнительных ключевых прорезей в краевом разъеме, не достает до них. Установка карт EISA в слоты ISA недопустима, поскольку ее специфические цепи попадут на контакты цепей ISA, в результате чего системная плата окажется неработоспособной.

Расширение шины касается не только увеличения разрядности данных и адреса: для режимов EISA используются дополнительные управляющие сигналы, обеспечивающие возможность применения более эффективных режимов передачи. В обычном (не пакетном) режиме передачи за каждую пару тактов может быть передано до 32 бит данных (один такт на фазу адреса, один - на фазу данных). Максимальную производительность шины реализует пакетный режим (Burst Mode) – скоростной режим пересылки пакетов данных без указания текущего адреса внутри пакета. Внутри пакета очередные данные могут передаваться в каждом такте шины, длина пакета может достигать 1024 байт. Шина предусматривает и более производительные режимы DMA, при которых скорость обмена может достигать 33 Мбайт/с. Линии запросов прерываний допускают разделяемое использование, причем сохраняется и совместимость с ISA-картами: каждая линия запроса может программироваться на чувствительность как по перепаду, как в ISA, так и по низкому уровню. Шина допускает потребление каждой картой расширения мощности до 45 Вт, но полную мощность, как правило не потребляет ни один адаптер.

Каждый слот (максимум - 8) и системная плата могут иметь селективное разрешение адресации ввода-вывода и отдельные линии запроса и подтверждения управления шиной. Арбитраж запросов выполняет устройство ISP (Integrated System Peripheral). Обязательной принадлежностью системной платы с шиной EISA является энергонезависимая память конфигурации NVRAM, в которой хранится информация об устройствах EISA для каждого слота. Формат записей стандартизован, для модификации конфигурационной информации применяется специальная утилита ECU (EISA Configuration Utility). Архитектура позволяет при использовании программно-конфигурируемых адаптеров автоматически разрешать конфликты использования системных ресурсов программным путем, но в отличие от спецификации PnP, EISA не допускает динамического реконфигурирования. Все изменения конфигурации возможны только в режиме конфигурирования, после выхода из которого необходима перезагрузка компьютера. Изолированный доступ к портам ввода-вывода каждой карты во время конфигурирования обеспечивает просто: сигнал AEN, разрешающий декодирования адреса в цикле ввода-вывода, на каждый слот приходит по отдельной линии AENx, в это время программно-управляемой. Таким образом можно по отдельности обращаться и к обычным картам ISA, но из это бесполезно, поскольку карты ISA не поддерживают обмена конфигурационной информацией, предусмотренного шиной EISA. На некоторых идеях конфигурирования EISA выросла спецификация PnP для шины ISA (формат конфигурационных записей ESCD во многом напоминает NVRAM EISA).

EISA - дорогая, но оправдывающая себя архитектура, применяющаяся в многозадачных системах, на файл-серверах и везде, где требуется высокоэффективное расширение шины ввода-вывода

Совместимых компьютеров . Служит для подключения плат расширения стандарта 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. У этого термина существуют и другие значения, см. Шина. Компьютерная шина (от … Википедия

Из состояния покоя IDLE порт может вывести запрос транзакции PCI (как от ускорителя, так и с системной стороны) или запрос AGP (только от ускорителя).
В состоянии PCI транзакция PCI выполняется целиком, от подачи адреса и команы до завершения передачи данных. В состоянии AGP ведущее устройство передает только команду и адрес для транзакции (по сигналу РIРЕ# или через порт SВА), ставящейся в очередь; несколько запросов могут следовать сразу друг за другом. В состояние DATA порт переходит, когда у него в очереди имеется необслуженная команда, готовая к исполнению. В этом состоянии происходит передача данных для команд, стоящих в очереди. Это состояние может прерываться запросами PCI (для выполнения целой транзакции) или AGP (для постановки в очередь новой команды), но прерывание возможно только на границах данных транзакций AGP. Когда порт AGP обслужит все команды, он снова переходит в состояние покоя. Все переходы происходят под управлением арбитра порта AGP, реагирующего на поступающие запросы (REQ# от ускорителя и внешние обращения от процессора или других устройств PCI) и ответы контроллера памяти.
Транзакции AGP некоторыми моментами отличаются от транзакций PCI.
* Фаза данных отделена от фазы адреса, чем и обеспечивается конвейеризация.
* Используется собственный набор команд.
* Транзакции адресуются только к системной памяти, используя то же пространство физических адресов, что и PCI. Транзакции могут иметь длину, кратную 8 байтам, и начинаться только по 8-байтной границе. Транзакции чтения иного размера должны выполняться только в режиме PCI; транзакции записи могут использовать сигналы С/ВЕ# для маскирования лишних байтов.
* Длина транзакции явно указывается в запросе.
* Конвейерные запросы не гарантируют когерентность памяти и кэша. Для операций, требующих когерентности, должны использоваться транзакции PCI.
Возможны два способа подачи команд AGP (постановки запросов в очередь), из которых в текущей конфигурации выбирается один, причем изменение способа «на ходу» не допускается.
* Запросы вводятся по шине AD и С/ВЕ с помощью сигнала PIPE# , по каждому фронту CLK ведущее устройство передает очередное двойное слово запроса вместе с кодом команды.
* Команды подаются через внеполосные (sideband) линии адреса SBA . «Внеполосность» означает, что эти сигналы используются независимо от занятости шины AD . Синхронизация подачи запросов зависит от режима (1х, 2х или 4х).
При подаче команд по шине AD во время активности сигнала РIРЕ# код команды AGP (CCCC) кодируетcя сигналами С/ВЕ , при этом на шине AD помещается начальный адрес (на AD ) и длина n (на AD ) запрашиваемого блока данных. Определены следующие команды:
* 0000 (Read) - чтение из памяти (n+1) учетверенных слов (по 8 байт) данных, начиная с указанного адреса;
* 0001 (HP Read) - чтение с высоким приоритетом;
* 0100 (Write) - запись в память;
* 0101 (HP Write) - запись с высоким приоритетом;
* 1000 (Long Read) - «длинное» чтение (n+1)х4 учетверенных слов (до 256 байт данных);
* 1001 (HP Long Read) - «длинное» чтение с высоким приоритетом;
* 1010 (Flush) - очистка, выгрузка данных всех предыдущих команд записи по адресам назначения (на порте AGP выглядит как чтение, возвращающее произвольное учетверенное слово в качестве подтверждения исполнения; адрес и длина, указанные в запросе, значения не имеют);
* 1100 (Fence) - установка «ограждений», позволяющих низкоприоритетному потоку записей не пропускать чтения;
* 1101 (Dual Address Cycle, DAC) - двухадресный цикл для 64-битной адресации: в первом такте по AD передается младшая часть адреса и длина запроса, а во втором - старшая часть адреса (по AD ) и код исполняемой команды (по С/ВЕ ).
При внеполосной подаче команд по шине SBA передаются 16-битные посылки четырех типов. Каждая посылка передается за два приема, по фронту и спаду синхросигнала. Тип посылки кодируется старшими битами:
* тип 1: 0 ААА АААА АААА ALLL - поле длины (LLL) и младшие биты адреса (А);
* тип 2: 10 CС CCRA АААА АААА - код команды (СССС) и средние биты адреса (А);
* тип 3: 110 R АААА АААА АААА - старшие биты адреса (А);
* тип 4: 1110 АААА АААА АААА - дополнительные старшие биты адреса, если требуется 64-битная адресация.
Посылка из всех единиц является пустой командой (NOP ); они посылаются в покое шины SBA . Биты «R» зарезервированы. Посылки типов 2, 3 и 4 являются «липкими» (sticky) - значения, ими определяемые, сохраняются до введения новой посылки того же типа. Постановку команды в очередь инициирует посылка типа 1, задающая длину транзакции и ее младшие адреса, - код команды и остальная часть адреса должны быть определены ранее введенными посылками типов 2-4. Такой способ очень экономно использует такты шины для подачи команд при пересылке массивов. Синхронизация данных на SBA зависит от режима порта.
* В режиме 1х каждая часть передается по фронту CLK ; начало посылки (старшая часть) определяется по получению байта, отличного от 11111111b, по последующему фронту передается младшая часть. Очередная команда может вводиться за каждую пару тактов CLK (когда код команды и старший адрес уже введены).
* В режиме 2х для SBA используется отдельный строб SB__STB , по его спаду передается старшая часть, а по последующему фронту - младшая. Частота этого строба (но не фаза) совпадает с CLK , так что очередная команда может вводиться в каждом такте CLK .
* В режиме 4х используется еще и дополнительный (инверсный) строб SB_STB# . Старшая часть фиксируется по спаду SB_STB , а младшая - по последующему спаду SB__STB# . Частота стробов в два раза выше, чем CLK , так что в каждом такте CLK может вводиться пара команд .
Конечно, полный цикл введения команд (с посылками всех четырех типов) с учетом посылки NOP оказывается больше - 10,5 и 2,5 тактов частоты CLK для режимов 1х, 2х и 4х соответственно.
В ответ на полученные команды порт AGP выполняет передачи данных , причем фаза данных AGP явно не привязана к фазе команды/адреса. Фаза данных будет вводиться портом AGP по готовности системной памяти к запрашиваемому обмену.
Передачи данных AGP выполняются, когда шина находится в состоянии DATA . Фазы данных вводит порт AGP (системная логика), исходя из порядка ранее пришедших к нему команд от ускорителя. Ускоритель узнает о назначения шины AD в последующей транзакции по сигналам ST (действительны только во время сигнала GNT# , коды 100-110 зарезервированы):
* 000 - ведущему устройству будут передаваться данные низкоприоритетного запроса чтения, ранее поставленного в очередь (или выполняется очистка);
* 001 - ведущему устройству будут передаваться данные высокоприоритетного запроса чтения;
* 010 - ведущее устройство должно будет предоставлять данные низкоприоритетного запроса записи;
* 011 - ведущее устройство должно будет предоставлять данные высокоприоритетного запроса записи;
* 111 - ведущему устройству разрешается поставить в очередь команду AGP (сигналом РIРЕ# ) или начать транзакцию PCI (сигналом FRAME# ).
Ускоритель узнает лишь тип и приоритет команды, результаты которой последуют в данной транзакции. Какую именно команду из очереди отрабатывает порт, ускоритель определяет сам, так как именно он ставил их в очередь (ему известен порядок). Никаких тегов транзакций (как, например, в системной шине процессоров Р6) в интерфейсе AGP нет. Имеется только 4 независимых очереди для каждого типа команд (чтение низкоприоритетное, чтение высокоприоритетное, запись низкоприоритетная, запись высокоприоритетная). Фазы исполнения команд разных очередей могут чередоваться произвольным образом; порт имеет право исполнять их в порядке, оптимальном с точки зрения производительности. Реальный порядок исполнения команд (чтения и записи памяти) тоже может изменяться. Однако для каждой очереди порядок выполнения всегда совпадает с порядком подачи команд (об этом знают и ускоритель, и порт).
Запросы AGP с высоким приоритетом для арбитра системной логики являются более приоритетными, чем запросы от центрального процессора и ведущих устройств шины PCI. Запросы AGP с низким приоритетом для арбитра имеют приоритет ниже, чем от процессора, но выше, чем от остальных ведущих устройств. Хотя принятый протокол никак явно не ограничивает глубину очередей, спецификация AGP формально ее ограничивает до 256 запросов. На этапе конфигурирования устройства система РnР устанавливает реальное ограничение (в конфигурационном регистре ускорителя) в соответствии с его возможностями и возможностями системной платы. Программы, работающие с ускорителем (исполняемые и локальным, и центральным процессорами), не должны допускать превышения числа необслуженных команд в очереди (у них для этого имеется вся необходимая информация).
При передаче данных AGP управляющие сигналы, заимствованные от PCI, имеют почти такое же назначение, что и в PCI. Передача данных AGP в режиме 1х очень похожа на циклы PCI, но немного упрощена процедура квитирования (поскольку это выделенный порт и обмен выполняется только с быстрым контроллером системной памяти). В режимах 2х и 4х имеется специфика стробирования.
* В режиме 1х данные (4 байта на AD ) фиксируются получателем по положительному перепаду каждого такта CLK , что обеспечивает пиковую пропускную способность 66,6 х 4 = 266 Мбайт/с.
* В режиме 2х используются стробы данных AD_STB0 и AD_STB1 для линий AD и AD соответственно. Стробы формируются источником данных, приемник фиксирует данные и по спаду, и по фронту строба. Частота стробов совпадает с частотой CLK , что и обеспечивает пиковую пропускную способность 66,6 х 2 х 4 = 533 Мбайт/с.
* В режиме 4х используются еще и дополнительные (инверсные) стробы AD_STB0# и AD_STB1# . Данные фиксируются по спадам и прямых, и инверсных стробов. Частота стробов в два раза выше, чем CLK , что и обеспечивает пиковую пропускную способность 66,6 х 2 х 2 х 4 = 1066 Мбайт/с.
Порт AGP должен отслеживать состояние готовности буферов ускорителя к посылке или получению данных транзакций, поставленных в очередь. Сигналом RBF# (Read Buffer Full) ускоритель может информировать порт о неготовности к приему данных низкоприоритетных транзакций чтения (к приему высокоприоритетных он должен быть всегда готов). Сигналом WBF# (Write Buffer Full) он информирует о неспособности принять первую порцию данных быстрой записи (Fast Write, FW).
Конфигурирование устройств с интерфейсом AGP выполняется так же, как и обычных устройств PCI, - через обращения к регистрам конфигурационного пространства (см. п. 6.2.12). При этом AGP-устройства не требуют внешней линии IDSEL - у них внутренний сигнал разрешения доступа к конфигурационным регистрам соединен с линией AD16 , так что обращение к конфигурационным регистрам AGP обеспечивается при AD16=1 .
В процессе инициализации процедура POST только распределяет системные ресурсы, но операции AGP оставляет запрещенными. Работу AGP разрешает загруженная ОС, предварительно установив требуемые параметры AGP: режим обмена, поддержку быстрой записи, адресации свыше 4Гбайт, способ подачи и допустимое число запросов. Для этого параметры устройств считываются из регистра состояния AGP, а согласованные параметры записываются в регистр команд AGP, расположенный в конфигурационном пространстве. Параметры настройки порта задаются через конфигурационные регистры чипсета системной платы (главного моста).
Регистр состояния AGP сообщает свойства порта: допустимое число запросов в очередях, поддержку внеполосной адресации, быстрой записи, адресации свыше 4Гбайт, режимы 1х, 2х, 4х. В конфигурационном пространстве устройства AGP регистр, на который указывает CAP_PTR , содержит CAP_ID=02 (биты ) и номер версии спецификации AGP (биты - старшая цифра, биты - младшая).
Регистр состояния AGP (адрес CAP_PTR+4 ) содержит следующие поля:
* биты - RQ , допустимое суммарное число запросов, находящихся в очередях: 0-1 команда, 255 - 256 команд;
* бит 9 - SBA , поддержка внеполосной подачи команд;
* биты - резерв (0);
* бит 5 - 4G , поддержка адресации памяти свыше 4 Гбайт;
* бит 4 - FW , поддержка быстрой записи;
* биты 3 - резерв (0);
* биты - RATE , поддерживаемые режимы обмена по AD и SBA : бит 0 - 1х,
* бит 1 - 2х, бит 2 - 4х.
Регистр команд AGP служит для разрешения этих свойств. Регистр команд AGP (адрес CAP_PTR+8 ) содержит следующие поля:
* биты - RQ_DEPTH , глубина очереди команд;
* биты - резерв (0);
* бит 9 - SBA_ENABLE , установка внеполосной подачи команд;
* бит 8 - AGP_ENABLE , разрешение операций AGP;
* биты - резерв (0);
* бит 5 - 4G , разрешение адресации памяти свыше 4 Гбайт (двухадресных циклов и посылок 4-го типа по SBA );
* бит 4 - FW_Enable , разрешение быстрой записи;
* биты 3 - резерв (0);
* биты - DATA_RATE , установка режима обмена: бит 0 - 1х, бит 1 - 2х, бит 2- 4х (должен быть установлен лишь один бит).
Графический адаптер с интерфейсом AGP может быть встроен в системную плату, а может располагаться и на карте расширения, установленной в слот AGP . Внешне карты с портом AGP похожи на PCI (рис. 6.13), но у них используется разъем повышенной плотности с «двухэтажным» (как у EISA) расположением ламелей. Сам разъем находится дальше от задней кромки платы, чем разъем PCI.
Порт AGP может использовать два возможных номинала питания интерфейсных схем: 3,3В и 1,5В (уровни сигналов RST# и CLK всегда равны 3,3В). Снижение напряжения питания буферных схем позволяет повысить достижимую частоту переключений. Для режимов 1х и 2х может использоваться любой из номиналов питания буферов, для режима 4х - только 1,5В. Для работы в режимах 2х и 4х приемникам требуется опорное напряжение Vref. Его номинал для 3,3В составляет 0,4xVddq, для 1,5В - 0,5xVddq. Опорное напряжение для приемников генерируется на стороне передатчиков. На контакт А66 (Vrefgc) графическое устройство подает сигнал для порта, на контакт В66 (Vrefcg) порт (чипсет) подает напряжение для устройства AGP.

Шина ISA (Industrial Standart Architecture) является самой распространенной в промышленных компьютерах по следующим причинам:

наибольшее количество систем из-за невысокой цены;

огромное разнообразие приложений;

скорость передачи до 2 Мбит/c;

хорошая помехоустойчивость;

большое количество совместимого оборудования и программного обеспечения.

Временные диаграммы циклов обмена для устройств ввода/вывода (УВВ) приведены на рисунке 1.5 (все временные параметры приведены для частоты SYSCLK, равной 8 МГц). Циклы начинаются с выставления задатчиком (управляющим устройством шины) адреса на линиях SAO...SA15 и сигнала -SBHE. Отметим, что, несмотря на потенциальную возможность адресации по 16 линиям адреса, чаще всего используются только 10 младших линий SAO...SA9, так как большинство разработанных ранее плат расширения используют только их, и, следовательно, за исключением особых случаев нет смысла обрабатывать старшие разряды SA10...SA15.

В ответ на получение адреса исполнитель (подчиненное устройство шины), распознавший свой адрес, должен сформировать сигнал -I/O CS16 в случае, если обмен должен быть 16-разрядным.

Далее следует собственно команда чтения или записи. При цикле чтения задатчик выставляет сигнал -IOR, в ответ на который исполнитель должен выдать данные на шину данных. Эти данные должны быть сняты исполнителем после окончания сигнала -IOR. В цикле записи задатчик выставляет записываемые данные и сопровождает их стробом записи -IOW. Здесь надо отметить, что хотя в соответствии со стандартом установка записываемых данных предшествует выставлению -IOW, в некоторых компьютерах реализуется обратный порядок: сначала выставляется -IOW, а затем появляются данные. Поэтому при проектировании УВВ надо рассматривать как момент действительности данных только задний (положительный) фронт сигнала -IOW.

В случае, когда УВВ не успевает выполнить требуемую от него команду в темпе системной шины, оно может приостановить на целое число периодов сигнала SYSCLK завершение цикла чтения или записи с помощью снятия (перевода в низкий уровень) сигнала I/O CH RDY (так называемый удлиненный цикл). Это производится в ответ на получение сигнала -IOR или -IOW. Сигнал I/O CH RDY может удерживаться низким не более 15,6 мкс, в противном случае процессор переходит в режим обработки немаскируемого прерывания. Отметим, что некоторые изготовители персональных компьютеров указывают в сопроводительной документации другие допустимые величины этого временного интервала (например, 2,5 мкс), так что не следует ориентироваться на максимальную величину, указанную в стандарте, иначе нет гарантии работы УС во всех компьютерах.

Рисунок 1.5 - Временные диаграммы циклов чтения и записи (Т -- период сигнала SYSCLK; все временные интервалы в наносекундах)

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

Выходные каскады системных передатчиков сигналов УВВ должны выдавать ток низкого уровня не меньше 24 мА (это относится ко всем типам выходных каскадов), а ток высокого уровня--не меньше 3 мА (для выходов с тремя состояниями и ТТЛ).

Входные каскады системных приемников сигналов должны потреблять входной ток низкого уровня не больше 0,8 мА, а входной ток высокого уровня -- не больше 0,04 мА.

Кроме этого необходимо учитывать, что максимальная длина печатного проводника от контакта магистрального разъема до вывода микросхемы не должна превышать 65 миллиметров, а максимальная емкость относительно земли по каждому контакту магистрального разъема не должна быть больше 20 пФ.

К некоторым линиям магистрали подключены нагрузочные резисторы, идущие на шину питания +5 В. К линиям -IOR, -IOW, -MEMR, -MEMW, -SMEMR, -SMEMW, -I/O CH СК подключены резисторы 4,7 кОм, к линиям -I/O CS 16, -MEM CS 16, -REFRESH, -MASTER, -OWS - 300 Ом, а к линии I/O CH RDY -- 1 кОм. Кроме того, к некоторым линиям магистрали подключены последовательные резисторы: к линиям -IOR, -IOW, -MEMR, -MEMW, -SMEMR, -SMEMW и OSC - резисторы номиналом 22 Ом, а к линии SYSCLK -- 27 Ом.

Таблица 1.1 - Описание сигналов шин ISA

Обозначение

Назначение

Нап-равление

источника

Адресные сигналы

LA<23...17>

Адресные сигналы

Разрешение старшего байта по линиям SD<15...8>

Строб для записи адреса по линиям LA

Разрешение адреса. Сообщает устройствам о выполнении на шине циклов ПДП

Шина данных

Чтение памяти (чтение памяти в пределах первого мегабайта адресного пространства)

Запись в память (запись в память в пределах первого мегабайта адресного пространства)

Чтение УВВ

Запись в УВВ

Выбор цикла для памяти, указывает о том, что память 16-ти разрядная

Выбор цикла для УВВ, указывает о том, что УВВ 16-ти разрядное

Готовность канала ввода/вывода. Предназначен для удлинения циклов доступа

0 тактов ожидания

Регенерация памяти

Ведущий. Предназначен для захвата шины внешней платой

Проверка канала ввода/вывода. Сообщение о фатальной ошибке

Сброс устройств

Системная частота

Частота, равная 14.3818 МГц

IRQ<15,14,12,

11,10,9,7...3>

Запрос на прерывание

DRQ<7...5,3...0>

Запрос на ПДП

DASK<7...5, 3...0>

Подтверждение ПДП

Окончание счета ПДП

Примечание:

В таблице используются следующие обозначения:

знак “-” (минус) перед обозначением сигнала означает, что активный уровень этого сигнала - логический ноль;

I - сигнал является входным для внешних плат;

О - сигнал является выходным для внешних плат;

I/O - сигнал является как входным, так и выходным для внешних плат;

ТРИ - выход микросхемы с тремя допустимыми состояниями на выходе;

ТТЛ - выход микросхемы транзисторно-транзисторной логики;

ОК - открытый коллекторный выход.

Таблица 1.2 - Назначение выводов шины ISA

Номер вывода

Сторона А

Сторона B

Сторона C

Сторона D

Таблица 1.3 - Электрические характеристики источников сигналов шины ISA

передатчик

Приемник

передатчик

приемник

Передатчик

Примечания:

все токи в таблице указаны в миллиамперах. Знак “-” перед значением тока означает, что ток вытекает из внешней платы в слот шины;

линия с открытым коллекторным выходом может быть подключена к ТТЛ входу;

по линии с открытым коллекторным выходом ток Ioh (ток утечки) не должен превышать для каждого слота 0.4 миллиампера.

Таблица 1.4 - Максимальные токи потребления внешней платой шины ISA

Напряжение

Примечания:

Внешняя плата использует только 8-ми разрядный слот;

Внешняя плата использует 16-ти разрядный слот;

таблица информирует о том, какие токи разрешается пропускать через разъем внешней платы.

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).

Понравилась статья? Поделиться с друзьями: