В начале транзакции активное устройство активизирует линию FRAME#. По шине AD передает адрес, а по линиям C/BE# – команду. Адресованное пассивное устройство отзывается сигналом DEVSEL#.

Активное устройство показывает готовность к обмену сигналом IRDY#. Данные передаются только при одновременной активации сигналов IRDY# и TRDY#, причем TRDY# формируется тогда, когда пассивное устройство готово к обмену.

За адресной частью следует фаза пересылки данных. Количество передаваемых слов в пакете не указывается, но перед последним словом данных устройство снимает сигнал FRAME#. В частном случае передается одно слово.

Каждое ведомое устройство должно довольно быстро отвечать на транзакцию. Ожидание может составлять несколько тактов, но не может превышать 8 тактов.

Если устройство не успевает, то формируется сигнал STOP#.

8. Команды шины pci.

PCI поддерживает 16 различных операций на шине; из них реализовано только 12, а остальные зарезервированы. Тип операции зависит от команды, передается по линиям C/BE# (количество линий – 4). Тип операции передается в течение фазы адреса.

Используются следующие операции:

0000 – подтверждение прерывания;

0001 – специальный цикл (в данном цикле ЭВМ передает устройствам различные сообщения);

0010 – чтение порта ввода-вывода;

0011 – запись в порт ввода-вывода;

0100 – резерв;

0101 – резерв;

0110 – чтение памяти;

0111 – запись в память;

1000 – резерв;

1001 – резерв;

1010 – чтение конфигурации;

1011 – запись конфигурации;32

1100 – циклическое (многократное) чтение памяти (используется при обращении к строкам кэш памяти);

1101 – цикл с 64-разрядным адресом (двухадресный цикл, позволяет по 32-битной шине обращаться к устройствам с 64-битной адресацией);

1110 – чтение строк памяти (чтение до конца строки кэша);

1111 – запись в память с инвалидацией (отменой достоверности).

В фазе данных линии C/BE# указывают на информационные байты.

При этом линии выбирают следующие байты:

C/BE# 0 -> AD7 – AD0,

C/BE# 1 -> AD15 – AD8,

C/BE# 2 ->AD23 – AD16,

C/BE# 3 -> AD31 – AD24

Количество адресуемых байт может быть 1, 2, 3 или 4.

9 Прерывание и захват шины pci, конфигурация устройств.

Прерывание организуется с помощью линий подачей сигнала низкого уровня на одну из линий INTA#,INTB#,INTC#,INTD#. Этот сигнал должен удерживаться до тех пор, пока драйвер, вызванный по прерыванию, не сбросит запрос прерывания, обратившись по шине к данному устройству. Драйвер определяет адрес устройства чтением конфигурационного регистра. Это происходит, когда на шинеC/BE# выставлена команда 0000. Приоритеты устройств определяются программированием арбитра

процессора ЭВМ. Подтверждение прерываний надо снимать с линий C/BE. Драйвер, работающий с устройствомPCI, определяет вектор прерывания, доставшийся устройству, чтением конфигурационного регистра.

Захват шины осуществляется с подачей сигнала запроса захвата на линию REQ#. Ответный сигнал подтверждения захвата передается арбитром процессора по линииGNT#. В режиме захвата устройство становится активным и управляет шиной по своему усмотрению. В частном случае

реализуется режим прямого доступа в память (DMA).

Шина PCIимеют возможность электронной конфигурации, подключенных к ней устройств. Это позволяет автоматически перераспределять ресурсы компьютера (диапазоны адресов памяти и портов ввода-вывода, линии прерывания и др.) между устройствами. Эта технология называетсяPlug&Play.33

Координационные средства по распределению ресурсов между устройствами выполняют специальные конфигурационные программы.

В шине PCIдля осуществления конфигурации устройств есть две команды: чтение и запись конфигурации. С их помощью происходит определение типа устройств с их шиной, потребности ресурсов и предоставление им этих ресурсов.

Информация о конфигурации записывается и хранится в 256 байтах. Доступ к ним производится при активации сигнала на линии IDSEL, подключенной индивидуально к каждому устройству (слоту расширения). Конфигурационное обращение идет поочередно. Всем устройствамPCIприсваивается индивидуальный адрес, который определяется схемотехникой системы.

Так, если в слот-расширение вставлена видеокарта, то ее конфигурационное пространство доступно по адресу этого слота. При переустановке его в другой слот она будет иметь уже другой адрес.

Формат данных конфигурации включает следующие сведения: идентификатор производителя; идентификатор устройства; статус; идентификатор версии; класс, код; размер кэш-линии; максимальное время захвата шины; регистры базовых адресов; базовый адрес ПЗУ; регистр команды;

Спецификацией определены несколько механизмов доступа к конфигурационному пространству, но в простых системах он осуществляется через специальные регистры моста центрального процессора – регистры адреса и данных конфигурации.

И PCI-X организован в виде транзакций — логически завершенных операций обмена. В типовой транзакции участвуют два устройства —инициатор обмена (initiator), он же ведущее устройство (master), и целевое устройство (ЦУ, target)), оно же ведомое (slave). Правила взаимодействия этих устройств определяются протоколом шины PCI. Устройство может следить за транзакциями на шине и не являясь их участником (не вводя никаких сигналов); режиму слежения соответствует термин Snooping. Есть особый тип транзакции (Special Cycle) — широковещательный, в котором инициатор протокольно не взаимодействует ни с одним из устройств. В каждой транзакции выполняется одна команда — как правило, чтение или запись данных по указанному адресу. Транзакция начинается с фазы адреса, в которой инициатор задает команду и целевой адрес. Далее могут следовать фазы данных, в которых одно устройство (источник данных) помещает данные на шину, а другое (приемник) их считывает. Транзакции, в которых присутствует множество фаз данных, называются пакетными. Есть и одиночные транзакции (с одной фазой данных). Транзакция может завершиться и без фаз данных, если целевое устройство (или инициатор) не готово к обмену. В шине PCI-X добавлена фаза атрибутов, в которой передается дополнительная информация о транзакции.

Сигнальный протокол шин PCI и PCI-X

Состав и назначение интерфейсных сигналов шины раскрывает таблице ниже. Состояния всех сигнальных линий воспринимаются по положительному перепаду CLK, и именно эти моменты в дальнейшем описании подразумеваются под тактами шины (на рисунках отмечены вертикальными пунктирными линиями). В разные моменты времени одними и теми же сигнальными линиями управляют разные устройства шины, и для корректной (бесконфликтной) «передачи полномочий» требуется, чтобы существовал промежуток времени, в течение которого линией не управляет ни одно устройство. На временных диаграммах это событие — так называемый «пируэт» (turnaround) — обозначается парой полукруглых стрелок.

Таблица. сигналы шины PCI

Сигнал
Назначение
AD Address/Data — мультиплексированная шина адреса/данных. В начале транзакции передается адрес, в последующих тактах — данные
C/B # Command/Byte Enable — команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины, задается четырехбитным кодом в фазе адреса
FRAME#
Кадр. Введением сигнала отмечается начало транзакции (фаза адреса), снятие сигнала указывает на то, что последующий цикл передачи данных является последним в транзакции
DEVSEL#
Device Select — устройство выбрано (ответ ЦУ на адресованную к нему транзакцию)
IRDY#
Initiator Ready — готовность ведущего устройства к обмену данными
TRDY#
Target Ready — готовность ЦУ к обмену данными
STOP#
Запрос ЦУ к ведущему устройству на остановку текущей транзакции
LOCK#
Сигнал блокировки (захвата) шины для обеспечения целостного выполнения операции. Используется мостом, которому для выполнения одной операции требуется выполнить несколько транзакций PCI
REQ#
Request — запрос от ведущего устройства на захват шины
GNT#
Grant — предоставление ведущему устройству управления шиной
PAR
Parity — общий бит четности для линий AD и C/BE#
PERR#
Parity Error — сигнал об ошибке четности (для всех циклов, кроме специальных). Вырабатывается любым устройством, обнаружившим ошибку
PME#
Power Management Event — сигнал о событиях, вызывающих изменение режима потребления (дополнительный сигнал, введенный в PCI 2.2)
CLKRUN#
Clock running — шина работает на номинальной частоте синхронизации. Снятие сигнала означает замедление или остановку синхронизации с целью снижения потребления (для мобильных применений)
PRSN #
Present — индикаторы присутствия платы, кодирующие запрос потребляемой мощности. На карте расширения одна или две линии индикаторов соединяются с шиной GND, что воспринимается системной платой
RST#
Reset — сброс всех регистров в начальное состояние (по кнопке «Reset»
и при перезагрузке)
IDSEL
Initialization Device Select — выбор устройства в циклах конфигурационного считывания и записи; на эти циклы отвечает устройство, обнаружившее на данной линии высокий уровень сигнала
SERR#
System Error — системная ошибка. Ошибка четности адреса или данных в специальном цикле или иная катастрофическая ошибка, обнаруженная устройством. Активизируется любым устройством PCI и вызывает NMI
REQ64#
Request 64 bit — запрос на 64-битный обмен. Сигнал вводится 64-битным инициатором, по времени он совпадает с сигналом FRAME#. Во время окончания сброса (сигналом RST#) сигнализирует 64-битному устройству о том, что оно подключено к 64-битной шине. Если 64-битное устройство не обнаружит этого сигнала, оно должно переконфигурироваться на 32-битный режим, отключив буферные схемы старших байтов
ACK64#
Подтверждение 64-битного обмена. Сигнал вводится 64-битным ЦУ, опознавшим свой адрес, одновременно с DEVSEL#. Отсутствие этого подтверждения заставит инициатор выполнять обмен с 32-битной разрядностью
INTA#, INTB#, INTC#, INTD#
Interrupt A, B, C, D — линии запросов прерывания, чувствительность к уровню, активный уровень — низкий, что допускает разделяемость (совместное использование) линий
CLK
Clock — тактовая частота шины. Должна лежать в пределах 20—33 МГц, начиная с PCI 2.1 может быть до 66 МГц, в PCI-X до 100 и 133 МГц
M66EN
66MHz Enable — разрешение частоты синхронизации до 66 МГц (на картах 33 МГц заземлен, на 66 МГц — свободен)
PCIXCAP (38B)

Возможности PCI-X: на платах PCI — заземлен, на PCI-X133 соединен с землей через конденсатор 0,01 мкФ, на PCI-X66 — параллельной RC-цепочкой 10 кОм, 0,01 мкФ.

SDONE
Snoop Done — сигнал завершенности цикла слежения для текущей транзакции. Низкий уровень указывает на незавершенность цикла слежения за когерентностью памяти и кэша. Необязательный сигнал, используется только устройствами шины с кэшируемой памятью. Исключен начиная с PCI 2.2
SBO#
Snoop Backoff — попадание текущего обращения к памяти абонента шины в модифицированную строку кэша. Необязательный сигнал, используется только абонентами шины с кэшируемой памятью при алгоритме обратной записи. Исключен начиная с PCI 2.2
SMBCLK
SMBus Clock — тактовый сигнал шины SMBus (интерфейс I2C). Введен начиная с PCI 2.3
SMBDAT
SMBus Data — последовательные данные шины SMBus (интерфейс I2C). Введен начиная с PCI 2.3
TCK
Test Clock — синхронизация тестового интерфейса JTAG
TDI
Test Data Input — входные данные тестового интерфейса JTAG
TDO
Test Data Output — выходные данные тестового интерфейса JTAG
TMS
Test Mode Select — выбор режима для тестового интерфейса JTAG
TRST
Test Logic Reset — сброс тестовой логики

В каждый момент времени шиной может управлять только одно ведущее устройство, получившее на это право от арбитра. Каждое ведущее устройство имеет пару сигналов — REQ# для запроса на управление шиной и GNT# для подтверждения предоставления управления шиной. Устройство может начинать транзакцию (устанавливать сигнал FRAME#) только при полученном активном сигнале GNT# и дождавшись отсутствия активности шины. Заметим, что за время ожидания покоя арбитр может «передумать» и отдать управление шиной другому устройству с более высоким приоритетом. Снятие сигнала GNT# не позволяет устройству начать следующую транзакцию, а при определенных условиях (см. далее) может заставить прекратить начатую транзакцию. Арбитражем запросов на использование шины занимается специальный узел — арбитр, входящий в мост, соединяющий данную шину с центром. Схема приоритетов (фиксированный, циклический, комбинированный) определяется программированием арбитра.

Для адреса и данных используются общие мультиплексированные линии AD. Четыре мультиплексированные линии C/BE обеспечивают кодирование команд в фазе адреса и разрешение байтов в фазе данных. В транзакциях записи линии C/BE разрешают использование байтов данных одновременно с их присутствием на шине AD, в транзакциях чтения эти сигналы относятся к байтам следующей за ними фазы данных. В фазе адреса (начало транзакции) ведущее устройство активирует сигнал FRAME#, передает целевой адрес по шине AD, а по линиям C/BE# — информацию о типе транзакции (команду). Адресованное целевое устройство отзывается сигналом DEVSEL#. Ведущее устройство указывает на свою готовность к обмену данными сигналом IRDY#, эта готовность может быть выставлена и до получения DEVSEL#. Когда и целевое устройство будет готово к обмену данными, оно установит сигнал TRDY#. Данные по шине AD передаются только при одновременном наличии сигналов IRDY# и TRDY#. С помощью этих сигналов ведущее и целевое устройства согласовывают свои скорости, вводя такты ожидания (wait states). На рисунке ниже приведена временная диаграмма обмена, в которой и ведущее и целевое устройства вводят такты ожидания. Если бы они оба ввели сигналы готовности в конце фазы адреса и не снимали бы их до конца обмена, то в каждом такте после фазы адреса передавались бы по 32 бита данных, что обеспечило бы выход на предельную производительность обмена. В транзакциях чтения после фазы адреса необходим дополнительный такт для пируэта, во время которого инициатор прекращает управление линией AD; целевое устройство сможет взять на себя управление шиной AD только в следующем такте. В транзакции записи пируэт не нужен, поскольку данные передает инициатор.

На шине PCI все транзакции трактуются как пакетные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Количество фаз данных в пакете явно не указывается, но в такте последней фазы данных ведущее устройство при введенном сигнале IRDY# снимает сигнал FRAME#. В одиночных транзакциях сигнал FRAME# активен лишь в течение одного такта. Если устройство не поддерживает пакетные транзакции в ведомом режиме, то оно должно потребовать прекращения пакетной транзакции в течение первой фазы данных (выставив сигнал STOP# одновременно с TRDY#). В ответ на это ведущее устройство завершит данную транзакцию и продолжит обмен последующей транзакцией со следующим значением адреса. После завершающей фазы данных ведущее устройство снимает сигнал IRDY#, и шина переходит в состояние покоя (Idle) — оба сигнала: — FRAME# и IRDY# — находятся в пассивном состоянии.

Инициатор может начать следующую транзакцию и без такта покоя, установив FRAME# одновременно со снятием IRDY#. Такие быстрые смежные транзакции (Fast Back-to-Back) могут быть обращены как к одному, так и к разным целевым устройствам. Первый тип быстрых смежных транзакций поддерживается всеми устройствами PCI, выступающими в роли целевого устройства. На поддержку второго типа смежных транзакций (такая поддержка необязательна) указывает бит 7 регистра состояния. Инициатору разрешают (если он умеет) использовать быстрые смежные транзакции с различными устройствами (разрешение определяется битом 9 регистра команд), только если все агенты шины допускают быстрые обращения. При обмене данных в режиме PCI-X быстрые смежные транзакции недопустимы.

Протокол шины обеспечивает надежность обмена — ведущее устройство всегда получает информацию об отработке транзакции целевым устройством. Средством повышения достоверности обмена является применение контроля четности: линии AD и C/BE# и в фазе адреса, и в фазе данных защищены битом четности PAR (количество установленных битов этих линий, включая PAR, должно быть четным). Действительное значение PAR появляется на шине с задержкой в один такт относительно линий AD и C/BE#. При обнаружении ошибки устройство вырабатывает сигнал PERR# (со сдвигом на такт после появления на шине действительного бита четности). В подсчете четности при передаче данных учитываются все байты, включая и недействительные (отмеченные высоким уровнем сигнала C/BEx#). Состояние бит, даже и в недействительных байтах данных, во время фазы данных должно оставаться стабильным.

Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя (сигналы FRAME# и IRDY# пассивны). Завершение транзакции выполняется либо по инициативе ведущего устройства, либо по инициативе целевого устройства.

Ведущее устройство может завершить транзакцию одним из следующих способов:

  • comletion — нормальное завершение по окончании обмена данными;
  • time-out — завершение по тайм-ауту. Происходит, когда во время транзакции у ведущего устройства отбирают право на управление шиной (снятием сигнала GNT#), и истекает время, указанное в его таймере Latency Timer. Это может произойти, если адресованное целевое устройство оказалось непредвиденно медленным или запланирована слишком длинная транзакция. Короткие транзакции (с одной-двумя фазами данных) даже в случае снятия сигнала GNT# и срабатывания таймера завершаются нормально;
  • master-Abort — прекращение транзакции, когда в течение заданного времени ведущее устройство не получает ответа от целевого устройства (сигнала DEVSEL#).

Транзакция может быть прекращена по инициативе целевого устройства; для этого оно может ввести сигнал STOP#. Возможны три типа прекращения транзакции:

  • retry — повтор, введение сигнала STOP# при пассивном сигнале TRDY# до первой фазы данных. Эта ситуация возникает, когда целевое устройство изза внутренней занятости не успевает выдать первые данные в положенный срок (16 тактов). Прекращение типа retry является указанием ведущему устройству на необходимость повторного запуска той же транзакции;
  • disconnect — отключение, введение сигнала STOP# в течение или после первой фазы данных. Если сигнал STOP# введен при активном сигнале TRDY# очередной фазы данных, то эти данные передаются, на чем транзакция и завершается. Если сигнал STOP# выставлен при пассивном сигнале TRDY#, то транзакция завершается без передачи данных очередной фазы. Отключение производится, когда целевое устройство не способно своевременно выдать или принять очередную порцию данных пакета. Отключение является указанием ведущему устройству на необходимость повторного запуска этой транзакции, но с модифицированным стартовым адресом;
  • target-abort — отказ, введение сигнала STOP# одновременно со снятием сигнала DEVSEL# (в предыдущих случаях во время появления сигнала STOP# сигнал DEVSEL# был активен). После этого данные уже не передаются. Отказ производится, когда целевое устрйство обнаруживает фатальную ошибку или иные условия, по которым оно уже никак не сможет обслужить данный запрос (в том числе и неподдерживаемую команду).

Использование трех типов прекращения транзакции вовсе не обязательно для всех целевых устройств, однако любое ведущее устройство должно быть готово к завершению транзакций по любой из этих причин.

Прекращение типа retry используется для организации отложенных транзакций (delayed transactions). Отложенные транзакции используются только медленными целевыми устройствами, а также мостами PCI при трансляции транзакций на другую шину. Прекращая (для инициатора) транзакцию условием retry, целевое устройство внутренне выполняет данную транзакцию. Когда инициатор повторит эту транзакцию (выдаст ту же команду с тем же адресом и тем же набором сигналов C/BE# в фазе данных), у целевого устройства (или моста) уже будет готов результат (данные чтения или состояние выполнения записи), который оно быстро вернет инициатору. Результат отложенной транзакции, выполненной данным устройством, устройство или мост должны хранить до тех пор, пока результаты не будут запрошены инициатором. Однако он может и «забыть» повторить транзакцию (из-за каких-либо нештатных ситуаций). Чтобы избежать переполнения буфера хранения результатов, устройству приходится отбрасывать (discard) эти результаты. Отбрасывание может быть выполнено без побочных эффектов, если откладывалась транзакция к памяти, допускающей предвыборку (с атрибутом prefetchable, см. далее). Остальные типы транзакций в общем случае безнаказанно отбрасывать нельзя (может нарушиться целостность данных), для них отбрасывание разрешается только после безрезультатного ожидания повтора в течение 215 тактов шины (по срабатыванию discard timer). Об этой особой ситуации устройство может сообщить своему драйверу (или всей системе).

Инициатор транзакции может потребовать монопольного использования шины PCI на все время выполнения операции обмена, требующей нескольких шинных транзакций. Так, например, если центральный процессор выполняет инструкцию модификации данных в ячейке памяти, принадлежащей устройству PCI, ему нужно прочитать данные из устройства, модифицировать их в своем АЛУ и вернуть результат в устройство. Чтобы в эту операцию не вклинивались транзакции от других инициаторов (что чревато нарушением целостности данных), главный мост выполняет ее как блокированную — на все время исполнения операции подается шинный сигнал LOCK#. Этот сигнал никак не используется (и не вырабатывается) обычными устройствами PCI (не мостами); он используется только мостами для управления арбитражем.


Устройство для ремонта и тестирования персональных компьютеров (ПК) POST Card PCI применяется для диагностики неисправностей при ремонте и модернизации компьютеров, а также периферийных систем. Оно найдет широкое применение в любых электронных системах, работающих на основе компьютеров типа IBM PC (или совместимых с ними).

Общие сведения

POST Card PCI (рис. 1) представляет собой плату расширения ПК, которая может быть установлена в любой свободный PCI-слот (33 МГц) и предназначена для отображения POST-кодов, генерируемых системой BIOS ПК, в удобном для пользователя виде.

Рис. 1. Внешний вид устройства

Благодаря применению ПЛИС (программируемая логическая интегральная схема) фирмы Altera стало возможным создание простого и доступного для повторения радиолюбителями устройства.

Кроме того, устройство можно использовать как тестер микросхем. Для этого в нем предусмотрена 44-выводная панель для микросхемы.

Устройство POST Card PCI имеет следующие технические характеристики:

  • Напряжение питания, В +5
  • Ток потребления, мА
  • Частота шины PCI ПК, МГ ц 33
  • Адрес диагностического порта 0080h
  • Индикация POST кодов (в шестнадцатеричном виде) 1 байт
  • Индикация сигналов PG шины RST (левая точка), CLК (правая точка индикатора)
  • Индикаторы наличия напряжения источника питания, В +5, +12, -12, +3,3
  • Совместимость с материнскими платами на чипсетах Intel, VIA, SIS
  • Размер печатной платы, мм 112x90

Основой POST Card PCI является ПЛИС DD1 (рис. 1, 2), на которой реализовано упрощенное PCI Target-устройство, поддерживающее запись в порт вывода и автоматическое конфигурирование (Plug&Plug), достаточные для функционирования устройства. ПЛИС Altera EPM3064ALC44-10 входит в набор и запрограммирована компанией МАСТЕР КИТ специально для работы в POST Card PCI. На микросхеме DD2 собран стабилизатор напряжения +3,3 В для питания ПЛИС. Информация из ПЛИС выводится в последовательном виде и фиксируется в регистрах DD4, DD5. Их выходы через ограничительные резисторы подключены к сдвоенному 7-сегментному индикатору HL1, на котором отображаются POST-коды. Для того чтобы процесс индикации POST кодов не нарушался в случае срыва генерации PCI CLK на неисправной материнской плате, в состав POST Card PCI включен отдельный генератор на микросхеме DD3.

Рис. 2. Принципиальная электрическая схема устройства POST CARD PCI

Светодиоды, включенные через ограничивающие резисторы, индицируют наличие напряжений +3,3, +5, + 12 и -12 В на шине PCI.

Принцип работы

При каждом включении питания ПК, совместимого с IBM PC, и до начала загрузки операционной системы процессор компьютера выполняет процедуру BIOS под названием "Самотест по включению питания" - POST (Power On Self Test). Эта же процедура выполняется также при нажатии на кнопку RESET или при программной перезагрузке компьютера. В некоторых особых случаях с целью сокращения времени загрузки ПК процедура POST может быть несколько урезана по времени, например, в режиме "Quick Boot" или при выходе из режима "сна" (Hibernate).

Основной целью процедуры POST является проверка базовых функций и подсистем ПК (память, процессор, материнская плата, видеоконтроллер, клавиатура, гибкий и жесткий диски) перед загрузкой операционной системы. Это застраховывает пользователя от попытки работать на неисправной системе, что могло бы привести, например, к разрушению пользовательских данных на жестком диске. Перед началом каждого из тестов процедура POST генерирует POST-код, который выводится по определенному адресу в пространстве адресов устройств ввода/вывода ПК. В случае обнаружения неисправности в тестируемом устройстве процедура POST просто "зависает", а предварительно выведенный POST-код однозначно определяет, на каком из тестов произошло "зависание". Таким образом, глубина и точность диагностики при помощи POST-кодов полностью определяются глубиной и точностью тестов соответствующей процедуры POST-системы BIOS компьютера.

Некоторые коды неисправностей BIOS

В таблице приведены некоторые коды AMI BIOS, отражающие наиболее часто встречающиеся неисправности ПК.

Таблица

Код

Неисправность

Ошибка конфигурации системной памяти (фатальная ошибка)

Ошибка конфигурации системной памяти (звуковой сигнал)

Ранняя инициализация контроллера клавиатуры

Ошибка инициализации VGA BIOS

Ошибка теста видеопамяти адаптера CGA

Ошибка теста схем формирования разверток адаптера CGA

Ошибка видеопамяти или схем формирования разверток

Отключение IRQ12, если PS/2 mouse отсутствует

Индикация сообщений об ошибках

Определение типа памяти, суммарного объем и размещение по строкам

Сообщение об ошибках на предыдущих этапах инициализации

Кроме вышеуказанных POST-кодов в диагностический порт выводятся сообщения о событиях в процессе выполнения Device Initialization Manager (DIM). Существует несколько контрольных точек, в которых отображается состояние инициализации системных или локальных шин.

В случае если обнаружена ошибка конфигурации системной памяти (коды DE или DF), в порт 80h выводится последовательно в бесконечном цикле код DE, код DF, код ошибки конфигурации, который может принимать следующие значения:

00 - оперативная память не обнаружена;

01 - установлены модули DIMM различных типов (пример, EDO и SDRAM);

02 - чтение содержимого SPD закончилась неудачей;

03 - модуль не соответствует требованиям для работы на заданной частоте;

04 - модуль не может быть использован в данной системе;

05 - информация в SPD не позволяет использовать установленные модули;

06 - обнаружена ошибка в младшей странице памяти.

Практический поиск неисправностей с использованием тестера POST Card

Прежде всего, при включении питания перед началом работы процедуры POST должен произойти сброс системы сигналом RST (RESET), что индицируется на POST Card кратковременным миганием левой точки на индикаторе. Рассмотрим несколько наиболее популярных неисправностей ПК и способы их локализации.

POST-коды не отображаются

При неисправности компьютера в самом сложном случае сброс либо совсем не проходит, либо проходит, но никакие POST-коды на индикаторе не отображаются.

Рекомендуется немедленно выключить компьютер и вытащить все дополнительные платы и кабеля, а также память ОЗУ из слотов материнской платы, оставив подключенной к блоку питания только собственно материнскую плату с установленными процессором и POST Card. Если при последующем включении компьютера нормально проходит сброс системы и появляются первые POST-коды, очевидно, проблема заключается во временно извлеченных компонентах компьютера. Возможно, неправильно подключены шлейфы. Вставляя последовательно модули памяти, видеоадаптер, а затем и другие карты, и наблюдая за POST-кодами на индикаторе, обнаруживают неисправный модуль.

Не проходит даже начальный сброс системы (на индикаторе POST Card в самом начале теста кратковременно не загорается левая точка индикатора)

В этом случае либо неисправен блок питания компьютера, либо сама материнская плата (неисправны цепи формирования сигнала RESET). Точную причину можно установить, подсоединив к материнской плате заведомо исправный блок питания.

Сигнал сброса проходит, но никакие POST-коды на индикатор не выводятся (тестируется система, состоящая только из материнской платы, процессора, POST Card и блока питания)

Если материнская плата новая, то причина может быть в неправильно установленных переключателях на материнской плате. Если все переключатели и процессор установлены правильно, а материнская плата не запускается, следует заменить процессор заведомо исправным. Если же это не помогает, то можно сделать вывод о неисправности материнской платы либо ее компонентов (например, причиной неисправности может являться повреждение информация во Flash-BIOS).

Неисправности ПК, определяемые с помощью тестера pOsT Card

После включения питания компьютера (или нажатия на кнопку RESET) и до появления первого POST-кода на индикатор POST Card выводится специальный символ (см. рис 3), который свидетельствует об отсутствии вывода ПК каких-либо POST-кодов. Эта особенность работы данной POST Card облегчает диагностику и позволяет наглядно определить, стартует ли компьютер вообще. Кроме того, этот же символ выводится при программном сбросе PCI-шины для фиксации прохождения сигнала RST. Точки 7-сегментного индикатора POST Card отображают состояния сигналов RST и CLK шины PCI. Зажигание правой точки соответствует наличию активного сигнала синхронизации CLK шины PCI, зажигание левой точки - наличию активного сигнала RST

Рис. 3. Индикация на POST Card об отсутствии вывода ПК каких-либо POST-кодов

При исправном компьютере при включении питания вначале должен произойти сброс системы сигналом RESET (что индицируется на POST Card специальными символами), затем - запуск компьютера с последовательным прохождением всех POST кодов. При неисправности компьютера в самом сложном случае сброс либо совсем не проходит, либо проходит, но никакие другие POST-коды на индикаторе не отображаются.

В этом случае рекомендуется немедленно выключить компьютер, отключить все дополнительные платы и кабели, а также память из материнской платы, оставив подключенной к блоку питания только материнскую плату с установленными процессором и платой POST Card.

Если при последующем включении компьютера нормально проходит сброс системы и появляются первые POST-коды, то проблема заключается во временно извлеченных компонентах компьютера. Возможно неправильно подключены шлейфы (особенно часто вставляют "вверх ногами" шлейф IDE).

Последовательно устанавливают модуль памяти, видеоадаптер, другие карты и, наблюдая за POST-кодами, обнаруживают неисправный модуль.

Например, при неисправной памяти для компьютеров с AMI BIOS последовательность POST-кодов обычно фиксируется на коде d4; с AWARD BIOS - на кодах C1 или С6. Бывает, что при этом неисправен не сам модуль памяти, а материнская плата - причина заключается в плохом контакте в разъемах SIMM/DIMM (согнуты/замкнуты между собой контакты), либо не до конца вставлен модуль в разъем.

При неисправном видеоадаптере для компьютеров с AMI BIOS последовательность POST-кодов фиксируется на кодах 2C, 40 или 2A в зависимости от модификации BIOS либо эти коды отсутствуют, а на мониторе нет соответствующих строк инициализации видеокарты (с указанием типа, объема памяти и фирмы-производителя видеоадаптера).

Аналогично, для компьютеров с AWARD BIOS при неисправности видеоадаптера последовательность POST-кодов либо фиксируется на коде 0d, либо "проскакивает" этот код. Если инициализация памяти и видеоадаптера прошла нормально, устанавливают по одной остальные карты и, подключая шлейфы, на основании показаний индикатора POST Card определяют, какой из компонентов "подсаживает" системную шину, и не дает загрузиться компьютеру.

На рис. 4-6 показана индикация POST Card при возникновении различных ошибок.

Рис. 4. Код ошибки видеопамяти (во время тестирования карта видеопамяти была извлечена из системного блока)

Рис. 5. Код ошибки манипулятора "Мышь" (при тестировании манипулятор был отключен)

Рис. 6. Код ошибки оперативной памяти (при тестировании модуль памяти был удален из материнской платы)

Последовательность действий по реанимации ПК с помощью тестера POST Card PCI

1. Выключают питание неисправного компьютера.

2. Устанавливают POST Card в любой свободный слот материнской платы.

3. Включают питание ПК и считывают с индикатора POST-Card соответствующий POST-код, на котором прерывается ("зависает") загрузка компьютера.

4. По таблицам POST кодов при необходимости определяют, на каком из тестов возникли проблемы и их вероятные причины.

5. При выключенном питании переставляют шлейфы, модули памяти ОЗУ и другие компоненты, имеющие разъемы с целью устранения неисправности.

6. Повторяют пункты 3, 4, 5 для устойчивого прохождения процедуры POST и нормальной загрузки операционной системы.

7. При помощи программных утилит осуществляют окончательное тестирование аппаратных компонентов, а в случае "плавающих" (нестабильных) ошибок - длительный прогон соответствующих программных тестов.

Адресация устройств PCI

Для шины PCI принята иерархия понятий адресации: шина, устройство, функция. Эти понятия фигурируют только при обращении к регистрам конфигурационного пространства. К этим регистрам обращаются на этапе конфигурирования - переучета обнаруженных устройств, выделения им непересекающихся ресурсов (областей памяти и пространства ввода-вывода) и назначения номеров аппаратных прерываний. При дальнейшей регулярной работе устройства будут отзываться на обращения по назначенным им адресам памяти и ввода-вывода, доведенным до сведения связанных с ними модулей ПО. Эти адреса принимаются с шины AD в начале каждой транзакции. Для доступа к конфигурационному пространству используются отдельные линии IDSEL

Устройством PCI называется микросхема или карта расширения, подключенная к одной из шин PCI и использующая для идентификации выделенную ей линию IDSEL, принадлежащую этой шине. Устройство может быть многофункциональным, то есть состоять из множества (от 1 до 8) так называемых функций. Каждой функции отводится конфигурационное пространство в 256 байт. Многофункциональные устройства должны отзываться только на конфигурационные циклы с номерами функций, для которых имеется конфигурационное пространство. При этом функция с номером 0 должна быть обязательно, номера остальных функций назначаются разработчиком устройства произвольно (в диапазоне 1-7). Простые (однофункциональные) устройства, в зависимости от реализации, могут отзываться либо на любой номер функции, либо только на номер функции 0.

Шина PCI - набор сигнальных линий, непосредственно соединяющих интерфейсные выводы группы устройств (слотов, микросхем на системной плате). В системе может присутствовать несколько шин PCI, соединенных мостами PCI. Мосты электрически отделяют интерфейсные сигналы одной шины от другой, соединяя их логически; главный мост соединяет главную шину с ядром системы (процессором и памятью). Каждая шина имеет свой номер шины (PCI bus number). Шины нумеруются последовательно; главная шина имеет нулевой номер.

С точки зрения конфигурирования, минимальной адресуемой единицей этой иерархии является функция; ее полный адрес состоит из трех частей: номера шины, номера устройства и номера функции. Короткая форма идентификации вида РСЮ:1:2 (например, в сообщениях ОС Unix) означает функцию 2 устройства 1, подключенного к главной (0) шине PCI.

В каждой транзакции (обмене по шине) участвуют два устройства - инициатор (initiator) обмена, он же ведущее (master) устройство, и целевое (target) устройство (ЦУ), оно же ведомое (slave). Шина PCI все транзакции трактует как пакетные: каждая транзакция начинается фазой адреса, за которой может следовать одна или несколько фаз данных. Состав и назначение интерфейсных сигналов шины приведены ниже/

AD Address/Data - мультиплексированная шина адреса/данных. В начале транзакции передается адрес, в последующих тактах -данные

С/ВЕ# Command/Byte Enable - команда/разрешение обращения к байтам. Команда, определяющая тип очередного цикла шины, задается четырехбитным кодом в фазе адреса „

FRAME* - Кадр. Введением сигнала отмечается начало транзакции (фаза адреса), снятие сигнала указывает на то, что последующий цикл передачи данных является последним в транзакции

DEVSEL* Device Select - устройство выбрано (ответ ЦУ на адресованную к нему транзакцию)

IRDY* Initiator Ready - готовность ведущего устройства к обмену данными

TRDY* Target Ready - готовность ЦУ к обмену данными

STOP* Запрос ЦУ к ведущему устройству на остановку текущей транзакции

LOCK* - Сигнал захвата шины для обеспечения целостного выполнения операции. Используется мостом, которому для выполнения одной операции требуется выполнить несколько транзакций PCI

REQ# Request - запрос от ведущего устройства на захват шины

GNT# Grant - предоставление ведущему устройству управления шиной

PAR Parity - общий бит паритета для линий AD и С/ВЕ#

PERR* - Parity Error - сигнал об ошибке паритета (для всех циклов, кроме специальных). Вырабатывается любым устройством, обнаружившим ошибку

РМЕ# Power Management Event - сигнал о событиях, вызывающих изменение режима

потребления (дополнительный сигнал, введенный в PCI 2.2)

CLKRUN* Clock running - шина работает на номинальной частоте синхронизации. Снятие сигнала означает замедление или остановку синхронизации с целью снижения потребления (для мобильных применений)

PRSNT# Present - индикаторы присутствия платы, кодирующие запрос потребляемой мощности. На карте расширения одна или две линии индикаторов соединяются с шиной GND, что воспринимается системной платой

RST# Reset - сброс всех регистров в начальное состояние

IDSEL Initialization Device Select - выбор устройства в циклах конфигурационного

считывания и записи

SERR# System Error - системная ошибка. Ошибка паритета адреса данных в специальном цикле или иная катастрофическая ошибка, обнаруженная устройством. Активизируется любым устройством PCI и вызывает NMI

REQ64* Request 64 bit - запрос на 64-битный обмен. Сигнал вводится 64-битным

инициатором, по времени он совпадает с сигналом FRAME*. Во время окончания сброса (сигналом RST*) сигнализирует 64-битному устройству о том, что оно подключено к 64-битной шине. Если 64-б.итное устройство не обнаружит этого сигнала, оно должно переконфигурироваться на 32-битный режим, отключив буферные схемы старших байтов

АСК64* - Подтверждение 64-битного обмена. Сигнал вводится 64-битным ЦУ, опознавшим свой адрес, одновременно с DEVSEL*. Отсутствие этого подтверждения заставит инициатор выполнять обмен с 32-битной разрядностью

INTA#, INTB*, Interrupt А, В, С, D - линии запросов прерывания, чувствительность к уровню, INTC#, INTD* активный уровень - низкий, что допускает разделяемость (совместное использование)линий

CLK Clock - тактовая частота шины. Должна лежать в пределах 20-33 МГц, в PCI2.1- до 66 МГц

M66EN 66MHz Enable - разрешение частоты синхронизации до 66 МГц

SDONE Snoop Done - сигнал завершенности цикла слежения для текущей транзакции. Низкий уровень указывает на незавершенность цикла слежения за когерентностью памяти и кэша. Необязательный сигнал, используется только устройствами шины с кэшируемой памятью

SBO# Snoop Backoff - попадание текущего обращения к памяти абонента шины

в модифицированную строку кэша. Необязательный сигнал, используется только абонентами шины с кэшируемой памятью при алгоритме обратной записи

ТСК Test Clock - синхронизация тестового интерфейса JTAG

TDI Test Data Input - входные данные тестового интерфейса JTAG

TOO Test Data Output - выходные данные тестового интерфейса JTAG

TMS Test Mode Select - выбор режима для тестового интерфейса JTAG

TRST Test Logic Reset - сброс тестовой логики

В каждый момент времени шиной может управлять только одно ведущее устройство, получившее на это право от арбитра. Каждое ведущее устройство имеет пару сигналов - REQ# для запроса на управление шиной и GNT* для подтверждения предоставления управления шиной. Устройство может начинать транзакцию (устанавливать сигнал FRAME*) только при активном полученном сигнале GNT*. Снятие сигнала GNT* не позволяет устройству начать следующую транзакцию, а при определенных условиях (см. ниже) заставляет прекратить начатую транзак¬цию. Арбитражем запросов на использование шины занимается специальный узел, входящий в чипсет системной платы. Схема приоритетов (фиксированный, циклический, комбинированный) определяется программированием арбитра.

Для адреса и данных используются общие мультиплексированные линии AD. Четыре мультиплексированные линии С/ВЕ обеспечивают кодирование команд в фазе адреса и разрешения байт в фазе данных. В начале транзакции ведущее устройство активизирует сигнал FRAME*, по шине AD передает целевой адрес, а по линиям С/ВЕ# - информацию о типе транзакции (команде). Адресованное ЦУ отзывается сигналом DEVSEL*. Ведущее устройство указывает на свою готовность к обмену данными сигналом IRDY#, эта готовность может быть выставлена и раньше получения DEVSEL*. Когда к обмену данными будет готово и ЦУ, оно установит сигнал TRDY*. Данные по шине AD передаются только при одновременном наличии сигналов IRDY# и TRDY*. С помощью этих сигналов ведущее устройство и ЦУ согласуют свои скорости, вводя такты ожидания. На рисунке приведена временная диаграмма обмена, в которой и ведущее устройство, и ЦУ вводят такты ожидания. Если бы они оба ввели сигналы готовности в конце фазы адреса и не снимали их до конца обмена, то в каждом такте после фазы адреса передавались бы по 32 бита данных, что обеспечило бы выход на предельную производительность обмена.

Количество фаз данных в пакете явно не указывается, но перед последней фазой данных ведущее устройство при введенном сигнале IRDY* снимает сигнал FRAME*. В одиночных транзакциях сигнал FRAME* активен лишь один такт. Если устройство не поддерживает пакетные транзакции в ведомом режиме, то оно должно потребовать прекращения пакетной транзакции во время первой фазы данных (введя сигнал STOP* одновременно с TRDY*). В ответ на это ведущее устройство завершит данную транзакцию и продолжит обмен последующей транзакцией с новым значением адреса. После последней фазы данных ведущее устройство снимает сигнал IRDY#, и шина переходит в состояние покоя (PCI Idle) - оба сигнала FRAME* и IRDY# находятся в пассивном состоянии. Инициатор может начать следующую транзакцию и без такта покоя, введя FRAME* одновременно со снятием IRDY#. Такие быстрые смежные транзакции (Fast Back-to-Back) могут быть обращены как к одному, так и к разным ЦУ. Первый тип поддерживается всеми устройствами PCI, выступающими в роли ЦУ. На поддержку второго типа (она необязательна) указывает бит 7 регистра состояния. Инициатору разрешают (если он умеет) использовать быстрые смежные транзакции с разными устройствами (битом 9 регистра команд), только если все агенты шины допускают быстрые обращения.

Рис. 29. Цикл обмена на шине PCI

Шина позволяет уменьшить мощность (ток), потребляемую устройствами, ценой снижения производительности, применяя пошаговое переключение линий AD и PAR (address/data stepping). Здесь возможны два варианта.

· Плавный шаг (continuous stepping) - начало

формирования сигналов слаботочными формирователями за несколько тактов до введения сигнала-квалификатора действительной информации (FRAME# в фазе адреса, IRDY# или TRDY# в фазе данных). За эти несколько тактов сигналы «доползут» до требуемого значения при меньшем токе.

· Дискретный шаг (diskrete stepping) - нормальные

формирователи срабатывают не все сразу, а группами (например, побайтно), в каждом такте по группе. При этом снижаются броски тока, поскольку одновременно переключается меньше формирователей.

Устройство само может и не пользоваться этими возможностями (см. бит 7 регистра команд), но должно «понимать» такие циклы. Задерживая сигнал FRAME*, устройство рискует потерять право доступа к шине, если арбитр получит запрос от более приоритетного устройства.

Протокол квитирования обеспечивает надежность обмена - ведущее устройство всегда получает информацию об отработке транзакции ЦУ. Средством повышения надежности (достоверности) является применение контроля паритета: линии AD и С/ВЕ# и в фазе адреса, и в фазе данных защищены битом паритета PAR (количество единичных бит этих линий, включая PAR, должно быть четным). Действительное значение PAR появляется на шине с задержкой в один такт относительно линий AD и С/ВЕ#. При обнаружении ошибки ЦУ вырабатывается сигнал PERR* (со сдвигом на такт после действительности бита паритета). В подсчете паритета при передаче данных учитываются все байты, включая и недействительные (отмеченные высоким уровнем сигнала С/ВЕх#). Состояние бит, даже и в недействительных байтах данных, во время фазы данных должно оставаться стабильным.

Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя (сигналы FRAME* и IRDY# пассивны). Завершение транзакции выполняется либо по инициативе ведущего устройства, либо по инициативе ПУ. Ведущее устройство может завершить транзакцию одним из следующих способов.

· Нормальное завершение (Camletiori) выполняется по

окончании обмена данными.

· Завершение по тайм-ауту (Time-out) происходит, когда

во время транзакции у ведущего устройства отбирают право на управление шиной (снятием сигнала GNT#) и истекает время, указанное в его таймере Latency Timer. Это может случиться, если адресованное ЦУ оказалось непредвиденно медленным или запланирована слишком длинная транзакция. Короткие транзакции (с одной - двумя фазами данных) даже в случае снятия сигнала GNT# и срабатывания таймера завершаются нормально. Транзакция отвергается (Master-Abort), когда в течение заданного времени ведущее устройство не получает ответа ЦУ (DEVSEL*).

Транзакция может быть прекращена по инициативе ЦУ; для этого оно может ввести сигнал STOP*. Возможны три типа прекращения.

· Повтор (Retry) - сигнал STOP* вводится при пассивном

сигнале TRDY* до первой фазы данных. Эта ситуация возникает, когда ЦУ из-за внутренней занятости не успевает выдать первые данные в положенный срок (16 тактов). Повтор является указанием ведущему устройству на необходимость нового запуска той же транзакции.

· Отключение (Disconnect) - сигнал STOP* вводится во

время или после первой фазы данных. Если сигнал STOP* введен при активном сигнале TRDY* очередной фазы данных, то эти данные передаются и на том транзакция завершается. Если сигнал STOP* введен при пассивном сигнале TRDY*, то транзакция завершается без передачи данных очередной фазы. Отключение производится, когда ЦУ неспособно своевременно выдать или принять очередную порцию данных пакета.

· Отказ (Target-Abort) - сигнал STOP* вводится

одновременно со снятием сигнала DEVSEL* (в предыдущих случаях во время появление сигнала STOP* сигнал DEVSEL* был активен). После этого данные уже не передаются. Отказ вводится, когда ЦУ обнаруживает фатальную ошибку или иные условия, по которым оно уже никак не сможет обслужить данный запрос.

Использование трех типов прекращения вовсе не обязательно для всех ЦУ, однако любое ведущее устройство должно быть готово к завершению транзакций по любой из этих причин. В шине PCI принята географическая адресация - номер устройства определяется местом его подключения. Номер устройства (device number или dev) определяется той линией шины AD, к которой подключена линия сигнала IDSEL данного слота: kADU -devO(MOCT),AD12-devl,...AD31 -dev20. В соседних слотах PCI, как правило, задействуются соседние номера устройств; их нумерация определяется разработчиком системной платы (или пассивной кросс-платы в промышленных компьютерах). Часто для слотов используются убывающие номера устройств, начиная с 20. Группы соседних слотов могут подключаться к разным шинам; на каждой шине PCI нумерация устройств независимая (могут быть и устройства с совпадающими номерами dev, но разными номерами шин). Устройства PCI, интегрированные в системную плату, используют ту же систему адресации. Их номера «запаяны намертво», в то время как адреса карт расширения можно изменять перестановкой их в разные слоты. Одна карта PCI может содержать только одно устройство шины, к которой она подключается, поскольку ей в слоте выделяется только одна линия IDSEL Если на карте размещают несколько устройств (например, 4-портовая карта Ethernet), то на ней приходится устанавливать мост - тоже устройство PCI, к которому и обращаются по линии IDSEL, выделенной данной карте. Этот мост организует на карте дополнительную шину PCI, к которой можно подключить множество устройств.

С точки зрения обращения к пространствам памяти и ввода-вывода, географический адрес (номер шины и устройства) безразличен (не принимая во внимание разницу в производительности, связанную с подключением устройств к разным шинам PCI). Однако номер устройства определяет номер линии запроса прерывания, которой может пользоваться устройство. Подробнее об этом см. в п. 6.2.6, здесь же отметим, что на одной шине устройства с номерами, отличающимися друг от друга на 4, будут использовать одну и ту же линию прерывания. Возможность развести их по разным линиям прерывания может появиться лишь, если они находятся на разных шинах (это зависит от системной платы).

Разобраться с нумерацией устройств и полученных ими линий прерываний на конкретной плате можно просто: устанавливать одну карту PCI поочередно в каждый из слотов (отключая питание) и смотреть на сообщения об обнаруженных устройствах PCI, выводимых на дисплей в конце теста POST. В этих сообщениях будут фигурировать и устройства PCI, установленные непосредственно на системной плате (и не отключенные параметрами CMOS Setup).

Но чтобы не было иллюзий простоты и прозрачности, отметим, что «особо умные» операционные системы (Windows) не довольствуются полученными назначениями номеров прерывании и изменяют их по своему усмотрению (что никак не может отразиться на разделяемости линий).