Академический Документы
Профессиональный Документы
Культура Документы
Учреждение образования
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
2020
Цель
Изучить способы адресации устройств PCI. Отработать метод oпроса, идентификации и
конфигурирования устройств. Составить структурную и функциональную схемы идентификации
периферийных устройств (по указанию преподавателя).
Теоретическая часть:
1)Для чего предназначена шина PCI? Какова ее роль в архитектуре современного ПК?
PCI (Peripheral Component Interconnect) – шина соединения периферийных компонентов, является
основной шиной расширения современных компьютеров.
Поначалу шина PCI вводилась как пристройка (mezzanine bus) к системам с основной шиной ISA,
став позже центральной шиной: она соединяется с системной шиной процессора
высокопроизводительным мостом (северным), входящим в состав чипсета системной платы.
2)Каковы основные характеристики шины PCI?
Шина является синхронной — фиксация всех сигналов выполняется по положительному перепаду
(фронту) сигнала CLK. Номинальнойчастотой синхронизации считается 33 МГц; начиная с
версии 2.1, допускается повышение частоты до 66 МГц при поддержке всех устройств на шине
(режимPCI-66). Номинальная разрядность шины данных — 32 бита, спецификация определяет
возможность расширения разрядности до 64 бит. При частоте шины 33 МГц
теоретическаяпропускная способность достигает 132 Мбайт/с для32-битнойшины и 264
Мбайт/с для64-битной;при частоте синхронизации 66 МГц – 264 и 528 соответственно.
3)Что такое устройство PCI?
С устройствами PCI процессор может взаимодействовать командами обращения к памяти
(MOV и т.д.) и портамввода-вывода(IN/OUT), адресованным к областям, выделенным каждому
такому устройству при конфигурировании. Устройства могут вырабатывать запросы
маскируемых и немаскируемых прерываний.
4)Каким образом выполняется доступ к устройству PCI со стороны центрального процессора?
Мосты электрически отделяют интерфейсные сигналы одной шины от другой, соединяя их
логически; главный мост соединяет главную шину с ядром системы (процессором и памятью).
Каждая шина имеет свойномер шины (PCI bus number). Шины нумеруются последовательно;
главная шина имеет нулевой номер.
5)Поддерживают ли устройства PCI обмен по механизму DMA?
Понятия каналов DMA для шины PCI нет, но агент шины может сам выступать в роли
задатчика, поддерживая высокопроизводительный обмен с памятью (и не только) и не занимая
ресурсов центрального процессора.
6)Для чего устройства PCI должны поддерживать возможность перемещения ресурсов в пределах
общего пространства памяти и ввода-вывода?
и перемещать все занимаемые ресурсы в пределах доступного пространства адресации. Это
позволяет обеспечивать бесконфликтное распределение ресурсов для многих устройств
(функций). Для управления устройствами рекомендуется вместо портовввода-выводапо
возможности использовать ячейки памяти
7)Отображается ли конфигурационное пространство устройств PCI на общее пространство памяти
и ввода-вывода?
Одно и то же функциональное устройство может быть сконфигурировано по-
разному,отображая свои регистры либо на пространство памяти, либо на пространствоввода-
вывода.Драйвер может определить текущую настройку, прочитав содержимое регистра
базового адреса устройства. Драйвер также может определить и номер запроса прерывания,
который используется устройством.
8)Какой программный механизм позволяет провести конфигурирование устройств?
В стандарт PCI заложены возможности автоматического конфигурирования системных
ресурсов (пространств памяти и ввода-выводаи линий запроса прерываний). Автоматическое
конфигурирование устройств (выбор адресов и прерываний) поддерживается средствами BIOS и
ориентировано на технологию PnP. Стандарт PCI определяет для каждого слота
конфигурационное пространство размером до 256 регистров(8-битных),не приписанных ни к
пространству памяти, ни к пространствуввода-вывода.Доступ к ним осуществляется по
специальным циклам шины
9)Какие поля имеются в конфигурационном пространстве устройств PCI?
Конфигурационное пространство устройства начинается со стандартного заголовка, в котором
содержатся идентификаторы производителя, устройстваи его класса, а также описание требуемых
и занимаемых системных ресурсов.
После заголовка могут располагаться регистры, специфичные для устройства; они могут занимать
адреса конфигурационного пространства в пределах 40-FFh.
Перечисленные ниже поля идентификации допускают только чтение.
Device ID – идентификатор устройства, назначаемый производителем.
Vendor ID – идентификатор производителя микросхемы PCI, назначенный PCI SIG.
Идентификатор 0xFFFF является недопустимым; это значение должно возвращаться
при чтении конфигурационного пространства несуществующего устройства.
Revision ID – версия продукта, назначенная производителем. Используется как
расширение поля Device ID.
Header Type – тип заголовка (биты 6:0), определяющий формат ячеек в диапазоне 0x10-
0x3Fи несущий признак многофункционального устройства (если бит 7=1). На рисунке
приведен формат заголовка типа 0, относящийся именно к устройствам PCI. Тип 01
относится к мостамPCI-PCI;тип 02 относится к мостам шины CardBus.
Class Code — код класса, определяющий основную функцию устройства, а иногда и его
программный интерфейс. Старший байт (адрес 0x0B) определяет базовый класс,
средний — подкласс, младший — программный интерфейс (если он стандартизован).
10)В каких случаях необходимо обращение к устройствам PCI с помощью конфигурационного
цикла и географической адресации?
Часто для слотов используются убывающие номера устройств, начиная с 20. Группы соседних
слотов могут подключаться к разным шинам; на каждой шине PCI нумерация устройств
независимая (могут быть и устройства с совпадающими номерами dev, но разными номерами
шин). Устройства PCI, интегрированные в системную плату, используют ту же систему
адресации. Их номера «запаяны намертво», в то время как адреса карт расширения можно
изменять перестановкой их в разные слоты. Одна карта PCI может содержать только одно
устройство шины, к которой она подключается, поскольку ей в слоте выделяется только одна
линия IDSEL. Если на карте размещают несколько устройств (например,4-портоваякарта
Ethernet), то на ней приходится устанавливать мост
Исходный код программы
1) «pci_c_header.h
typedef struct _PCI_VENTABLE
{
unsigned short VenId ;
char * VenShort ;
char * VenFull ;
} PCI_VENTABLE, *PPCI_VENTABLE ;
//Непольный список вендоров!!!!!!!!!
PCI_VENTABLE PciVenTable [] =
{
{ 0x0033, "", "Paradyne Corp." } ,
{ 0x003D, "well", "master" } ,
……
};
// Use this value for loop control during searching:
#define PCI_CLASSCODETABLE_LEN
(sizeof(PciClassCodeTable)/sizeof(PCI_CLASSCODETABLE))
char * PciCommandFlags [] =
{
"I/O Access",
"Memory Access",
"Bus Mastering",
"Special Cycles",
"Memory Write & Invalidate",
"Palette Snoop",
"Parity Errors",
"Wait Cycles",
"System Errors",
"Fast Back-To-Back",
"Reserved 10",
"Reserved 11",
"Reserved 12",
"Reserved 13",
"Reserved 14",
"Reserved 15"
};
char * PciStatusFlags [] =
{
"Reserved 0",
"Reserved 1",
"Reserved 2",
"Reserved 3",
"Reserved 4",
"66 MHz Capable",
"User-Defined Features",
"Fast Back-To-Back",
"Data Parity Reported",
"",
"",
"Signalled Target Abort",
"Received Target Abort",
"Received Master Abort",
"Signalled System Error",
"Detected Parity Error"
};
2) «main.cpp»:
#include "pci_c_header.h"
#include <iostream>
#include <Windows.h>
#include <tchar.h>
#include <iostream>
}
}
}
return "Undefined";
}
int main() {
//printf("Es8Eee\n");
char *format_body =
"---------------------------------------\
\n%d:%d:%d\nVendor ID: %#0x | %s \nDevice ID: %#0x | %s\n";
-------------------------
0:0:0
Vendor ID: 10DE Nvidia Corp
Device ID: 01E0 Realtek AC'97 Audio
-------------------------
0:0:1
Vendor ID: 10DE Nvidia Corp
Device ID: 01EB nForce2 Memory Controller
….
Вывод
В ходе выполнения практического задания была разработана программа для опроса и
идентификации устройств PCI. Были изучены основные функциональные особенности методы
работы PCI.