Радио-86РК/Радио 02-88/Программирование однократно программируемых ПЗУ
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: Д. ЛУКЬЯНОВ, А. БОГДАН |
Прежде всего авторы приносят свои извинения за ошибки, допущенные в предыдущей статье «Радио-86РК» — программатор ПЗУ"*. В интерфейсе программатора были применены следующие микросхемы: К555ЛЕ1 (DD1), К155АГ1 (DD2), К589АП16 (DD3, DD4). К561ПУ4 (DD5, DD6). Кроме того, не все читатели смогли по мнемоническим адресам определить точки подключения программатора к процессорной плате. Сигнал READY следует снимать с вывода 3 микросхемы D1 STSTB — вывод 7 D1, ROMSEL — вывод 10 D11, RD — вывод 3 D5.1.
Репрограммируемые ПЗУ (РП3У) с возможностью стирания информации, наряду с упомянутыми выше достоинствами, имеют и ряд — существенных недостатков. Главный из них — значительное (250…500нс.) время доступа к информации, препятствующее их применению а комбинационных логических устройствах, в качестве «заказных» шифраторов и дешифраторов, а также для хранения программ и данных в микропрограммных процессорах повышенного быстродействия, например, на базе микропроцессорных комплектов К1802 и К1804.
Для этих целей [11] больше подходят однократно программируемые БИС ПЗУ (ППЗУ), выполненные по ТТЛ или ТТЛШ технологиям. Наиболее распространенные типы ППЗУ приведены в табл.1. Запоминающие элементы этих микросхем представляют собой плавкие перемычки, расположенные на кристалле в виде матрицы, аналогичной матрице запоминающих элементов РПЗУ.
Таблица 1.
Основные характеристики отечественных микросхем ППЗУ
ТИП ППЗУ | Организация | Выход | ta нс | Icc мА | Upr В | CS рг | H.C. БИС |
---|---|---|---|---|---|---|---|
KP155PE3 | 32х8 | O.K. | 80 | 110 | 12 | 15 | 0 |
КР556РТ4 | 256х4 | O.K. | 70 | 130 | 12 | 14 | 0 |
КР556РТ5 | 512х8 | O.K. | 70 | 190 | 12 | 21 | 1 |
KP556PT11 | 256х4 | Т. С. | 45 | 130 | 12 | 14 | 0 |
КР556РТ12 | 1Кх4 | O.K. | 60 | 140 | 12 | 10 | 0 |
KP5S6PT13 | 1Кх4 | Т. С. | 60 | 140 | 12 | 10 | 0 |
КР556РТ14 | 2Кх4 | O.K. | 60 | 140 | 12 | 10 | 0 |
KP556РT15 | 2Кх4 | Т. С. | 60 | 140 | 12 | 10 | 0 |
KP556PT16 | 8Кх8 | Т. С. | 85 | 190 | 12 | 20 | 0 |
КР556РТ17 | 512х8 | Т. С. | 50 | 175 | 12 | 21 | 1 |
KP556PТ18 | 2Кх8 | Т. С. | 60 | 180 | 12 | 20 | 0 |
КР541РТ1 | 256х4 | O.K. | 70 | 9 | 14 | 0 | |
К500РЕ149 | 256х4 | ЭСЛ | 30 | 150 | 14 | 0 |
Примечания:
- Т. С. — Выход с тремя состояниями (0, 1, Z)
- O.K. — Выход с «открытым коллектором»
- Н. С. — Состояние микросхемы до программирования
В режиме чтения информации из ПЗУ наличие или отсутствие перемычек определяет, какое значение битов данных будет считываться из ПЗУ. Естественно, что до программирования все перемычки в матрице целы и по любому адресу считываются одинаковые данные (какое именно значение соответствует незапрограммированной микросхеме указано в табл. 1).
В процессе программирования специальный узел, расположенный на кристалле БИС, прикладывает к отдельным перемычкам напряжение, достаточное для их разрушения (пережигания). Импульс тока, разрушающий перемычку, обычно имеет длительность порядка десятков микросекунд, поэтому быстрое испарение материала перемычки скорее напоминает взрыв. Для разрушения перемычки необходима целая пачка импульсов, в которой первые ее только разогревают и, лишь последний — пережигает. Материал разрушенной перемычки оседает рядом на кристалле, а так как все ее размеры измеряются долями микрона, то видимых снаружи изменений в микросхеме не происходит. Чем за более короткие промежутки времени будет «взорвана» перемычка, тем менее вероятен процесс самопроизвольного ее восстановления, поэтому во многих алгоритмах программирования время приложения к перемычкам импульсов тока колеблется от 1 до 100мкс. Самовосстановление происходит быстрее при повышенной температуре, поэтому для большинства ППЗУ рекомендуют произвести электротермотренировку, включив микросхемы в режим чтения информации при температуре корпуса 120…160° С на несколько суток, а затем проверив правильность записанных данных. Эта операция необходима, если к аппаратуре, в которой будет работать ППЗУ, предъявляются повышенные требования по надежности. В радиолюбительских условиях от этой трудоемкой операции можно отказаться.
Процедура записи информации состоит из циклов, в каждом из которых можно пережечь только одну перемычку, то есть в отличие от РПЗУ, в одном цикле нельзя программировать целое информационное слово (4 или 8 бит в зависимости от типа ППЗУ). Для пережигания перемычки на адресных входах микросхемы устанавливают код адреса, напряжение питания Upr повышают до 12…18В, а на один из входов выборки кристалла CS микросхемы, управляющий в режиме программирования работой узла записи, подают напряжение на 2В выше напряжения питания Upr (для К155РЕЗ, К556РТ4) или высокий ТТЛ уровень (для остальных типов ППЗУ).
Одновременно на один из выходов микросхемы, соответствующий программируемому разряду, подают импульс тока амплитудой 100…200мА. После окончания импульса переходят в режим чтения информации из ППЗУ и проверяют, запрограммирован ли соответствующий бит. Если перемычка не разрушилась, цикл программирования повторяют еще разумное число раз (обычно 100—1000). При удачном программировании переходят к пережиганию перемычек, соответствующих остальным битам информационного слова, а затем — к программированию слов по следующим адресам.
Практическая схема модуля, предназначенного для записи информации в ППЗУ, перечисленные в табл. 1, приведена на рисунке. Он содержит транзисторные ключи, через которые напряжения программирования поступают на выводы БИС. Все ключи идентичны и имеют ограничение выходного тока на уровне 150…200мА. Модуль подключают к интерфейсу программатора [22].
В режиме чтения информации и в паузах выходы передатчиков шинных формирователей DD3, DD4 (см.[2] находятся в высокоимпедансном состоянии, поэтому транзисторы VT1, VT2 закрыты. При выполнении цикла WR микропроцессор переводит формирователи в активное состояние, поэтому открываются транзисторы, подключенные к тем разрядам формирователей, по которым передается «низкий» логический уровень, то есть 0 в соответствующих битах записываемого байта.
Длительность цикла WR задается так, как уже описано в [2], причем в модуле для ППЗУ нет дополнительного времязадающего конденсатора, поэтому длительность перевода МП в состояние ожидания готовности (то есть длительность импульса WR) составляет около 50 мкс. Выбор такого значения оптимален для надежной записи информации, а также позволяет не отключать регенерацию изображения на экране телевизора в процессе программирования.
На плате модуля расположены элементы, показанные на рис.1, а также панели для установки программируемых микросхем, на которые разведены сигналы разрядов адреса, данных и программирующих импульсов в соответствии с табл.2.
Таблица 2.
ВЫВОД | КР155РЕ3 | КР556РТ4,РТ11 | К541РТ1 | К500РЕ149 | КР556РТ12,РТ13 | КР556РТ14,РТ15 | КР556РТ5,РТ17 | КР556РТ16 | КР556РТ18 |
---|---|---|---|---|---|---|---|---|---|
1 | DO0 | А6 | A6 | Upr | A6 | A6 | A7 | A7 | A7 |
2 | DO1 | A5 | A5 | A0 | A5 | A5 | A6 | A6 | A6 |
3 | DO2 | A4 | A4 | A1 | A4 | A4 | A5 | A5 | A5 |
4 | DO3 | A3 | A3 | A2 | A3 | A3 | A4 | A4 | A4 |
5 | DO4 | A0 | A0 | A3 | A0 | A0 | A3 | A3 | A3 |
6 | DO5 | A1 | A1 | A4 | A1 | A1 | A2 | A2 | A2 |
7 | DO6 | A2 | A2 | A5 | A2 | A2 | A1 | A1 | A1 |
8 | 0B | 0B | 0B | −5B | CS1 | A10 | A0 | A0 | A0 |
9 | DO7 | DO3 | DO3 | A6 | 0B | 0B | DO0 | DO0 | DO0 |
10 | A0 | DO2 | DO2 | A7 | CS2 | CS | DO1 | DO1 | DO1 |
11 | A1 | DO1 | DO1 | DO0 | DO3 | DO3 | DO2 | DO2 | DO2 |
12 | A2 | DO0 | DO0 | DO1 | DO2 | DO2 | 0B | 0B | 0B |
13 | A3 | CS1 | A7 | CS | DO1 | DO1 | DO3 | DO3 | DO3 |
14 | A4 | CS2 | CS1 | DO2 | DO0 | DO0 | DO4 | DO4 | DO4 |
15 | CS | A7 | CS2 | DO3 | A9 | A9 | DO5 | DO5 | DO5 |
16 | +5B | +5B | +5B | 0B | A8 | A8 | DO6 | DO6 | DO6 |
17 | A7 | A7 | DO7 | DO7 | DO7 | ||||
18 | +5B | +5B | CS1 | A12 | CS3 | ||||
19 | CS2 | A11 | CS2 | ||||||
20 | CS3 | CS | CS1 | ||||||
21 | CS4 | A10 | A10 | ||||||
22 | Upr | A9 | A9 | ||||||
23 | A8 | A8 | A8 | ||||||
24 | +5B | +5B | +5B |
Выпускаемые микросхемы ППЗУ с плавкими перемычками имеют нормируемый коэффициент программируемости. Это означает, что в произвольно взятой микросхеме некоторые перемычки «взорвать» не удастся. Если микросхему невозможно запрограммировать при номинальном напряжении программирующих импульсов (Upr=12,5В) в качестве крайней меры можно попытаться повысить напряжение Uпит до 15-20В и повторить процесс программирования. В некоторых случаях такой прием позволяет запрограммировать дефектную микросхему, однако, к сожалению, в других ячейках ППЗУ при этом информация может исказиться.
ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ ППЗУ
Поскольку ППЗУ с пережигаемыми перемычками находят более разнообразное применение в радиотехнической аппаратуре, а ошибки при их программировании обходятся дороже, для подготовки и записи информации в них необходимы более совершенные технологические программы. Одним из таких пакетов программ являются ЭКРАННЫЙ РЕДАКТОР ПАМЯТИ и блок программ управления программатором, коды которого приведены в табл.3. Программа написана специально для «Радио-86РК» и позволяет просматривать, редактировать, копировать и заносить информацию в программируемые ПЗУ, проводить поиск слов и байтов, переставлять нибблы в байтах данных (ниббл-4 бита), а также осуществлять целый ряд вспомогательных операций.
После ввода и пуска с адреса 0000Н программа запрашивает у МОНИТОРА верхнюю границу области ОЗУ и перегружается туда перемещающим загрузчиком. В этой области она «захлопывается» и выводит на экран адрес SSSS, по которому можно запустить перегруженную копию программы. Если в ОЗУ не загружать других программ, запуск пакета можно произвести и с адреса 0000Н. Одновременно загрузчик резервирует для буфера, программатора область ОЗУ объемом 2 Кбайт (табл. 4). Размер области (Кбайт), резервируемой для буфера, хранится в ячейке 12Н загрузчика. После перемещения пакета в компьютер можно загружать любые программы, обладающие свойством самонастройки на память — они не будут портить друг друга в процессе работы.
Запустив программу с указанного адреса, с помощью «Меню» выбирают режим работы, нажимая соответствующие алфавитные клавиши.
Если выбран режим программирования РПЗУ или ППЗУ, программа запрашивает тип программируемой микросхемы. Для микросхем серии К573РФ возможны следующие типы: РФ1, РФ2, РФ21, РФ22, РФ4, РФ41, РФ42, РФ5, РФ6.
Для ППЗУ К556РТ соответственно: РТ3 (К155РЕ3), РТ4(К500РЕ149, К541РТ1), РТ5, РТ6, РТ7, РТ11, РТ12, РТ13, РТ14, РТ15, РТ16, РТ17, РТ18.
По окончании программирования программа выдает сообщение либо о правильности записи, либо об ошибке и распечатывает адрес первой ячейки, содержимое которой не совпадает с содержимым исходного буфера данных. Для перехода в режим «Меню» после любого из сообщений достаточно нажать любую клавишу.
Если выбран режим редактирования, программа запрашивает адрес, по которому необходимо исправить или занести данные, и выводит одну страницу содержимого памяти (256 байт), в которой находится заданный адрес. При этом курсор указывает содержимое соответствующей ячейки на экране. Если теперь вводить HEX-числа (шестнадцатеричные), то соответствующие исправления будут заноситься в ОЗУ и отображаться на экране. Для перехода к редактированию других адресов можно пользоваться клавишами управления курсором.
В режиме редактирования в виде НЕХ-чисел возможен ряд групповых операций. Для их выполнения необходимо задать начальный и конечный адреса области, с которой будет производится операция. Это можно сделать двумя способами: подводом курсора к байту, расположенному по необходимому адресу с нажатием клавиш F2 — начальный адрес и F3 — конечный адрес или нажатием клавиш R, после которого программа запрашивает адреса границ зоны.
Таблица 5
РАСПРЕДЕЛЕНИЕ ПАМЯТИ РК ПРИ РАБОТЕ РЕДАКТОРА/ ПРОГРАММАТОРА
Bpеменные переменные пакета | MEMTOP1 SSSS+0C85H |
СТЕК | SSSS+0C49H |
Чистый код программы | SSSS |
Буфер данных для ПЗУ (2К) | SSSS-800H |
Расширение буфера для РФ41* | МЕМТОР2 |
Расширение буфера (РФ4,РТ16)* | SSSS-1000H SSSS-2000H |
СВОБОДНАЯ ОБЛАСТЬ ОЗУ | 0000H |
- He защищено Монитором
- MEMTOP1 Граница ОЗУ до загрузки пакета
- MEMTDP2 Граница ОЗУ после загрузки пакета.
Задав область памяти, можно производить с ней следующие операции:
- R — заполнение выбранной области необходимым кодом;
- I — инвертирование содержимого заданной области,
- N — обмен нибблов в байтах, находящихся в заданной области;
- М — маскирование содержимого области образцом. При маскировании производится операция логического сложения содержимого области памяти и байта-маски.
Операции М и N необходимы при программировании микросхем ППЗУ с разрядностью информационного слова, равной четырем, для разбиения байта данных на два ниббла.
- T — пересылка выделенной области памяти по требуемому адресу. В отличие от директивы Т МОНИТОРА, программа выполняет корректные пересылки данных даже между перекрывающимися областями памяти.
- S — поиск в выделенной области памяти байта, совпадающего с образцом. По окончании поиска курсор устанавливается на первом байте, совпадающим с образцом. Для поиска следующего совпадения нажимают клавишу Х
- W — поиск 16-разрядного слова по образцу. Для продолжения поиска нажимают клавишу X.
В процессе разработки программного обеспечения для МП KP580BM80A иногда возникает необходимость внести изменения в уже оттранслированную программу, например, вставить в нее одну-две команды или убрать лишние. Для этих операций в РЕДАКТОРЕ предусмотрена директива U, позволяющая пересылать содержимое выбранной области ОЗУ в другую. «раздвигать» или «сдвигать» части программы в машинных кодах. Так как в программе, часть которой пересылается, необходимо соответствующим образом скорректировать содержимое адресных полей команд CALL и JUMP, то РЕДАКТОР дополнительно запрашивает границы всей программы. После этого происходит коррекция соответствующих команд, и выбранная область пересылается в новую, задаваемую смещением, которое на запрос РЕДАКТОРА вводят в дополнительном коде. Если выбранная область целиком совпадает с областью оттранслированной программы, возможна ее автоматическая настройка на работу из другой области ОЗУ. Более подробно о работе директивы и ограничениях на ее использование можно прочитать в [33].
Таблица 6.
; Описание ДЕШИФРАТОРА ; Из соображений удобства ; трассировки печатной платы ; разряды данных переставляют!* ; Разряды выходов ППЗУ0001 Q0 EQU 1 0002 Q1 EQU 2 0080 Q2 EQU 128 0020 Q3 EQU 32 0010 Q4 EQU 16 0006 Q5 EQU 8 0004 Q6 EQU 4 0040 Q7 EQU 640000 ORG 0 ; Прямой код НА выходе 0000 010280 DB Q0,Q1,Q2,Q3 0003 200004 100804 DB Q4,Q5,Q6,Q7 0007 40 ; Инверсный код на выходе 0008 FEFD DB NOT Q0, NОТ Q1 000А 7FDF DB NOT Q2, NOT Q3 000C EFF7 DB NOT Q4, NOT Q5 000E FBBF DB NOT Q6,NOT Q7 END
Выполнение групповых операций, которые могут существенно изменить содержимое памяти, предваряется вопросом «ОПЕРАЦИЯ — УВЕРЕН?», в ответ на который нажимают клавишу Y — если уверен или ВК — если операцию необходимо отменить.
При нажатии клавиши L РЕДАКТОР переходит в режим представления байтов в виде ASCII — символов, позволяющий вносить исправления в алфавитно-цифровом виде. Для выхода из ASCII — режима служит клавиша ESC (АР2). Если, кроме описываемого пакета, в компьютер загружен соответствующий транслятор, то источником данных для занесения в ПЗУ может служить программа на Бейсике или Ассемблере. Для перегрузки информации из области оттранслированных программ Ассемблера в буфер программатора можно воспользоваться директивами Т МОНИТОРА или РЕДАКТОРА ПАМЯТИ. Кроме того, если воспользоваться директивой I МОНИТОРА, данные могут быть загружены с магнитной ленты.
Список директив пакета приведен в табл.5.
Таблица 5.
ДИРЕКТИВЫ УПРАВЛЕНИЯ ЭКРАННЫМ РЕДАКТОРОМ СОДЕРЖИМОГО ПАМЯТИ
Клавиша и ключевое слово | Назначение директивы |
---|---|
@ | Непосредственное задание адреса, где необходимо продолжить редактирование |
Region | Непосредственное задание границ области, в которой необходимо произвести
групповые операции |
F2 | Установка маркера начала области в экранном режиме |
F3 | Установка конца области в экранном режиме |
↑ | Переход к предыдущей строке дампа на экране |
↓ | Переход к следующей странице дампа на экране |
← | Переход к предыдущему байту дампа |
→ | Переход к следующей НЕХ-цифре дампа |
+ | Переход к следующей странице (256 байт) дампа |
- | Переход к предыдущей странице дампа |
Letter | Переключение программы в символьный режим |
<ESC> | Выход из символьного режима редактирования |
! | Выход из редактора в основное меню |
Go | Запуск программы с заданного адреса. Для возврата обратно в редактор
программа должна сохранять стек и завершаться исполнением команды RET |
Inversion | Инвертирование содержимого выбранной области |
Mask | Логическое И содержимого области ОЗУ и ОБРАЗЦА ! |
Nibbleswap | Пepеcтанoвка нибблов в выбранной области ОЗУ |
Transfer area | Пересылка содержимого выбранной области ОЗУ в другую, начало которой
запросит программа |
Update | Пересылка (или раздвижка) программ для МП КР580 с коррекцией адресов
перехода, см. [ ] |
Verify | Сравнение двух областей ОЗУ, При несовпадении на экране распечатывается
несоответствующие байты и результат операции ХОР над ними |
? | Вычисление контрольной суммы заданной области |
Search | Поиск байта-образца в заданной области ОЗУ |
Word | Поиск 16-разрядного слова в выбранной области |
eXecute | Продолжение поиска с ранее установленным образцом |
Pattern | Заполнение области байтом-образцом |
Zero | Заполнение области нулевыми байтами |
Подготовка данных в ASCII и НЕХ — виде не дает возможности комментирования информации, а также недостаточно наглядна. Более наглядный способ представления информации, заносимой в ПЗУ, обеспечивает транслятор с языка АССЕМБЛЕР. Его применение для трансляции программ собственно МП очевидно. Однако с помощью АССЕМБЛЕРА можно программировать не только программы. Продемонстрируем описание дешифратора двоичного кода в позиционный для прямого и инверсного представления информации на выходе и входе, написанное на АССЕМБЛЕРЕ (табл.6). Более подробно познакомиться с этими применениями трансляторов АССЕМБЛЕРА можно в [4, 5].
Видно, что применение АССЕМБЛЕРА позволило ввести в текст комментарии и мнемонические обозначения выходов и выходных кодов ППЗУ, что особенно удобно при создании сложных комбинационных устройств. Приведенная программа может быть оттранслирована, а затем перемещена в область буфера данных для программирования в ППЗУ.
Д. ЛУКЬЯНОВ, А. БОГДАН
г. Москва
- («Радио», 1987, № 9, с. 24-26. 56, 571 Учись работать с ПЗУ."- Микропроцессорные средство и системы. 1985, № 3, с. 71-88.
- Лукьянов Д., Богдан А. «Радио-86РК» — программатор ПЗУ".- Радио, 1987. № 9, с. 24-26. 56, 57.
- Селицкий С., Сыркин М. Процедура перемещения частей загрузочного модуля для микропроцессора КР580ПК80.- Микропроцессорные средства и системы, 1987, № 4. с. 28-30.
- Лукьянов Д. Как написать кросс-транслятор с языка Ассемблер.- Микропроцессорные средства и системы. 1985, № 4, с. 35-41.
- Лукьянов Д. ПЗУ — универсальный элемент цифровой техники.- Микропроцессорные средства и системы, 1986, № 1. с. 75-82