Радио-86РК/Радио 08,09-87/Программатор ПЗУ

Материал из Emuverse
Версия от 11:38, 6 ноября 2007; Panther (обсуждение | вклад) (+ img)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Данный материал защищён авторскими правами!

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: Д. ЛУКЬЯНОВ А. БОГДАН

Источник: http://retro.h1.ru/RK86/PrgOZU/BurnPZU.php

Постоянное совершенствование интегральной технологии и схемотехники привело к созданию новых типов БИС — микропроцессорных комплектов. Неотъемлемой их частью являются БИС ПЗУ. Такие преимущества БИС ПЗУ по сравнению с ИС ОЗУ, как сохранение информации при отключении источника питания, относительно низкая стоимость, сравнительно высокая информационная плотность(Информационная плотность ПЗУ определяется количеством запоминающих элементов на единице площади кристалла) и высокая надежность, способствовали их широкому применению для хранения как системных, так и прикладных программ, последовательности микрокоманд, а также для создания различных преобразователей кодов н нестандартных дешифраторов, программируемых генераторов и делителей частоты [2] и т. д.

Наибольшей популярностью у радиолюбителей пользуются программируемые ПЗУ (ППЗУ) с плавкими перемычками и репрограммируемые ПЗУ (РПЗУ) со стиранием информации ультрафиолетовым излучением. Первые более доступны, но допускают однократное программирование и имеют меньшую информационную плотность. Вторые значительно дороже, но это окупается их большей информационной емкостью и, что особенно привлекательно для радиолюбителя, возможностью многократного программирования.

Однако на каком бы физическом принципе не была основана работа ПЗУ, для занесения в него данных необходимо специальное устройство — программатор. Промышленность такие устройства выпускает, но' они большинству радиолюбителей недоступны.

Как же в таком случае энтузиасту микропроцессорной техники запрограммировать ПЗУ? Очевидно, эту работу следует поручить компьютеру, тем более что в нем уже есть основные элементы программатора: источник питания, буферная память и даже программное обеспечение, позволяющее считывать, редактировать, записывать и проверять правильность информации в ПЗУ, а также переписывать данные из ПЗУ на магнитную ленту. Особенности архитектуры и МОНИТОРА РК позволяют обойтись незначительными аппаратными средствами и практически все операции, необходимые для работы с ПЗУ серий К573, К556, К541 емкостью 1—8 Кбайт, проводить с помощью уже имеющихся в МОНИТОРЕ подпрограмм и директив. Но прежде чем описывать устройство программатора, познакомимся с устройством БИС ПЗУ и тем, что происходит внутри них при программировании. Сделать это следует хотя бы потому, что, например, такое распространенное ПЗУ как К573РФ2 по числу активных элементов превосходит сам микропроцессор почти втрое.

ПЗУ ВДОЛЬ И ПОПЕРЕК

Структурные схемы всех ПЗУ в первом приближении можно считать одинаковыми, поэтому их устройство рассмотрим на примере все той же микросхемы К573РФ2.

Основа ПЗУ — накопитель информации, занимающий почти всю площадь кристалла. Вдоль и поперек кристалла проложены непересекающиеся шины, образующие прямоугольную матрицу, в узлы которой включены запоминающие элементы — МОП-транзисторы специальной структуры (рис.1). Логические сигналы на одну систему шин (например, горизонтальные) поступают с выхода дешифратора части адресных разрядов. При этом высокий уровень устанавливается только на одной из этих шин, и, следовательно, если какие-либо транзисторы в выбранном ряду открыты, то такой же уровень установится и на соответствующих вертикальных шинах.

Сигналы вертикальных шин поступают на входы мультиплексора, подключающего к выходу микросхемы только одну из шин. Какая шина будет подключена к выходу, зависит от значения разрядов адреса, неиспользуемых для дешифрации горизонтальных шин. Следовательно, при каждой комбинации сигналов на адресных входах БИС выходной сигнал определяется состоянием одного из транзисторов, находящегося на перекрестии шин, выбранных кодами Х и Y.

Для простоты мы не рассматривали буферные усилители на входах и выходах микросхемы, а также ряд других узлов БИС, несущественных для понимания принципа их работы.

Запоминающая способность РП3У с электрическим программированием и стиранием информации ультрафиолетовым излучением определяется особенностями транзисторных структур, входящих в матрицу запоминающих элементов [3]. В отличие от обычных МОП-транзисторов они имеют затвор из поликристаллического кремния, расположенный в слое его окисла, благодаря чему такой затвор и получил название «плавающего» (Запоминающий МОП-транзистор БИС К573РФ1, кроме плавающего, имеет еще один затвор, предназначенный только для считывания данных.) (рис.2). Запись информации (заряд затвора) происходит в результате приложения между стоком и истоком большого (около 30 В) отрицательного напряжения. Электроны, получающие в электрическом поле достаточную энергию, преодолевают потенциальный барьер на границе полупроводника и окисла и дрейфуют к плавающему затвору, заряжая его отрицательно. Этот заряд создает в канале электрическое поле, стремящееся открыть МОП-транзистор.

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

Однако если МОП-транзистор с плавающим затвором подвергнуть воздействию ультрафиолетовых лучей, электроны получат энергию, достаточную для того, чтобы «перескочить» обратно на подложку. Затвор при этом разрядится, и запоминающий элемент возвратится в свое первоначальное не запрограммированное состояние. Остается лишь добавить, что подачей программирующих напряжений на транзисторы матрицы управляет специальный блок, также расположенный на кристалле РПЗУ.

Структурная схема БИС ПЗУ с плавкими перемычками, как две капли, воды похожа на уже рассмотренную нами, принципиальная разница заключается в построении запоминающего элемента. Как и в БИС РПЗУ, в узлы матрицы накопителя входят транзисторы, по самые обыкновенные, а в их эмиттерные (или коллекторные) цепи включены тонкие (20…30нм) нихромовые перемычки, благодаря которым БИС и приобретает способность «запоминания» информации (рис.3). При подаче программирующего напряжения перемычка расплавляется, что соответствует записанному биту информации. К сожалению, ПЗУ с нихромовыми перемычками обладают серьезным недостатком: по прошествии определенного времени некоторые из разрушенных соединений вновь становятся проводящими. Однако этого недостатка удается избежать, если вместо нихрома в качестве материала плавкой перемычки использовать поликристаллический кремний.

Процесс программирования РПЗУ достаточно прост [4] и состоит в подаче на адресные входы адресов ячеек, в которые необходимо занести информацию, установке на выходах микросхемы данных для программирования (в процессе программирования выходы БИС ПЗУ являются входами!) и подаче на специальный вход PGM импульса управления программированием.

Например, для программирования микросхемы К573РФ1 необходимо повысить напряжение на входе CS/WR (вывод 20) до 12В, активизируя этим блок программирования. Затем, устанавливая последовательные значения кода адреса на выводах А0-А9 и необходимые данные на выводах D0-D7. подать импульсы программирования амплитудой 25В на вход программирования РGМ (вывод 18). Импульсы можно подавать только тогда, когда уровни сигналов на входах А0-А9 и D0-D7 стабильны. Для надежной записи информации в каждую ячейку необходимо подать не менее 50-100 импульсов программирования длительностью 1 мс.

Остальные микросхемы этой серии программируют импульсом с уровнем ТТЛ, подаваемым на вход PGM. В зависимости от типа БИС для зарядки плавающих затворов одной ячейки достаточно 20-50 миллисекунд. Чтобы программирование произошло, на входе питания блока программирования (Upr) должно присутствовать напряжение 18-25В.

После окончания импульса программирования необходимо считать данные и убедиться в правильности записи. Современные БИС РПЗУ допускают считывание информации без отключения источника питания Upr, что очень удобно и используется в описываемом ниже программаторе.

Методика программирования ПЗУ с плавкими перемычками принципиально ничем не отличается от алгоритма записи информации в БИС РПЗУ. Разница состоит лишь в том, что требуется более мощный источник программирующего напряжения и за один цикл может быть запрограммирован только один разряд ПЗУ.

ПРИНЦИП РАБОТЫ ПРОГРАММАТОРА

Проще всего запрограммировать ПЗУ, включив его в адресное пространство в РК. Именно эта идея положена в основу программатора, структурная схема которого приведена на рис.4. Цикл чтения при этом протекает, как обычно, в течение 500нс., а в качестве импульса программирования используется сигнал записи, искусственно «растянутый» на нужное время. В этом случае ПЗУ для процессора представляется как ОЗУ, но очень медленно работающее на запись. Так как в РК применено ОЗУ динамического типа, то максимальное время, на которое можно удлинить цикл записи, не может превышать 2мс — периода его регенерации.

Для удлинения цикла записи использован вход готовности процессора к обмену информацией READY. Для нормальной работы на этом входе устанавливают высокий уровень напряжения, и процессор работает с максимальной скоростью. Однако если в каком-либо цикле обмена информацией на этом входе уровень станетнизким, процессор перейдет в состояние ОЖИДАНИЯ и начнет пропускать машинные такты, не изменяя сигналов на шинах адреса и данных до тех пор, пока на этом входе уровень не станет высоким (рис.5). Для перевода процессора в состояние ожидания на заданный интервал времени (1мс) использован ждущий мультивибратор.

Поскольку растянуть необходимо только цикл записи, то для запуска мультивибратора нужно знать, что процессор будет делать в текущем цикле обращения к шинам адреса и данных. Казалось бы, проще всего для этого воспользоваться сигналом WR, однозначно определяющим операцию записи. Однако процессор анализирует состояние входа READY в машинном такте Т2, а импульс WR может появиться только после этого такта. Поэтому сигнал WR непригоден для запуска мультивибратора задержки.

К счастью, узнать о «намерениях» процессора можно иначе. В начале каждого машинного цикла в такте Т1 процессор выводит на шину данных свое слово состояния. Оно присутствует там, пока на выходе SYNC процессора высокий уровень, а затем слово состояния сменяется данными. Слово состояния или отдельные его биты могут быть считаны при стробировании информации с шины данных сигналом STSTB, вырабатываемым микросхемой КР580ГФ24.

Мнемоника и назначение отдельных разрядов слова состояния приведены в табл.1. В частности, разряд D1 слова состояния равен нулю, только в том случае, если далее процессор планирует операцию записи. Эта особенность и позволяет вовремя сформировать сигнал READY, если для запуска мультивибратора задержки использовать конъюнкцию сигналов D1, STSTB и ROMSEL. Последний должен вырабатываться дешифратором адреса при обращении к программируемому ПЗУ.

Как вы, наверное, уже догадались, наш программатор рассчитан на запись информации в два класса ПЗУ — РП3У с ультрафиолетовым стиранием и ПЗУ с плавкими перемычками. Несмотря на некоторую разницу в методике их программирования и необходимых для этого аппаратных средств, можно выделить некоторую общую аппаратную часть — интерфейс программатора.

Интерфейс программатора — первый модуль расширения РК и мы знакомим вас с ним до обсуждения программы расширения именно для того, чтобы вы могли справиться с реализацией этой программы самостоятельно, так, как, ПЗУ, в расширенной версии РК отведена далеко не последняя роль.

В этой статье речь пойдет именно об интерфейсе, о том, как запрограммировать РПЗУ с ультрафиолетовым стиранием, о необходимом для этого программном обеспечении и о сервисной программе «Редактор знакогенераторов», позволяющей поупражняться в программировании РПЗУ, как говорится, с пользой для дела. Программированию ПЗУ с пережигаемыми перемычками будет посвящена отдельная статья.

ПРИНЦИПИАЛЬНАЯ СХЕМА ПРОГРАММАТОРА

Принципиальная схема интерфейсной части программатора (рис.6) содержит уже рассмотренный нами по структурной схеме узел, формирующий при обращении к области РПЗУ импульс записи длительностью 1мс. Первый мультивибратор (DD2.1) вырабатывает импульс программирования и одновременно приостанавливает работу процессора, второй (DD2.2) индицирует режим записи в РПЗУ и формирует импульс длительностью около 10мс. При работе программы записи в РПЗУ период обращений к программатору составляет около 2мс, поэтому во время программирования на его выходе постоянно удерживается низкий уровень напряжения, включающий светоизлучающий диод HL1.

Область адресного пространства для программатора с максимальным размером 8 Кбайт выделяется на месте расположения дополнительного порта КР580ИК55А (D14), изрекаемого из панели на время его работы. Таким образом, сигнал, ROMSEL — ни что иное, как сигнал, поступающий на вывод 6 панели этого порта.

Входы А0…А12 и D0..D7 подключают соответственно к шине адреса и шине данных микропроцессора. В принципе, выводы адреса и данных РПЗУ непосредственно можно было бы под клочить к этим шинам, однако при неаккуратной установке и изъятии программируемой микросхемы в работающий компьютер возможны сбои, поэтому в программаторе установлены буферные усилители адреса (DD3, DD4) и данных (DD5, DD6).

Напряжения источников программирования и питания (+12_В) поступают на входы CS/WЕ и PR микросхемы К573РФ1 н вход PR остальных РПЗУ этой серии через ключи, выполненные на транзисторах VT1, VT2 и VT3, VT4.

Во время работы программатора процессор формирует импульс WR длительностью 1мс. Радиолюбительский компьютер построен так, что сигнал RAS, поступающий на входы микросхем памяти, совпадает по длительности с сигналами WR и RD. Так как максимальная длительность сигнала RAS для микросхем К565РУ3 и К581РУ4 не должна превышать 32мкс, «растянутый» импульс WR может вызвать сбои внутреннего синхрогенератора БИС ОЗУ. Чтобы этого не происходило, необходимо запретить формирование «низкого» уровня на входах RAS ОЗУ на время тактов TW, воспользовавшись сигналом процессора WAIT (вывод 24). Для этого следует доработать РК так, как показано на рис.7, разместив дополнительную микросхему К155ЛЕ1 на плате компьютера.

Для установки программируемой БИС РПЗУ в программаторе необходимы две контактные панели: 24-выводная панель для БИС К573РФ1 (рис.8) н 28-выводная панель для остальных типов РПЗУ, сигналы на которую разведены в соответствии с рис.9 (БИС К573РФ2, К573РФ5 устанавливают в такую панель со смещением на 2 вывода относительно первого). Тип микросхемы, с которой предстоит работа, задается перемычками Е1-Е4. При программировании БИС К573РФ2 (К573РФ5) устанавливают перемычки Е2, Е4, а для записи информации в БИС К573РФ4 (К573РФ6) — Е1, ЕЗ. Конструктивно они могут располагаться в ответной части малогабаритного разъема. Для каждого типа БИС РПЗУ нужна отдельная ответная часть с перемычками, на которой указан тип БИС. При программировании частично годных БИС типов К573РФ21 (К573РФ22). К573РФ41 (К573РФ42) необходимо использовать перемычки для типов «РФ2» и «РФ4» соответственно.

Чтобы не вывести из строя устанавливаемую в программатор БИС РПЗУ, введен выключатель SA1. При установке и изъятии микросхем из панели он должен находиться в состоянии «Выключено», причем для считывания информации из микросхемы достаточно подать на БИС только напряжения питания, а если планируется и программирование, то и напряжение программирования (+25В для К573РФ2, РФ5 н +21В для К573РФ4) от внешнего источника питания, н только потом замкнуть контакты выключателя SA1.

ВНИМАНИЕ!Дополнительный источник питания должен быть рассчитан на ток 50…100 мА. Броски напряжения выше указанного Upr амплитудой более 1В недопустимы, так как могут вывести программируемую БИС из строя!

Если вы пока не предполагаете расширять РК, то интерфейс достаточно подключить к указанным на схеме шинам адреса, данных и управления, но если расширение входит и ваши планы, то запаситесь несколькими комплектами какого-нибудь низкочастотного соединителя с числом контактов не менее 64 и распаяйте входы программатора к контактам соединителя, указанным на схеме в скобках (нумерация приведена для соединителя СНП58-64). Контакты ответной части соединителя распаивают на процессорной плате РК. Выходные линии интерфейса (пронумерованы условно) также необходимо вывести на какой-либо соединитель, а ответную часть смонтировать на отдельной плате, на которой будут установлены панели для программируемых БИС РПЗУ (рис.8 и 9). Программатор подключают к плате радиолюбительского компьютера проводами длиной не более 30 см, причем для шины данных необходимо использовать витые пары.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРОГРАММАТОРА

Для работы с программатором использованы в основном директивы МОНИТОРА, хранящегося в основном ПЗУ радиолюбительского компьютера. Понять их применение помогут примеры:

Чтение содержимого ПЗУ объемом 2К в ОЗУ и сохранение его на магнитной ленте, сравнение записи с содержимым ПЗУ
Директивы МОНИТОРА Выполняемые действия
ТА000, A7FF, 0000 Переписать содержимое ПЗУ в ОЗУ с адреса 0000
О0,7FF Записать содержимое на магнитофон
I Прочитать запись с кассеты
С0,7FF, А000 Сравнить прочитанный массив с содержимым установленного ПЗУ
DA000, A7FF Распечатать содержимое ПЗУ
Проверка качества стирания ПЗУ
F2000,27FF,FF Заполнить область ОЗУ объёмом 2 Кбайт кодом FF (предполагаемым содержимым «чистого» РПЗУ)
С2000,27FF,A000 Сравнить содержимое РПЗУ и ОЗУ
Сравнение содержимого двух микросхем
(Установить ПЗУ № 1)А000, A7FF,0 Переписать содержимое первого ПЗУ в ОЗУ с адреса 0000
(Установит ПЗУ № 2) С0,7FF, А000 Сравнить содержимое ОЗУ (т. е. прежнего ПЗУ) с новым ПЗУ

Для занесения информации необходима небольшая вспомогательная программа, исходный текст которой на языке АССЕМБЛЕР приведен в табл.2. Она состоит из двух независимых частей. Первая предназначена для записи информации в микросхемы К573РФ1 по стандартному алгоритму записи [5], вторая необходима для программирования остальных БИС этой серии и реализует так называемый быстрый интеллектуальный алгоритм программирования, рекомендованный фирмой Intel [6].

Суть алгоритма заключается в следующем. Каждая ячейка программируется серией попыток, длительность каждой из которых равна tмс. Максимальное число попыток программирования одной ячейки выбрано равным 50. После каждой попытки содержимое ячейки ПЗУ сравнивается с образцовой информацией, и если она записана правильно, то программа "закрепляете ее, производя еще 4N циклов записи без сравнения, где N число попыток, после которых было впервые зарегистрировано совпадение содержимого РПЗУ и образца. Если за 50 попыток РПЗУ так и не удастся запрограммировать, то программа выводит сообщение «ЯЧЕЙКА ХХХХ НЕ ПРОГРАММИРУЕТСЯ» и прерывает процесс. По окончании программирования всех ячеек происходит сравнение информации в ОЗУ и ПЗУ и если она совпадает, то программа печатает сообщение «РПЗУ ЗАПРОГРАММИРОВАНО» и также выходит в МОНИТОР.

Так как программа записи выключает изображение на экране, и регенерация ОЗУ видеоконтроллером не производится, то после каждого цикла записи в ПЗУ выполняется цикл регенерации, который оформлен в виде подпрограммы REFRESH. Распечатка содержимого загрузочного модуля программ записи приведена в табл.3. Этот модуль загружает с адреса 0000, и после запуска директивой G0 МОНИТОРА производит целый ряд дополнительных операций. Сначала он запрашивает у МОНИТОРА верхнюю границу ОЗУ РК и перегружает туда основное тело программы, производя соответствующую коррекцию адресов перехода. Затем для буфера данных программирования резервируется область размером 2 Кбайт, и нижний край этой области устанавливается в качестве новой границы свободной области ОЗУ. Таким образом, исполняемая часть как бы «запирается» в ОЗУ, и если затем будут загружаться другие программы, обладающие свойством самонастройки, то программа записи и буфер не будут ими испорчены. После окончания процесса перемещения программа сообщает адреса начала своего буфера данных ВВВВ и адреса точек входа (начальные адреса подпрограмм записи данных в БИС К573РФ1 и К573РФ2 соответственно), и передает управление МОНИТОРУ.

Для запуска программирования необходимо поместить необходимую информацию в область буфера данных, затем замкнуть контакты выключателя SA1 и запустить программу записи директивой GADDR МОНИТОРА, где в качестве аргумента используется одна из двух точек входа программы записи. Экран компьютера при этом погаснет, а через 20-80 с на нем появится одно из сообщений о результатах программирования. После этого напряжение программирования отключают. Если по окончании программирования было выдано сообщение об ошибочной записи, то для поиска ошибки можно воспользоваться директивой сравнения содержимого буфера и РПЗУ:

СА000, A7FF,ВВВВ.

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

ПРОГРАММА РЕДАКТИРОВАНИЯ ЗНАКОГЕНЕРАТОРОВ

В опубликованном варианте компьютера на экран дисплея выводятся только прописные буквы русского и латинского алфавитов и небольшое число псевдографических символов. Однако для программирования игр может потребоваться значительно больший набор графических символов, а для плодотворной работы с экранным редактором текста кроме прописных, желательно иметь еще и строчные буквы обоих алфавитов. Предлагаемая программа на «Бейсике» (табл.4) существенно облегчит подготовку информации для занесения в РПЗУ знакогенератора и позволит поупражняться в программировании РПЗУ.

Таблица 5.

НАЗНАЧЕНО КЛАВИШ УПРАВЛЕНИЯ РЕДАКТОРОМ ЗНАКОГЕНЕРАТОРОВ

К курсор влево
D Курсор вправо
B Курсор вниз
J Курсор вверх
F Поставить точку
J Стереть точку
Z Очистить знакоместо
N Инвертировать содержимое знакоместа
Е Остановить программу
@ Перейти к программированию другого символа

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

Код символа задают в десятичном виде, то есть по существу это его порядковый номер. Так, например, «изображение» символа с кодом 00 будет записано в ячейки с адресами 2800Н---2807Н (на каждый символ требуется 8 байт). Подготовленный таким образом текст знакогенератора пересылают в буферную область программатора для последующей записи в ПЗУ.

Новым знакогенератором программируют микросхему К573РФ2, устанавливаемую вместо D12. При этом линию, подключенную ранее к источнику +12В, перерезают и подключают к выходу GPA1 (вывод 34, в РК не использован) микросхемы D8. Такая переделка позволяет иметь два разных знакогенератора в одном ПЗУ и при необходимости осуществлять их программное переключение. Для этого в последнюю ячейку экранной области ОЗУ (3FF1 для версии РК с объемом ОЗУ 16К или 7FF1 — для 32К) следует занести код команды останова ПДП — F3H, а в одну из ячеек, предшествующих первой отображаемой строке текста, например 37С0 (77С0), записать код управления признаком GPA1-88Н.

Д. ЛУКЬЯНОВ А. БОГДАН

г. Москва

  1. Попов С. ПЗУ для БЕЙСИКа Радио. 1987, № 3, с. 32.
  2. Лукьянов Д. ПЗУ — универсальный элемент цифровой техники Микропроцессорные средства и системы, 1986, № 1, с. 75- 82.
  3. Петросян О. и др. Схемотехника БИС постоянных запоминающих устройств.- М.: Радио и связь, 1987. с. 216.
  4. Учись работать с ПЗУ.- Микропроцессорные средства и системы. 1985. № 3. с. 71-88.
  5. Дианов А., Щелкунов Н. Методика программирования микросхем ПЗУ. — « Микропроцессорные средства и системы», 1985, № 3, с. 75-79.
  6. Экспресс-информация. Сер. «Вычислительная техника», 1984, № 47. с. 1-- 7.