Шина PCI – набор сигнальных линий, непосредственно соединяющих интерфейсные выводы группы устройств. В системе может присутствовать несколько шин PCI, соединенных мостами PCI. Мосты электрически отделяют интерфейсные сигналы одной шины от другой, соединяя их логически. Главный мост соединяет главную шину с ядром системы – процессором и памятью. Каждая шина имеет свой номер. Главная шина имеет нулевой номер, далее нумерация идет последовательно.
В каждой транзакции (обмене по шине) участвуют два устройства – инициатор обмена, он же ведущее (мастер) устройство и целевое устройство, оно же ведомое (slave). Шина PCI все транзакции трактует как пакетные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Состав и назначение интерфейсных сигналов приведены в таблице 5.
Сигналы шины PCI Таблица 5.
Сигнал |
Назначение |
|
AD [31:0] |
Мультиплексорная шина адреса/данных. В начале транзакции передается адрес, в последующих тактах – данные. |
|
C/BE[3:0]# |
команда/разрешение обращения к байтам |
|
FRAME# |
Кадр. Введением сигнала отмечается начало транзакции, снятие сигнала указывает на последний цикл передачи данных в транзакции. |
|
DEVSEL# |
Устройство выбрано. |
|
IRDY# |
Готовность ведущего устройства к обмену. |
|
TRDY# |
Готовность целевого устройства к обмену данными |
|
STOP# |
Запрос целевого устройства на остановку текущей транзакции |
|
LOCK# |
Сигнал захвата шины для обеспечения целостного выполнения операции. |
|
REQ# |
Запрос от ведущего устройства на захват шины. |
|
GNT# |
Предоставление ведущему устройству управления шиной. |
|
PAR |
Общий бит паритета |
|
PERR# |
Сигнал об ошибке паритета |
|
PME# |
Сигнал о событиях, вызывающих изменение режимов потребления. |
|
CLKRUN# |
Шина работает на номинальной частоте синхронизации |
|
PRSNT [2;1] |
Индикатор присутствия платы, кодируемый запрос потребления мощности. |
|
RST# |
Сброс всех регистров в начальное состояние |
|
IDSEL |
Выбор устройства в циклах конфигурационного считывания и записи |
|
SERR# |
Системная ошибка |
|
REQ64# |
Запрос на 64-битный обмен. |
|
АСК64# |
Подтверждение 64-битного обмена |
|
INTA, INTB |
Линии запросов прерываний. |
|
CLK |
Тактовая частота шины. |
|
SDONE |
Сигнал завершенности цикла слежения для текущей транзакции |
|
SBO# |
Попадание текущего обращения к памяти абонента шины в модифицированную строку кэша. |
|
TCK |
Синхронизация тестового интерфейса JTAG |
|
TDI |
Входные данные тестового интерфейса JTAG |
|
TDO |
Выходные данные тестового интерфейса JTAG |
|
TMS |
Выбор режима для тестового интерфейса JTAG |
|
TRST |
Сброс тестовой логики |
В каждый момент времени шиной может управлять только одно ведущее устройство, получившее на это право от арбитра. Каждое ведущее устройство имеет пару сигналов – REQ# для запроса и управления шиной и GNT# для подтверждения предоставления управления шиной. Арбитражем запросов на использование шины занимается специальный узел, входящий в чипсет системной платы. Схема приоритетов (фиксированный, циклический, комбинированный) определяется программирование арбитра. Для адреса и данных используются общие мультиплексированные линии AD. Четыре мультиплексированные линии C/BE[3:0]# обеспечивает кодирование команд в фазе адреса и разрешения байт в фазе данных. В начале транзакции ведущее устройство активизирует сигнал FRAME#, по шине AD передает целевой адрес, а по линии C/BE# – информацию о типе транзакции. Адресованное устройство отвечает сигналом DEVSEL#. Ведущее устройство указывает на свою готовность к обмену данными сигналом IRDY#. Когда к обмену данными будет готово целевое устройство, оно установит сигнал ТRDY#. Данные по шине AD передаются только при одновременном наличии сигналов IRDY# и ТRDY#. С помощью этих сигналов ведущее устройство и целевое согласуют свои скорости, вводя такты ожидания.
Рис.12. Цикл обмена на шине PCI.
Шина позволяет уменьшать мощность, потребляемую устройствами, ценой снижения производительности, применяя пошаговое переключение линий AD и PAR. Здесь возможны два варианта.
1. Плавный шаг – начало формирования сигналов слаботочными формирователями за несколько тактов до введения сигнала-квалификатора действительной информации. За эти несколько тактов сигналы дойдут до требуемого значения при меньшем токе.
2. Дискретный шаг – нормальные формирователи срабатывают не все сразу, а группами побайтно, в каждом такте по группе. При этом снижаются броски тока, поскольку одновременно переключается меньше формирователей.
Протокол квитирования обеспечивает надежность обмена – ведущее устройство всегда получает информацию об отработке транзакции целевого устройства. Средством повышения надежности является применение контроля паритета. При обнаружении ошибки целевого устройства вырабатывается сигнал PERR#. В подсчете паритета при передаче данных учитываются все байты, включая и недействительные. Состояние бит, даже в недействительных байтах данных, должно оставаться стабильным. Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя.
