Шина 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) во время фазы
передачи адреса определяется тип цикла передачи
данных.
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 (множественное чтение памяти) |
1101 |
ffb
Dual 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 Используется самим устройством
Примечания:
Unit ID - идентификационный номер устройства
Manufacturer ID - идентификатор производителя
устройства
Status - состояние
Class Code - код класса устройства
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.
|