Более совершенные способы диагностики ЗУПВ включают в себя запись и считывание определенных двоичных наборов по более сложному алгоритму. Диагностику ЗУПВ можно также выполнить на неразрушающейся основе, и считанный из ЗУПВ байт заменяется сразу же после его проверки. При этом появляется возможность осуществить диагностический контроль через некоторое время после инициализации системы.
При наличии диагностических процедур поиск неисправностей в полупроводниковой памяти значительно упрощается. Однако иногда отказ микросхем ПЗУ или ЗУПВ препятствует нормальной инициализации системы, и в такой ситуации следует выполнить действия, описанные в гл. 5.
Обычно отказ отдельных элементов памяти можно обнаружить с помощью диагностических процедур, а затем требуется отыскать отказавшую микросхему. Иногда выход данных микросхемы зависает в том или ином состоянии. Такой отказ легко обнаружить с помощью логического пробника. В других случаях отказ в памяти может быть серьезнее, и отказавшая микросхема начинает потреблять излишнюю мощность, что приводит к ее перегреву. Рекомендуется придерживаться следующей процедуры определения отказа.
1. Пусть система поработает некоторое время. После этого коснитесь пальцем каждой микросхемы ПЗУ и ЗУПВ и проверьте их рабочую температуру. Наиболее нагретая микросхема становится подозрительной. (Температуру можно сравнить, касаясь аналогичной микросхемы на этой же или другой печатной плате.)
2. Когда микросхемы ПЗУ или ЗУПВ находятся в гнездах, поочередно вынимайте и заменяйте каждую из них (не забывая, конечно, выключать питание). Пользуйтесь заведомо работоспособными микросхемами. Если микросхемы ПЗУ или ЗУПВ впаяны в печатную плату, для поиска отказавшей микросхемы удобно использовать индикатор тока. С его помощью нужно проверить токи в критических точках печатной платы (например, по линии питания каждой микросхемы). Микросхема, потребляющая значительно больший (или значительно меньший) ток, чем другие, становится подозрительной.
Наконец, в качестве общего правила укажем, что когда подозрительная микросхема выпаяна из печатной платы, настоятельно рекомендуется пользоваться гнездом, а не просто впаивать в плату новую микросхему.
Глава 7
Микросхемы для ввода-вывода
В этой главе рассматриваются основные принципы параллельной и последовательной передачи данных, методы управления вводом и выводом, а также несколько популярных программируемых микросхем для ввода и вывода.
Микропроцессорная система без средств ввода и вывода оказывается бесполезной. Конечно, характеристики и объемы ввода и вывода в системе определяются, в первую очередь, спецификой ее применения. Например, в простом домашнем компьютере, как минимум, необходимы ввод с клавиатуры и вывод на обычный телевизор. Кроме того, желательны канал связи с бытовым магнитофоном и дополнительный выход на принтер (рис. 7.1).
Рис. 7.1. Средства ввода-вывода в простом домашнем компьютере.
Однако, в микропроцессорной системе управления некоторым промышленным процессом не требуются клавиатура и дисплей, так как почти наверняка ее дистанционно программирует и контролирует главный микрокомпьютер (с использованием последовательной линии RS-232C). Контроллер должен иметь до 24 отдельных линий ввода и вывода для управления реле, двигателями и лампами (рис. 7.2).
Рис. 7.2. Средства ввода-вывода в промышленной системе управления.
Существуют два основных способа организации ввода-вывода. С одной стороны, устройства (микросхемы) ввода-вывода считаются адресами памяти, а с другой — каждому устройству (микросхеме) назначается адрес конкретного порта. В любом случае данные выводятся простой записью их по соответствующему адресу памяти или порта, а вводятся считыванием по аналогичному адресу. В случае ввода-вывода, отображенного на память, ЦП реализует операции ввода-вывода точно так же, как операции памяти. Часть пространства памяти резервируется для ввода-вывода: ее, конечно, нельзя одновременно назначать ЗУПВ или ПЗУ. При организации ввода-вывода через порты выделяется набор адресов портов, которые совершенно не зависят от обычного пространства памяти. Адреса портов отделяются от адресов памяти с помощью сигналов, действующих на шине управления.
Например, в микропроцессоре Z80 для этого используются сигналы:
— линия запроса памяти, на которой формируется сигнал низкого уровня, когда ЦП выполняет операцию считывания или записи с памятью; — линия запроса ввода-вывода, на которой формируется сигнал низкого уровня, когда ЦП выполняет операцию ввода-вывода.Для ввода и вывода в микропроцессоре Z80 существуют специальные команды, например:
OUT(FFH), А — записывает содержимое аккумулятора (8-битное значение) в порт с 16-ричным адресом FF;
IN (A) FFH — считывает содержимое порта с 16-ричным адресом FF и помещает результат в аккумулятор.
Необходимо различать также параллельный и последовательный ввод-вывод. В первом случае одновременно передается байт данных (следовательно, здесь требуется 8-битный буфер или защелка), а во втором данные передаются отдельными битами. Параллельный ввод-вывод реализуется довольно просто (рис. 7.3). Здесь для вывода применяется стандартная 8-битная защелка, а для ввода — 8-битный тристабильный буфер. Однако такая простая схема оказывается недостаточно гибкой, и лучше воспользоваться программируемой микросхемой параллельного ввода-вывода.
Рис. 7.3. Схема простого параллельного ввода и вывода.
Поскольку данные обычно представлены на шине микропроцессора в параллельной форме (байтами), их последовательный ввод-вывод оказывается несколько сложнее. Для последовательного ввода потребуются средства преобразования последовательных входных данных в параллельные данные, которые можно поместить на шину. С другой стороны, для последовательного вывода необходимы средства преобразования параллельных данных, представленных на шине, в последовательные выходные данные. В первом случае преобразование осуществляется регистром сдвига с последовательным входом и параллельным выходом (SIPO), а во втором — регистром сдвига с параллельным входом и последовательным выходом (PISO). Схемы обоих вариантов ввода и вывода показаны на рис. 7.4.
Рис. 7.4. Схемы последовательного ввода и вывода:
а — последовательный ввод с регистром сдвига SIPO; б — последовательный вывод с регистром PISO
Их можно реализовать на обычных логических элементах, но более эффективное решение заключается в применении специализированных программируемых микросхем.