Архитектура шины PCI. Интерфейс PCI имеет двухшинную структуру: мультиплексированную шину адреса данных (АД) и шину управления. Интерфейс использует два набора сигналов: базовый и расширенный. Базовый поддерживает мини- мальную конфигурацию, а расширенный дополнительно - 64 разрядные операции, тестирование плат через порт JTAG (IEEE 1149.1), кэш-па- мять и прерывания. В минимальной конфигурации имеется 49 сигналов. В данном электронном учебнике рассматривается только базовая конфигу- рация. Шина PCI процессорно независимая и взаимодействует с главным процессором и памятью через главный мост (Host bus). Интерфейс PCI может иметь иерархическую структуру, взаимодействуя с шиной расшире- ния типа ISA, EISA или MCA через соответствующий контроллер. К шине PCI подсоединены два типа объектов: задатчики и исполнители. Основ- ной операцией на шине является блочный обмен последовательностью данных между задатчиком и исполнителем при выполнении операций чте- ния и записи данных. Блок или пакет передаваемых данных в спецификации PCI называет- ся транзакцией (transaction), в начале транзакции идет адрес испол- нителя (фаза адреса), а за ним произвольное число 32 битовых данных (последовательность фаз данных), двойных слов (DWORD). Задатчик - объект, который захватывает в свое распоряжение шину, начинает тран- закцию и адресует исполнителя. Исполнитель - объект, который адресу- ется задатчиком и отрабатывает транзакцию, принимая (запись) или вы- давая (чтение) данные. Объект может быть только задатчиком или только исполнителем, но может быть и задатчиком, и исполнителем одновременно, но в разные моменты времени. На шине могут работать несколько задатчиков. Для разделения во времени шины между ними используется арбитр, который соединяется с каждым задатчиком с помощью двух индивидуальных линий типа точ- ка-точка. Одна идет от задатчика - линия запроса шины (REQ), другая от арбитра - линия разрешения подключения задатчика к шине (GRN). Шина PCI поддерживает автоматическую конфигурацию устройств ввода/вывода (plug and play). С этой целью, для выбора устройств в процессе конфигурации на шине предусмотрена индивидуальная линия ти- па точка-точка для каждого объекта (IDSEL). Она идет как задатчикам, так и к исполнителям, осуществляя выбор устройства при операции кон- фигурации. На шине PCI используются два метода адресации. Положительное декодирование (positiv decoding) - когда объекту задается диапазон адресов, и он отвечает на операцию, когда выстав- ленный на шину адрес попадает в этот диапазон. Здесь каждое устройс- тво имеет свой дешифратор адреса. Вычитательное декодирование (subtractiv decoding) - когда объ- ект отвечает на операцию, которую не опознали другие объекты. Такой адрес может быть только у одного объекта на шине. Этот метод исполь- зуется при построении стандартных шин расширения, например, ISA. В спецификации PCI определены три адресных пространства: памя- ти, устройств ввода-вывода и регистров конфигурации. Инициируемые процессором циклы обращения к устройствам вво- да-вывода, как правило выполняются в виде одиночных фаз передачи данных. На шине PCI не предусмотрен процесс перестановки байт. Указа- тель байта (byte enable) используется для определения, какие байты данных передаются в данной фазе данных. Интерфейс PCI реализует контроль передачи данных по нечетности, используя дополнительную линию PAR для разряда контроля. Контроль производится для всех разрядов группы сигналов "Адрес и данные", ко- торая включает 32 разряда адреса данных и 4 разряда идентификации команды или данных. Операции над шинами. Один такт синхроимпульсов CLK, следующий за импульсом, который производит установку или сброс соответствующих сигналов, использует- ся как такт для компенсации состязаний этих сигналов. Его называют Т-циклом (turnaround cycle). Считывание этих сигналов допускается только следующим импульсом. Т-цикл для разных сигналов использует разные такты в транзакции. Например, для сигналов IRDY#, TRDY#, DEV- SEL#, STOP# как их Т-цикл используют адресную фазу. Сигналы FRAME#, С/BE[3::0]#, AD[31::0] используют такт холостого хода на шине между транзакциями, как их Т-цикл. Такт холостого хода на шине (IDLE цикл) появляетсят тогда, когда сброшены и FRAME# и IRDY#. Т-цикл обознача- ется на схемах как . При выполнении любой транзакции используются следующие сигналы шины: REQ#, GRN#, FRAME#, AD[31::0], C/BE[3::0]#, IRDY#, TRDY#, DEV- SEL#, STOP#. Непосредственно процессом передачи данных в процессе выполнения транзакции управляют три сигнала FRAME#, IRDY# и TRDY#. Рассмотрим назначение и действие этих сигналов в процессе пере- дачи данных между задатчиком и исполнителем. Начало и продолжение транзакции. Транзакцию начинает задатчик, предварительно получив разрешение на работу на шине. Это разрешение задатчик получает от арбитра, пос- лавшего сигнал запроса REQ# и получив разрешение GRN# от него. После этого задатчик начинает транзакцию с адресной фазы уста- новив по 1-ому импульсу транзакции сигналы FRAME#, адреса AD[31::0] и команды C/BE[3::0]#. Эти сигналы становятся достоверными ко 2-ому импульсу транзакции. По второму импульсу в соответствии с установленным адресом оп- ределяется исполнитель и соответствующая команда. При операции чте- ния по этому импульсу задатчик выставляет сигнал IRDY#, который го- ворит исполнителю, что задатчик готов принять данные. Исполнитель ко 2-ому импульсу организует Т-цикл для сигналов AD[31::0]. По 2-ому импульсу он может установить, если успеет, сигнал DEV- SEL#, сообщающий задатчику, что исполнитель найден и имеет право проводить транзакцию, если не успевает, то установка DEVSEL# проис- ходит на 3-м импульсе. На 2-м импульсе исполнитель устанавливает сигналы указателя байт при передаче данных C/BE[3::0]#. После 2-го импульса задатчик не управляет линиями AD[31::0] и C/BE[3::0]#, ими управляет исполнитель. На 2-ом импульсе заканчивается фаза адреса и начинается фаза данных. На 3-ем импульсе исполнитель определяет, что задатчик готов (по сигналу IRDY#) к приему данных, и выставляет первые данные на AD[31::0] и устанавливает сигнал TRDY#, который сообщает задатчику, что на линиях AD[31::0] имеются первые достоверные данные. На этом такте может устанавливаться сигнал DEVSEL#, если исполнитель не ус- пел его установить на втором импульсе. Сигнал DEVSEL# должен устанавливаться после декодирования адре- са и перед или вместе с сигналами IRDY#, STOP# и данных. Исполнитель не должен сбрасывать DEVSEL#, пока не закончится последняя фаза дан- ных. Т.к. на 3-м импульсе фазы данных передачи данных от исполнителя к задатчику не произошло, то этот такт называется тактом ожидания. Только на 4-м импульсе задатчик определяет (по сигналу TRDY#), что на шине AD[31::0] находятся достоверные данные и считывает их, завершая первую фазу данных. На 4-м импульсе начинается вторая фаза данных и т.д. Фазы данных могут занимать один такт, если нет тактов ожидания, или несколько тактов, если есть такты ожидания. Такты ожи- дания могут формироваться либо задатчиком (сбросом IRDY#), либо ис- полнителем (сбросом TRDY#). Окончание транзакции. На последней фазе данных обязательно сбрасывается FRAME# и ус- танавливается IRDY#. FRAME# может быть сброшен только тогда, когда IRDY# установлен. После тог как исполнитель на последней фазе данных установит TRDY#, может быть проведена последняя передача от исполни- теля к задатчику, и транзакция закончится сбросом на последнем им- пульсе транзакции сигнала IRDY#. Т.к. сброшены сигналы FRAME# и IR- DY#, то следующий такт будет тактом холостого хода (IDLE циклом). По последнему импульсу тразакции также сбрасываются сигналы TRDY# и DEVSEL#. Транзакция записи выполняется точно также, за исключением того, что в ней отсутствует Т-цикл на 3-м импульсе для сигналов AD[31::0]. Сигнал STOP# используется для завершения транзакции по инициати- ве исполнителя. Способы завершения транзакций. Транзакция может быть завершена либо задатчиком, либо исполни- телем. Пока ни тот ни другой не инициализируют останов, транзакция продолжается. 1. _Способ завершения транзакции задатчиком . заключается в следу- ющем. Задатчик инициализирует завершение транзакции, когда сигнал FRAME# сброшен, а IRDY# установлен. Это указывает исполнителю, что наступает последняя фаза данных. Последняя передача данных происхо- дит, когда установлены и IRDY#, и TRDY#. Транзакция завершается, когда и FRAME#, и IRDY# сброшены (состояние холостого хода шины). Задатчик может прекращать транзакцию этим способом по двум при- чинам: - когда задатчик заканчивает начатую им транзакцию; - когда линия разрешения захвата шины задатчиком GRN cброшена. Модифицированная версия этого способа транзакции задатчиком ис- пользуется тогда, когда исполнитель не отвечает на его адресацию сигналом DEVSEL#. 2. _Способ завершения транзакции исполнителем . заключается в сле- дующем. В этом случае используется сигнал STOP#. Исполнитель выдает сигнал STOP#, чтобы запросить завершение транзакции от задатчика. После установки, STOP# сохраняет активное значение до момента сброса FRAME#. Взаимосвязь между IRDY# и TRADY# не зависит от взаимодейс- твия между STOP# и FRAME#. Поэтому данные могут быть переданы или не переданы до конца в текущей транзакции. Это зависит единственно от состояния IRDY# и TRDY#. Однако, когда STOP# установлен, а TRDY# сброшен, это указывает на невозможность дальнейшей передачи данных исполнителя. В этом случае, задатчик не ждет последней передачи дан- ных, а немедленно завершает транзакцию.