Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia_2_dop.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
756.74 Кб
Скачать

Цикл чтения

Транзакцию начинает задатчик, при наличии на шине холостого хода (IDLE) и разрешения на работу на шине. Это разрешение задатчик получает от арбитра, послав ему сигнал запроса REQ# и получив разрешение GRN# от него.

На временной диаграмме рис.1 показана транзакция чтения, имеющая три фазы данных длительностью в 7 импульсов CLK. Данные передаются на импульсах 4, 6, и 8, а циклы ожидания наступают на импульсах 3 и 5 по сбросу сигнала TRDY# и на импульсе 7 по сбросу сигнала IRDY#. На 7 импульсе задатчик узнает, что наступает последняя фаза данных, он сбрасывает на этом импульсе FRAME# и устанавливает IKDY#, т.к. он был сброшен. Транзакция заканчивается на 8-м импульсе сбросом IRDY#, TRDY# и DEVSEL#. Далее идет такт холостого хода.

Рис 1. Временная диаграмма цикла чтения

Цикл записи

Транзакцию начинает задатчик, при наличии на шине холостого хода (IDLE) и разрешения на работу на шине. Это разрешение задатчик получает от арбитра, послав ему сигнал запроса REQ# и получив разрешение GRN# от него.

На временной диаграмме приведен пример транзакции записи, содержащей 3 фазы данных.

Как видно из диаграммы цикла записи рис. 2, первая и вторая фазы данных не имеют циклов ожидания и выполняются каждая за один такт. Третья и последняя фаза данных имеет три цикла ожидания. Циклы ожидания образуется сбросом сигнала TRDY#, а на первом - также сбросом сигнала IRDY#. Хотя FRAME# сброшен, а IRDY# установлен на шестом импульсе, только на 8-м импульсе установлен TRDY#, что позволяет завершить транзакцию. На 9-м импульсе шина находится в состоянии холостого хода (IDLE) и готова к новой транзакции.

Рис. 2 Временная диаграмма цикла записи

Арбитрация

Каждый задатчик на шине PCI получает доступ к шине только после разрешения на захват шины от Арбитра. Для этого используется специальные, индивидуальные для каждого задатчика линии (типа точка-точка) запроса REQ# к арбитру и разрешения GNT# к задатчику от арбитра.

Для доступа к шине, задатчик выдает арбитру сигнал запроса REQ# и может захватить шину только после получения от арбитра сигнала разрешения GNT#. Арбитрация не требует дополнительных циклов шины, т.к. совмещается с выполнением других операций, кроме случая, когда шина не занята и находится в состоянии холостого хода (IDLE цикл).

На временной диаграмме рис. 3 показан пример протокола базовой арбитрации. Здесь действуют два задатчика A и B, имеющие в своих транзакциях по одной фазе данных. Сигнал запроса шины от задатчика A - REQ#(A) уже установили. Задатчику А разрешен доступ к шине на 2-м импульсе, когда он получил сигнал GNT#(A). Т.к. шина ко 2-ому импульсу находится в состоянии холостого хода (FRAME# сброшен), то задатчик А может начинать транзакцию на этом импульсе с установки сигнала FRAME# (A), который примет стабильное значение на 3-м импульсе. Задатчик А требует шину для выполнения других транзакций, поэтому сигнал REQ#(A) не сбрасывается ко 2-ому импульсу и продолжается удерживаться задатчиком А.

Рис. 3. Временная диаграмма протокола арбитрации

На 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-м импульсе может начинать следующую транзакцию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]