Всем доброго.
Изобретаю самодельный программатор для ПЗУ 27x512. Столкнулся с проблемой прочтения микросхем EEPROM от Winbond: W27C512-45Z
Система следующая: хост - ПРК "Орион-128", микросхема подключается через порт юзера (КР580ВВ55А), через линию "А" выставляется адрес (сначала старший байт - защёлкивается в регистр ИР23, затем младший), через линию "В" производится считывание данных, через линию "С" на ПЗУ поступают управляющие сигналы OE и CE.
Суть проблемы в следующем. Информация из ПЗУ считывется, но каждый раз разная! Двух одинаковых дампов прочитать невозможно. Считываемая информация не полностью рандомная, по текстовым сообщениям видно, что они всегда присутствуют в том или ином виде. Заметил, что иногда один и тот же текст несколько раз дублируется в считанном дампе!
Попытки анализа различий показали, что каждый раз в случайных местах считываются совершенно левые куски (видимо, из других областей), причём начинаются куски в произвольных местах, а заканчиваются всегда адресами кратными 16, т.е. 0xxxxh-0xxxFh.
Сначала я экспериментировал с одной микросхемой, в которой уже была прошита информация. Потом решил, что она может быть неисправна и глюки именно от этой неисправности.
Затем купил (в двух разных магазинах) ещё две микросхемы W27C512-45Z. Из новой (чистой) стабильно считываются все 0FFh. Попробовал прошить и вновь та же проблема - считывается информация "на тему" прошитой, но контрольная сумма дампа каждый раз разная
Далее пробую прошить все байты 00h, т.е. запрограммировать все ячейки матрицы. В результате из ПЗУ стабильно считываются нулевые дампы.
Затем беру микросхему того же объёма, но другого типа - M27512 (старинная, с УФ-стиранием). В неё информация исправно прошивается и стабильно считывается! Т.е. с ней никаких проблем на данной системе.
Что ещё пробовал сделать. Хоть W27C512-45Z имеет большее быстродействие, чем старинная M27512, всё равно пробую в программе чтения вставить ощутимые задержки между выставлением адреса и чтением информации - картина не меняется, всё равно читается рандомно-неверная информация. Пробовал также между чтением каждого байта "усыплять" ПЗУ переводом CE в лог. "1", а затем обратно - бесполезно, всё равно каждый раз считываются разные дампы.
Краткий итог. На "проблеммных" ПЗУ W27C512-45Z стабильно считываются только все 0FFh (чистая микросхема) и 00h (прошиты все ячейки), информация отличная от этих значений считывается ошибочно. Информация из ПЗУ M27512 каждый раз считывается одинаковая и корректная (соответствует прошитой).
Честно говоря, у меня все мысли закончились (( Что это может быть и куда копать?
П.С. Если это поможет делу, то:
схема - http://www.denn.ru/orion/hardware/prog512.jpg
реализация - http://www.denn.ru/orion/hardware/my_prog%20(1).jpg