Арбитрация Каждый задатчик на шине PCI получает доступ к шине только после разрешения на захват шины от Арбитра. Для этого используется специ- альные, индивидуальные для каждого задатчика линии (типа точка-точ- ка) запроса REQ# к арбитру и разрешения GNT# к задатчику от арбитра. Для доступа к шине, задатчик выдает арбитру сигнал запроса REQ# и может захватить шину только после получения от арбитра сигнала разрешения GNT#. Процесс арбитрации не требует дополнительных циклов шины, т.к. он совмещается с выполнением других операций, кроме случая, когда шина не занята и находится в состоянии холостого хода (IDLE цикл). Захват шины задатчиком и выполнение транзакции идет в такой пос- ледовательности. Задатчик выдает запрос REQ#, через время задержки ар- битрации арбитр выдает задатчику сигнал разрешения GNT#, через время задержки ожидания захвата шины задатчик начинает транзакцию, выставив сигнал FRAME#. Идет передача одной или нескольких транзакций, в конце последней транзакции производится сброс сигнала RQE#, затем GNT#. Такой процесс происходит тогда, когда нет запросов шины от за- датчиков с большим приоритетом. Если во время работы текущего задатчика появляется запрос от объекта с большим приоритетом, то либо идет прерывание транзакции, либо она выполняется до конца, а затем шина переходит к задатчику с большим приоритетом. Задатчик выдает сигнал REQ# по фронту любого импульса синхрони- зации шины (CLK). Задатчик может сбросить сигнал REQ# на любом импульсе CLK, сброс этого сигнала арбитр интерпретирует как то, что задатчику больше шина не требуется и можно сбросить его сигнал разрешения GNT#. Таким образом в одно и то же время могут быть установлены REQ# от нескольких задатчиков. В ответ на запрос арбитр выдает сигнал разрешения GNT#. При нескольких запросах REQ# арбитр выдает сигнал разрешения GNT# задат- чику, имеющему в данный момент времени наивысший приоритет. На шине в любой момент времени может быть установлен только один сигнал GNT#, т.к. шиной в каждый момент времени управляет толь- ко один задатчик. Арбитр выдает сигнал разрешения GNT# в ответ на запрос REQ# с некоторой задержкой арбитрации. Типовая задержка арбитрации для задатчика с наивысшим приорите- том, при наличие на шине текущего задатчика, равна двум импульсам CLK. Арбитр может сбросить GNT# одного объекта в момент установки GNT# другого с более высоким приоритетом, если на шине нет состояния холостого хода. В противном случае, требуется задержка в один им- пульс между сбросом одного GNT# и установкой другого, чтобы исклю- чить состязания на шине по сигналам AD и PAR. Получив сигнал GNT# задатчик не сразу захватывает шину, а через некоторое время, называемое задержкой ожидания захвата шины (задерж- кой захвата). Это время от получения GNT# задатчиком до установки стабильного значения сигнала FRAME#. Оно также измеряется количест- вом импульсов CLK. На временной диаграмме показан пример протокола базовой арбит- рации. В примере действуют два задатчика A и B, имеющие в своих транзакциях по одной фазе данных. Сигнал запроса шины от задатчика A - REQ#(A) уже установили. Задатчику А разрешен доступ к шине на 2-м импульсе, когда он получил сигнал GNT#(A). Т.к. шина ко 2-ому им- пульсу находится в состоянии холостого хода (FRAME# и IRDY# сброше- ны), то задатчик А может начинать транзакцию на этом импульсе с ус- тановки сигнала FRAME# (A), который примет стабильное значение на 3-м импульсе. Задатчик А требует шину для выполнения других транзак- ций, поэтому сигнал REQ#(A) не сбрасывается ко 2-ому импульсу и про- должается удерживаться задатчиком А. На 1-м импульсе задатчик В с большим приоритетом выставляет свой запрос REQ#(B) арбитру и тот выдает разрешение по фронту 3-его импульса, этим же фронтом арбитр сбрасывает разрешение GNT#(A) за- датчика А. Задатчик А сбрасывает FRAME#(A) на третьем импульсе и за- канчивает свою транзакцию на 4-м импульсе, освобождая шину. На 5-м импульсе на шине состояние холостого хода, поэтому задатчик В может на этом импульсе начинать свою транзакцию, т.к. его GNT#(B) уже ус- тановлены. Задатчику В требуется всего одна транзакция, поэтому он сбрасывает свой запрос REQ#(B) в начале транзакции по фронту 5-ого импульса. На 7-м импульсе эадатчик В заканчивает свою транзакцию , предварительно сбросив FRAME#(B) на 6-м импульсе. Т.к. запрос на ши- ну от объекта В сброшен, то арбитр по фронту 6-ого импульса сбрасы- вает разрешение GNT#(B) и устанавливает сигнал разрешения GNT(A) для задатчика А, который на 8-м импульсе может начинать следующую тран- закцию.