В процессе ремонта компьютеров и в частности материнских плат, бывает полезна диагностическая карта, позволяющая отображать POST коды BIOSа с помощью сегментных индикаторов или набора светодиодов. На некоторых дорогих материнских платах есть встроенная система подобной диагностики с установленными индикаторами. Но всё-таки на большинстве материнских плат нет подобной диагностики, к тому же и производители отказались от использования слота расширения ISA, куда можно было бы установить недорогую или самодельную диагностическую карту для ISA шины. Полноценные профессиональные диагностические карты для шины PCI относительно дороги, сложны, используют в качестве элементной базы ПЛИС, да и изготовить такую диагностическую карту в простых условиях довольно трудно.

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

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

Рис.1

На рис. 1 приведена диаграмма сигналов на шине PCI при простых операциях чтения-записи. Но так как наше устройство не может определится BIOSом как стандартное полноценное устройство PCI, то после опроса всех PCI слотов на слот, где установлена наша диагностическая самодельная карта, перестанет выдаваться основной сигнал синхронизации CLK (как правило если схема сделана с использованием сигнала CLK, она перестанет работать после инициализации дисплея). Но при этом во все слоты поступает сигнал начала операции на шине FRAME, и все равно происходит цикл операции выставления адреса и данных. Первый вариант диагностической платы был сделан как раз с использованием сигнала PCI CLK, но полноценно работала такая диагностическая плата не на всех материнских платах.

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

Рис. 2

Теперь коротко о схеме, которая приведена на рис.2. Если посмотреть на фотографию платы рис.3, то можно заметить что там больше микросхем чем на принципиальной схеме, но не стоит беспокоиться, просто изначально назначение устройства было несколько иным, но путем некоторого упрощения схемы получилось публикуемое сейчас изделие, и поэтому не стоит задавать вопрос «почему именно эта именно микросхема так тут используется».  

Рис. 3

Смотря на диаграмму записи в порт на шине PCI (рис.1) и на принципиальную схему устройства (рис.2), работу устройства опишем так:

Микросхема U10 и U11 инвертируют и задерживают на определённое время сигнал FRAME для защёлки по его уже положительному фронту значения адреса (в микросхемах U4,U5) и типа команды (в микросхеме U8) цикла начала записи PCI. Затем адрес, по которому происходит цикл записи, сравнивается (микросхемы U1, U3) со стандартным адресом порта (0x80), используемым для записи POST кодов BIOSа.

Микросхема U9 показывает в зависимости от записанной в U8 команды, какая именно операция должна происходить на шине PCI в данном цикле, и низкий логический уровень на выводе Y3 микросхемы U9 информирует как раз о цикле записи в порт ввода-вывода.

Микросхема U7 при соблюдении условия правильности адреса обращения и типа цикла на шине PCI  выдает с помощью инвертора U6 сигнал для записи к тому времени уже первых  данных на шине PCI в микросхему U2. В свою очередь, микросхема U2 с помощью 8 светодиодов отображает значение полученных данных. Надеюсь, что преобразовать двоичные значения отображаемые на светодиодах D1-D8 в шестнадцатеричный код читатель сможет сам.

Вот таким скромным, и в некоторой степени «неправильным» способом можно записывать в порт по адресу 0x80 любые нам требуемые данные, в том числе и наблюдать POST коды BIOSа.

Проверить правильность отображения данных можно в программе DEBUG, которая находится, как правило, в пути C:\windows\command\debug.exe. Запустив программу, можно набирать команды: o80,XX <Enter> (где XX – любое шестнадцатеричное число).

Предостережения: чтобы изготовить такую плату надо обладать достаточной квалификацией, аккуратностью и использовать указанные микросхемы или их аналоги (U2, U4, U5, U8, U10 должны быть выполнены по CMOS технологии),  налаживать устройство, если конечно оно не заработает с первого раза, не на самой дорогой материнской плате под естественно вашу личную ответственность. Микросхемы 74F521 в своё время были сняты со старых сетевых плат для шины ISA.

Устройство проверено (имеется в виду, нормально и полноценно функционировало) на платах с чипсетом: intel-BX, intel-815, SIS735, VIA693, VIA-KT266.

 

 

Все вопросы и рекомендации можно присылать по адресу ast@stack.ru.

С уважением, Сергей Астанин г. Томск, ф. «Стек».