Программирование ППЗУ 155РЕ3, 556РТ4, 556РТ5, 556РТ7, 556РТ11 и прочих

Введение

Принцип программирования ППЗУ

Принцип работы схемы

Недостатки схемы.

Отладка программатора.

Работа с программой.

Как расширить число программируемых микросхем.

Как собрать программатор

Как правильно программировать.

Download

Введение

  Однократно программируемые ПЗУ давно уже не используются в проектируемых устройствах. Но так как еще довольно много запасов 87-91 годов выпуска микросхем осталось в закормах Родины. Так же отечественная промышленность не выпускает многие объявленные микросхемы (например 514ИД3,4,5,6,7,8).
  Так что приобрести дешифратор 4 бит в HEX код для 7-сегментного индикатора проблема.
  Дешифратор базового адреса для ISA шины компьютера также очень легко с помощью 556РТ5 изготовить.

Принципиальная схема программатора.
Принципиальная схема программатора

Принцип программирования ППЗУ

  Принцип программирования ППЗУ прост:
    1.Установить напряжение питания +5 вольт.
    2.Выставить на разрешающих входах комбинацию "Микросхема не выбрана".
    3.Поднять напряжение питания до +10,5..11,0 вольт.
    4.На одну ножку данных подать то же напряжение через cопротивление 300 Ом.
    5.Выставить на разрешающих входах комбинацию "Микросхема выбрана".
    6.Выдержать 200..700 милисекунд.
    7.Выставить на разрешающих входах комбинацию "Микросхема не выбрана".
    8.Снять высокое напряжение с ножки данных.
    9.Снизить напряжение питания до +5В.

  В зависимости от производителя напряжения и длительности программирующих импульсов могут отличатся.
Также может быть разным время паузы между битами для остывания микросхемы.

Принцип работы схемы.

  Разработаный программатор и ПО под него рассчитано для работы со стандартным LPT портом IBM PC под WIN 95/98.
  Так как в схеме присутствуют высокие напряжения которые могут повредить порт принтера то я постарался по возможности предупредить повреждения.
  На транзисторе Т1 собран узел переключения сигнала выбора программируемой микросхемы. R1 ограничивает ток при пробое T1 на землю, D1 защищает от проникновения высокого напряжения в порт компьютера, R11 удерживает выход транзистора на высоком уровне при не подключеном шлейфе от программатора к компьютеру, через R9 подается уровень логической "1" на программируемую микросхему, диод D6 предотвращает проникновение высокого напряжения в цепь +5V.

  На транзисторах Т3, Т4 собран ключ для подачи напряжения программирования. Через диод D5 он попадает на вывод питания программируемой микросхемы. А через R8 и аналоговый коммутатор 590КН6 на один из выводов данных программируемой микросхемы. Сопротивление канала моего экземпляра 590КН6 оказался 350 Ом так что R8 я не ставил.

  При чтении каждого бита T4 закрыт и аналоговый коммутатор проводит напряжение с выхода программируемой микросхемы через R4 на базу транзистора T2. Этот транзистор инвертирует сигнал который считывается компьютером.

  Так как некоторые ППЗУ имеют выход с открытым коллектором - то добавлена цепочка R3, D4 которая открывает Т2 при закрытом выходном транзисторе, присутствующем в выходном каскаде программируемой микросхемы.

  Два регистра '574 защелкивют адрес ячейки для программирования/считывания.
  Выбор бита производиться перебором адреса на ножках 1,15,16 аналогового коммутатора.
  Так как в 556РT5 между ножкой 24 и 22 включен диод который проводит напряжения питания/программирования то пришлось добавить D7 для защиты адресной ножки и R13 для приема тока от ножки 22 в при логическом "0".

Недостатки схемы.

  Как оказалось высокое напряжение все-таки может попасть в цепь +5 вольт.
Встречаются экземпляры ППЗУ у которых возможен пробой высокого напряжения на адресную ножку.
74HC574, которые я применил, имеют внутренние диоды для защиты от превышения напряжения на входах/выходах.
Через эти диоды напряжение попадает в цепь +5 вольт. При этом схема и порт не страдают, но прошиваются все биты.
  Для подстраховки можно порекомендовать мощный стабилитрон на 5,6 вольт в цепи +5 вольт, и запитать схему от стабилизатора с защитой по току около 1A.
  Ставить в каждую адресную ножку цепочку на подобие D7, R13 для любительского программатора наверно громоздкое решение.

  Кроме этого в одной из публикаций указано что блок напряжения программирования должен отдавать 750 милиампер.
Транзистор КТ209 имеет рабочий ток 300 и импульсный 500 милиампер. Так что по чесному нада бы поставить помощней.

  Через аналоговый ключ может пройти ток 12V/350om = 0,034A а по паспорту допустимо 0,020 А. Но поскольку работа в импульсном режиме то я оставил в таком виде. В принципе можно запаять паралельно точно такую же и увеличить R8 до 125 Ом для борцов за правильное использование микросхем.

Отладка программатора.

  Собирать и настраивать схему нужно конечно же по частям. Транзистор Т4 в последнюю очередь.
  Если вы любите программу "debug" то просто наберите в DOS debug
а за тем набирая "O 378 0" или "O 378 FF" посмотреть переключение "0" и "1" на входах регистров и аналогового ключа.
  Можно запустить рабочую программу, выбрать тип микросхемы 556RT7 нажать клавишу "Cчитать".
и просматривать стробы адресов на ножках 11 регистров и меандры с частотами отличающимися в 2 раза на выходах регистров.
  Выходы A13..A15 не задействованы.

  После этого можно начать новую игру.
  Выловить подкоротки в цепи данных - при отсутствии микросхемы для программирования в режиме считывания 556РТ7 должны читаться FF.
  Обрывы цепей данных определяются закорачиванием по одной ножке данных на землю в сокете для программирования.
При правильной работе все считанные байты будут принимать вид FE,FD,FB,F7,EF,DF,BF,7F если вы начали перебор с младшего бита.

  Также проверяется шина адреса. При закоротке A0 на D0 в сокете каждый не четный байт будет считан как FE. При закоротке A1 на D0 попарно будут считываться FE,FE и FF,FF.
  Сигнал #CE можно проверить закороткой на бит шины данных и считыванием, или просмотреть осцилографом.

  Надеюсь понятно что адрес и данные относятся к ножкам в соответствующем сокете(панельке) под программируемую микросхему.

  Теперь запаиваете T4 и правильно собранная схема начинает работать :-))).

Работа с программой.

Внешний вид рабочего окна программы.
Внешний вид рабочего окна программы.

  Честно говоря цвет панелей другой (это так Paintbrush раскрасил в 16 цветах).
  Программа написана на DELPHI 4.0. Со вставками на ассемблере. Базовый адрес LPT 378h

Работа c программой проста: выбираете тип микросхемы и жмете соответствующую вашим намерениям клавишу.

   "Загрузить буфер" - считывает указанный вами файл в буфер и отображает его.

   "Читать" - считывает микросхему в буфер и отображает его.

   "Сохранить буфер" - действие обратное "Загрузить буфер"


   "Сравнить" - считывает микросхему и сравнивает ее с буфером.

   "Прожечь" - Прожигает вернее пережигает перемычки в микросхеме.
   За надписью действие индицируется сколько байт еще не прошито в HEX измерении.

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

  Для полубайтных микросхем типа 556РТ4, 556РТ11 используется только младший полубайт.

  Буфер можете не редактировать, программа не обрабатывает изменения в нем .

Как расширить число программируемых микросхем .

   Программа написана так чтобы можно было прошивать наибольшее число типов микросхем с наименьшими затратами.
В моей конструкции использовано три панельки. Одна под 155РЕ3 (идеально для 7-сегментных дешифраторов). Вторая для 556РТ4/РТ11( РТ4 легкодоступна и дешева - может юыть это единственное ее достоинство :-((( ). Третья для 24 ногих 556РТ6, 556РТ7, 556РТ18 и прочих.
   Вы можете самостоятельно присоединить 18 ногую узкую панельку(сокет) для 556РТ12, 556РТ13 итд., а также для 28 ногих типа 556РТ9, 556РТ10. Но 28 ногие легко заменяются на EPROM (УФПЗУ) серии 27Сxx, а программаторов для них хватает.

   Для 556РТ12, 556РТ13 нужно на 10 ножку завести #CE а на 8 адрес A10.

   В программе нужно добавить еще пункты меню и в две процедуры ввести параметры новых чипов.

   В процедуре инициализации типа чипа добавить еще строку "case"

Procedure LoadP; // загрузка параметров чипа
begin
  case re3_rt4.Chip.ItemIndex of
   0: with Chips do     // 155РЕ3
    begin
    L:=31;     // размер чипа -1
    w:=$0FF;    // оба полубайта 0F для полубайтных
    b:=0;     // поставляется с завода со всеми нулями
    t:=0;     // маска накладываемая на адрес
               // например в 556РТ5 18 и 19 ножки сигнал выбора а они подключены
               // к адресам A11,A12 то принудительно их надо выставлять в "1"
              // для 155РЕ3 не важна эта маска а для 556РТ5 равна 1Ah
   end;
  В процедуре проверки типа чипа добавить также строку "case" с проверкой на соответсвие типу.

Function CompareP:boolean; // сравнение параметров чипа с выбранным (в radiogroup)
begin
case re3_rt4.Chip.ItemIndex of
0: // 155РЕ3
if (Chips.L=31) and (chips.w=$0FF) and (chips.b=0) then CompareP:=true;

  На данной конструкции я программировал 155РЕ3, 556РТ4, 556РТ5, 556РТ17, 556РТ7.

Как собрать программатор.

  Теперь, если после стольких предостережений о бесполезности предлагаемого устройства вы решили всетаки его спаять...
  В начале я собрал на макетной плате конструкцию с двумя панельками под 155РЕ3 и 556РТ4. Затем развел плату в Pcad 4.5 и доводил до ума паралельно: припаивал компоненты и правил схему и разводку.
  В схеме выловил наверно все ошибки а вот на печатной плате могут быть ошибки.
  Кроме этого добавил стабилизатор 7805, выключатель питания и две цепочки светодиодов с резисторами.
Одна индицирует(зеленого цвета) наличие +5 вольт на схеме а вторая подключена анодом к ножкам питания ППЗУ а катодом к +5 вольт и индицирует(красного цвета) наличие напряжения программирования.

   Внимание !!! После взапуска WIN98 напряжение программирования включено !!!

   В начале развел без единого переходного отверстия, но затем одно всетаки под панелькой на 24 ноги пришлось поставить.
На некоторых ножках проводники с двух сторон подведены. Так как не любля сверлить отверстия в платах то почти все дискретные компоненты разместил с обратной стороны платы.
   Если не удасться приобрести панельки с нулевым усилием, то можно поставить цанговые. Можно также сделать "бутерброд". Одну панельку запаять а в нее пристроить вторую. Микросхемы вставлють во вторую до тех пор пока не расхлябается, а затем заменить. Но лучше панельки с нулевым усилием.
   Для отвода тепла от программируемой микросхемы и плотного контакта можно ложить железную гирю на микросхему. И тепло отведет и контакт в цанговой или обычной панельке будет лучше.

Как правильно программировать.

  1)Запустить программу.
  2)Убедиться что горит зеленый светодиод а красный нет.
  3)Вставить программируемую микросхему
  4)Загрузить буфер
  5)Прожечь микросхему
  6)Выбросить микросхему в мусорное ведро, ударить кулаком по монитору, отослать автору свой своп-файл от Win98 итд :-)))

  Маленькая кулинарная хитрость : программатор нужно подсоединить к принтерному порту и подать питание на него.


Это можно загрузить на шару или на халяву - на ваш вкус.


Схема, плата, исходный текст программы


misyachniy@mail.ru