Описание работы шины 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 самодостаточен для
подключения любого контроллера (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 - сброс
всех устройств.
IDSEL - выбор
устройства назначения в циклах считывания и
записи конфигурации.
-SERR -
системная ошибка, активизируется любым
устройством PCI и вызывает немаскируемое
прерывание процессора (NMI).
-REQ64 - запрос
на 64-битный обмен.
-ASK64 -
подтверждение 64-битного обмена.
-INTR A,B,C,D -
линии запросов прерывания, направляются на
доступные линии IRQ BIOS компьютера. Запрос по
низкому уровню допускает разделяемое
использование линий прерывания.
Clock - сигнал
синхронизации на тактовой частоте шины.
Test Clock, -TSTRES, TestDO, TestDI
- сигналы для тестирования адаптеров по
интерфейсу JTAG (на системной плате обычно не
задействованы).
TSTMSLCT -
перевод в режим тестирования.
| Ряд В |
Номер |
Ряд А |
Ряд В |
Номер |
Ряд А |
| -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 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 |
+ 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 |
Dual Address Cycle (двойной цикл
адреса) |
| 1110 |
Memory-Read Line (чтение памяти) |
| 1111 |
Memory Write and Invalidate (запись в
память и проверка) |
Подтверждение
прерывания (0000)
Контроллер прерываний автоматически распознает
сигнал INTA и реагирует на него передачей вектора
прерывания по шине AD.
| 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 (Данные), причем адрес должен быть
записан первым.
По шинам AD передается
адрес двойным словом (четыре байта). Сигналы AD0 и
AD1 декодировать не требуется. Истинность данных
определяется сигналами C/BE.
Эти операции выполняются
для конфигурационного пространства 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 - встроенный тест
Это расширение обычного
цикла чтения памяти. Используется для чтения
больших блоков памяти без кэширования.
Двойной
цикл адреса (1101)
Двойной цикл адреса необходим в том случае, если
необходимо передать 64-х разрядный адрес в версии
PCI с 32-х разрядной адресной сетке. В первом цикле
передаются четыре младших байта адреса, затем
четыре старших байта. Во втором цикле необходимо
также передать команду, определяющую тип
устройства, чей адрес выставлен (порт
ввода/вывода, память и т.д.). Собственно PCI
поддерживает 64 разряда адреса для портов
ввода/вывода, но в PC на процессорах архитектуры
от Intel такое адресное пространство не
поддерживается (не позволяет сам процессор).
Временные диаграммы шины 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.
По всем вопросам заходите на конференцию или пишите: p_alex@mailru.com
|