Шина PCI - Циклы шины
ОГЛАВЛЕНИЕ
Циклы шины
По сигналам 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 (Данные), причем адрес должен быть записан первым.
Чтение памяти (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 - встроенный тест
Это расширение обычного цикла чтения памяти. Используется для чтения больших блоков памяти без кэширования.
Двойной цикл адреса (1101)
Двойной цикл адреса необходим в том случае, если необходимо передать 64-х разрядный адрес в версии PCI с 32-х разрядной адресной сетке. В первом цикле передаются четыре младших байта адреса, затем четыре старших байта. Во втором цикле необходимо также передать команду, определяющую тип устройства, чей адрес выставлен (порт ввода/вывода, память и т.д.). Собственно PCI поддерживает 64 разряда адреса для портов ввода/вывода, но в PC на процессорах архитектуры от Intel такое адресное пространство не поддерживается (не позволяет сам процессор).