Реклама

Шина PCI

Содержание:

  • Введение
  • Сигналы шины PCI
  • Разъем шины PCI
  • Циклы шины
    • Подтверждение прерывания (0000)
    • Специальный цикл (0001)
    • Чтение порта (0010) и запись в порт (0011)
    • Чтение памяти (0110) и запись в память (0111)
    • Чтение конфигурации (1010) и запись конфигурационных данных (1011)
    • Множественное чтение памяти (1100) Двойной цикл адреса (1101)
  • Временные диаграммы шины 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. Параметры шины PCI, которыми можно управлять через программу SETUP из BIOS, приведены в разделе "Параметры BIOS".

Имеет версии с питанием 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 самодостаточен для подключения любого контроллера (VLB не работала без ISA), на системной плате может сосуществовать с любой из других шин ввода-вывода.
Шина PCI - первая шина в архитектуре IBM PC, которая не привязана к этой архитектуре. Она является процессорно-независимой и применяется, например, в компьютерах Macintosh.
В отличие от остальных шин, компоненты расположены на левой поверхности плат PCI-адаптеров. По этой причине крайний PCI-слот обычно разделяет использование посадочного места с соседним ISA-слотом (Shared slot).

Процессор через так называемые мосты (PCI Bridge) может быть подключен к нескольким каналам PCI, обеспечивая возможность одновременной передачи данных между независимыми каналами PCI (возможно только в спецификации 2.1).

Автоконфигурирование устройств (выбор запросов прерывания, каналов DMA) поддерживается средствами BIOS материнской платы по образу и подобию стандарта Plug & Play. В настоящее время действует спецификация PCI 2.1.

Стандарт PCI определяет для каждого слота конфигурационное пространство размером до 256 восьмибитных регистров, не приписанных ни к пространству памяти, ни к пространству ввода-вывода. Доступ к ним осуществляется по специальным циклам шины Configuration Read и Configuration Write, вырабатываемым контроллером при обращении процессора к регистрам контроллера шины PCI, расположенным в его пространстве ввода-вывода.

На PCI определены два основных вида устройств - инициатор (по ГОСТ - задатчик), т.е. устройство, получившее от арбитра шины разрешение на захват ее и устройство назначения, цель (target) с которым инициатор выполняет цикл обмена данными.

Сигналы шины 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 - < ffb font size="3" face="Times New Roman">сброс всех устройств.

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 3 26 IDSEL
Test Clock 2 +12 B AD 23 27 +3,3 B
GND 3 TSTMSLCT GND 28 AD 22
Test DO 4 Test DO AD 21 29 AD 20
+5 B 5 +5 B AD 19 30 GND
+5 B 6 -INTR A +3,3 B 31 AD 18
-INTR B 7 -INTR C AD 17 32 AD 16
-INTR D 8 +5 B -C / BE 2 33 +3,3 B
-PRSNT 1 9 Reserved GND 34 -FRAME
Reserved 10 +VI / O -IRDY 35 GND
-PRSNT 2 11 Reserved +3,3 B 36 -TRDY
GND / Ключ 12 GND /Ключ -DEVSEL 37 GND
GND / Ключ 13 GND /Ключ GND 38 -STOP
Reserved 14 Reserved -Lock 39 +3,3 B
GND 15 -RST ParityER 40 SDONE
Clock 16 +VI / O +3,3 B 41 -SBOFF
GND 17 -GNT SysERR 42 GND
-REQ 18 GND +3,3 B 43 PAR
+V I/O 19 Reserved -C / BE 1 44 AD 15
AD 31 20 AD 30 AD 14 45 +3,3 B
AD 29 21 +3,3 B GND 46 AD 13
GND 22 AD 28 AD 12 47 AD 11
AD 27 23 AD ffb 26 AD 10 48 GND
AD 25 24 GND GND 49 AD 9
+3,3 B 25 AD 24 GND / Ключ 50** GND / Ключ
GND /Ключ 51**** GND / Ключ GND 73 AD 56
AD 8 52 -C / BE 0 AD 55 74 AD 54
AD 7 53 +3,3 B AD 53 75 +VI / O
+3,3 B 54 AD 6 GND 76 AD 52
AD 5 55 AD 4 AD 51 77 AD 50
AD 3 56 GND AD 49 78 GND
GND 57 AD 2 +VI / O 79 AD 48
AD 1 58 AD 0 AD 47 80 AD 46
+ VI / O 59 +VI / O AD 45 81 GND
-ACK 64 60 -REQ64 GND 82 AD 44
+5 B 61 +5B AD 43 83 AD 42
+5 B 62 +5B AD 41 84 +VI / O
Конец 32-битного разъема GND 85 AD 40
  AD 39 86 AD 38
Reserved 63 GND AD 37 87 GND
GND 64 -C / BE 7 +VI / O 88 AD 36
-C / BE 65 - C / BE 5 AD 35 89 AD 34
-C / BE 66 ffb + VI / O AD 33 90 GND
GND 67 PAR 64 GND 91 AD 32
AD 63 68 AD 62 Reserved 92 Reserved
AD 61 69 GND Reserved 93 GND
+VI / O 70 AD 60 GND 94 Reserved
AD 59 71 AD 58 Конец 64-битного разъема
AD 57 72 GND

*12, 13 - ключ для 3,3V

**50,51 - ключ для 5V

Циклы шины

По сигналам C/BE (от C/BE3 до C/BE0) во время фазы передачи адреса определяется тип цикла передачи данных.

ffb
C/BE Команда
0000 Interrupt Acknowledge (подтверждение прерывания)
0001 Special Cycle (специальный цикл)
0010 I/O Read (чтение порта)
0011 I/O Write (запись в порт)
0100 reserved (резервировано)
0101 reserved (резервировано)
0110 Memory Read (чтение памяти)
0111 Memory Write (запись в память)
1000 reserved (резервировано)
1001 reserved (резервировано)
1010 Configuration Read (чтение конфигурации)
1011 Configuration Write (запись конфигурации)
1100 Multiple Memory Read (множественное чтение памяти)
1101Dual Address Cycle (двойной цикл адреса)
1110 Memory-Read Line (чтение памяти)
1111 Memory Write and Invalidate (запись в память и проверка)

Подтверждение прерывания (0000)

Контроллер прерываний автоматически распознает сигнал INTA и реагирует на него передачей вектора прерывания по шине AD.

Специальный цикл (0001)

AD15-AD0 Описание
0x0000 Processor Shutdown (процессор прекращает работу)
0x0001 Processor Halt (останов процессора)
0x0002 x86 Specific Code (специальный код для машин на архитектуре Intel x86)
0x0003 to 0xFFFF Reserved (зарезервировано)

Чтение порта (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 используются для выбора адресуемого устройства, а оставшиеся шины адреса игнорируются.

Адрес/Бит   32          16   15           0

00          Unit ID        | Manufacturer ID
04          Status         | Command
08          Class Code               | Revision
0C          BIST  | Header | Latency | CLS
10-24            Регистр адреса
28          Резерв
2C          Резерв
30          Базовый адрес ПЗУ устройства
34          Резерв
38          Резерв
3C          MaxLat|MnGNT   | INT-pin | INT-line
40-FF       Используется самим устройством

Примечания:

  1. Unit ID - идентификационный номер устройства
  2. Manufacturer ID - идентификатор производителя устройства
  3. Status - состояние
  4. Class Code - код класса устройства
  5. BIST - Built-In Self Test - встроенный тест

Множественное чтение памяти (1100)

Это расширение обычного цикла чтения памяти. Используется для чтения больших блоков памяти без кэширования.

Двойной цикл адреса (1101)

Двойной цикл адреса необходим в том случае, если необходимо передать 64-х разрядный адрес в версии PCI с 32-х разрядной адресной сетке. В первом цикле передаются четыре младших байта адреса, затем четыре старших байта. Во втором цикле необходимо также передать команду, определяющую тип устройства, чей адрес выставлен (порт ввода/вывода, память и т.д.). Собственно PCI поддерживает 64 разряда адреса для портов ввода/вывода, но в PC на процессорах архитектуры от Intel такое адресное пространство ffb не поддерживается (не позволяет сам процессор).

Временные диаграммы шины PCI

            ___     ___     ___     ___     ___     ___
CLK     ___|   |___|   |___|   |___|   |___|   |___|   |___

        _______                                   _________
FRAME          |_________________________________|

                ______  _______  ______  ______  ______
AD      -------<______><_______><______><______><______>---
                Адрес   Данные1  Данные2 Данные3 Данные4

                ______  _______________________________
C/BE    -------<______><_______________________________>---
                Команда Сигнал разрешения передачи байта

         ____________                                   ___
IRDY                 |_________________________________|

         _____________                                  ___
TRDY                  |________________________________|

         ______________                                 ___
DEVSEL                 |_______________________________|

Цикл передачи данных на PCI, включает 4 фазы передачи данных, без тактов ожидания. Данные передаются по переднему фронту сигнала CLK.

                         [1]              [2]        [3]
            ___     ___     ___     ___     ___     ___     ___     ___
CLK     ___|   |___|   |___|   |___|   |___|   |___|   |___|   |___|   |__

        _______                                                  _________
FRAME          |________________________________________________|

                                   A               B           C
                ______           ______________  ______  _____________
AD      -------<______>---------<______________><______><_____________>---
                Адрес              Данные1      Данные2    Данные3

                ______  ______________________________________________
C/BE    -------<______><______________________________________________>---
               Команда   Сигнал разрешения передачи байта

                                                       Ожидание
         ____________                                    _____         ___
IRDY                 |__________________________________|     |_______|

                       Ожидание        Ожидание
         ______________________         ______                         ___
TRDY                           |_______|      |_______________________|

         ______________                                                ___
DEVSEL                 |______________________________________________|

Цикл передачи данных на PCI включает 3 фазы передачи данных с тактами ожидания. Данные передаются по переднему фронту сигнала CLK.