PCI - шина
PCI (Peripheral Component Interconnect bus) - шина для подсоединения периферийных устройств. Стала массово применяться для Pentium-систем, но используется и с 486 процессорами. Частота шины от 20 до 33 МГц, теоретически максимальная скорость 132/264 Мбайт/с для 32/64 бит. В современных материнских платах частота на шине PCI задается как 1/2 входной частоты процессора, т.е при частоте 66 MHz на PCI будет 33 MHz, при 75 MHz - 37.5 MHz.
Имеет версии с питанием 5V, 3.3V и универсальную (с переключением линий +VI/O c 5V на 3,3V). Ключами являются пропущенные ряды контактов 12, 13 и 50, 51. Для слота с питанием 5V ключ расположен на месте контактов 50, 51, для 3,3 В - 12, 13, а для универсального - два ключа: 12, 13 и 50,51. 32-битный слот заканчивается контактами А62/В62, 64-битный - А94/В94.
Слот PCI самодостаточен для подключения любого контроллера на системной плате может сосуществовать с любой из других шин ввода-вывода.
Шина PCI - первая шина в архитектуре IBM PC, которая не привязана к этой архитектуре. Она является процессорно-независимой и применяется, например, в компьютерах Macintosh.
В отличие от остальных шин, компоненты расположены на левой поверхности плат PCI-адаптеров. По этой причине крайний PCI-слот обычно разделяет использование посадочного места с соседним ISA-слотом (Shared slot).
Процессор через так называемые мосты (PCI Bridge) может быть подключен к нескольким каналам PCI, обеспечивая возможность одновременной передачи данных между независимыми каналами PCI.
Автоконфигурирование устройств (выбор запросов прерывания, каналов DMA) поддерживается средствами BIOS материнской платы по образу и подобию стандарта Plug & Play.
Стандарт PCI определяет для каждого слота конфигурационное пространство размером до 256 восьмибитных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и Configuration Write, вырабатываемым контроллером при обращении процессора к регистрам контроллера шины PCI, расположенным в его пространстве ввода-вывода.
На PCI определены два основных вида устройств - инициатор (по ГОСТ - задатчик), т.е. устройство, получившее от арбитра шины разрешение на захват ее и устройство назначения, цель (target) с которым инициатор выполняет цикл обмена данными.
Поддержка "горячей" замены PCI устройств, называемой в стандарте как PCI Hot-Plug. Ввод этой функции позволит добавлять/изымать PCI платы без выключения компьютера. Такая возможность особенно необходима для серверных платформ
Система управления энергопотреблением для устройств на шине PCI. Позволяет управлять энергопотреблением как для внешних PCI плат так и для встроенных на материнской плате устройств. Механизм управления подстроен под стандарт ACPI для облегчения управления энергопотреблением PCI устройств со стороны операционной системы.
Дополнены и переработаны требования к конструктивной реализации PCI плат.
Сигналы шины PCI
Знак - (минус) перед названием сигнала означает, что активный уровень этого сигнала логический ноль, обозначение {XX:0} означает группу сигналов с номерами от 0 до XX.
AD{31:0} - мультиплексированная шина адреса/данных. Адрес передается по сигналу - FRAME, в последующих тактах передаются данные.
-C/ BE{3:0} - команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины (чтение-запись памяти, ввода/вывода или чтение/запись конфигурации, подтверждение прерывания и другие) задается четырехбитным кодом в фазе адреса по сигналу - FRAME.
-FRAME - индикатор фазы адреса (иначе - передача данных).
-DEVSEL - выбор инициатором устройства назначения.
-IRDY - готовность инициатора к обмену данными.
-TRDY - готовность устройства назначения к обмену данными.
-STOP - запрос устройства назначения к инициатору на останов текущей транзакции.
-LOCK - используется для установки, обслуживания и освобождения захвата ресурса на PCI.
-REQ {3:0} - запрос от PCI-устройства на захват шины (для слотов 3:0).
-GNT {3 0} - разрешение мастеру на использование шины.
PAR - общий бит четности для линий AD{31:0} и C/BE{3:0}.
-ParityER - сигнал об ошибке по четности (от устройства, ее обнаружившего).
-RST - сброс всех устройств.
IDSEL - выбор устройства назначения в циклах считывания и записи конфигурации.
-SERR - системная ошибка, активизируется любым устройством PCI и вызывает емаскируемое прерывание процессора (NMI).
-REQ64 - запрос на 64-битный обмен.
-ASK64 - подтверждение 64-битного обмена.
-INTR A,B,C,D - линии запросов прерывания, направляются на доступные линии IRQ BIOS компьютера. Запрос по низкому уровню допускает разделяемое использование линий прерывания.
Clock - сигнал синхронизации на тактовой частоте шины.
Test Clock, -TSTRES, TestDO, TestDI - сигналы для тестирования адаптеров по интерфейсу JTAG (на системной плате обычно не задействованы).
TSTMSLCT - перевод в режим тестирования.
Разъем шины PCI
Ряд ВНомерРяд АРяд ВНомерРяд А-12 В1-TSTRES-C / BE 326IDSELTest Clock 2+12 BAD 2327+3,3 BGND3TSTMSLCTGND28AD 22Test DO4Test DOAD 2129AD 20+5 B5+5 BAD 1930GND+5 B6-INTR A+3,3 B31AD 18-INTR B7-INTR CAD 1732AD 16-INTR D8+5 B-C / BE 233+3,3 B-PRSNT 19ReservedGND34-FRAMEReserved10+VI / O-IRDY35GND-PRSNT 211Reserved+3,3 B36-TRDYGND / Ключ 12GND /Ключ-DEVSEL37GNDGND / Ключ13GND /КлючGND38-STOPReserved14Reserved-Lock39+3,3 BGND15-RSTParityER40SDONEClock16+VI / O+3,3 B41-SBOFFGND17-GNTSysERR42GND-REQ18GND+3,3 B43PAR+V I/O19Reserved-C / BE 144AD 15AD 3120AD 30AD 1445+3,3 BAD 2921+3,3 BGND46AD 13GND22AD 28AD 1247AD 11AD 2723AD 26AD 1048GNDAD 2524GNDGND49AD 9+3,3 B25AD 24GND / Ключ50**GND / Ключ GND /Ключ51****GND / КлючGND73AD 56AD 852-C / BE 0AD 5574AD 54AD 753+3,3 BAD 5375+VI / O+3,3 B54AD 6GND76AD 52AD 555AD 4AD 5177AD 50AD 356GNDAD 4978GNDGND57AD 2+VI / O79AD 48AD 158AD 0AD 4780AD 46+ VI / O59+VI / OAD 4581GND-ACK 6460-REQ64GND82AD 44+5 B61+5BAD 4383AD 42+5 B62+5BAD 4184+VI / OКонец 32-битного разъемаGND85AD 40AD 3986AD 38Reserved63GNDAD 3787GNDGND64-C / BE 7+VI / O88AD 36-C / BE65- C / BE 5AD 3589AD 34-C / BE66+ VI / OAD 3390GNDGND67PAR 64GND91AD 32AD 6368AD 62Reserved92ReservedAD 6169GNDReserved93GND+VI / O70AD 60GND94ReservedAD 5971AD 58Конец 64-битного разъемаAD 5772GND*12, 13 - ключ для 3,3V
**50,51 - ключ для 5V
Циклы шины
По сигналам C/BE (от C/BE3 до C/BE0) во время фазы передачи адреса определяется тип цикла передачи данных.
C/BEКоманда0000Interrupt Acknowledge (подтверждение прерывания)0001Special Cycle (специальный цикл)0010I/O Read (чтение порта)0011I/O Write (запись в порт)0100Reserved (резервировано)0101Reserved (резервировано)0110Memory Read (чтение памяти)0111Memory Write (запись в память)1000Reserved (резервировано)1001Reserved (резервировано)1010Configuration Read (чтение конфигурации)1011Configuration Write (запись конфигурации)1100Multiple Memory Read (множественное чтение памяти)1101Dual Address Cycle (двойной цикл адреса)1110Memory-Read Line (чтение памяти)1111Memory Write and Invalidate (запись в память и проверка)
Подтверждение прерывания (0000)
Контроллер прерываний автоматически распознает сигнал INTA и реагирует на него передачей вектора прерывания по шине AD.
Специальный цикл (0001)
AD15-AD0Описание0x0000Processor Shutdown (процессор прекращает работу)0x0001Processor Halt (останов процессора)0x0002x86 Specific Code (специальный код для машин на архитектуре Intel x86)0x0003 to 0xFFFFReserved (зарезервировано)
Чтение порта (0010) и запись в порт (0011)
Порты ввода/вывода на шине PCI могут быть 8 или 16-ти разрядными, хотя собственно стандарт на шину PCI позволяет иметь 32-х разрядное адресное пространство. Это вызвано тем, что на компьютерах с архитектурой Intel x86, адрес порта может иметь не более 16 разрядов. Пока и 16-ти разрядный адрес порта не может быть использован, так как карты на шине ISA могут декодировать только 10 разрядов.
Адресное пространство конфигурации доступно по адресам портов 0x0CF8 (Адрес) и 0x0CFC (Данные), причем адрес должен быть записан первым.
Чтение памяти (0110) и запись в память (0111)
По шинам AD передается адрес двойным словом (четыре байта). Сигналы AD0 и AD1 декодировать не требуется. Истинность данных определяется сигналами C/BE.
Чтение конфигурации (1010) и запись конфигурационных данных (1011)
Эти операции выполняются для конфигурационного пространства PCI карты. Размер области конфигурации составляет 256 байт, причем читать/записывать в нее можно только в 32-х разрядной сетке, т.е. двойными словами. Поэтому AD0 и AD1 должны быть установлены в 0, AD2-7 содержать адрес двойного слова, AD8-10 используются для выбора адресуемого устройства, а оставшиеся шины адреса игнорируются.
Двойной цикл адреса (1101)
Двойной цикл адреса необходим в том случае, если необходимо передать 64-х разрядный адрес в версии PCI с 32-х разрядной адресной сетке. В первом цикле передаются четыре младших байта адреса, затем четыре старших байта. Во втором цикле необходимо также передать команду, определяющую тип устройства, чей адрес выставлен (порт ввода/вывода, память и т.д.). Собственно PCI поддерживает 64