Микро-80/Радио 1983-06/Модуль программатора ППЗУ

Материал из Emuverse
Перейти к: навигация, поиск
Red copyright.png Данный материал защищён авторскими правами!

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

Автор: Г. ЗЕЛЕНКО, В. ПАНОВ, С. ПОПОВ

Источник: http://retro.h1.ru/MK80/Io/M80Progr.php

В этой статье мы рассмотрим принципиальную электрическую схему и управляющую программу модуля программатора для ППЗУ К573РФ1. Но предварительно познакомимся с работой программируемой периферийной БИС КР580ВВ55, которая входит в комплект микропроцессорных БИС серии К580. Именно эта БИС и является основным элементом программатора. Кроме того, ее можно использовать и во многих других радиолюбительских конструкциях с микропроцессорами.

Для упрощения подключения внешних устройств к шинам микро-ЭВМ применяют программируемые периферийные микропроцессорные БИС разных типов. Внешние устройства разделяют на универсальные, широко используемые в вычислительной технике (например, устройства ввода-вывода для различных носителей информации: перфолент, магнитных лент и дисков, алфавитно-цифровые печатающие устройства и др.), и специализированные, управляемые от микро-ЭВМ. Именно к ним и относится описываемый программатор.

С помощью программируемых периферийных БИС взаимодействие сигналов шин микро-ЭВМ и сигналов многих внешних устройств можно организовать программно, не разрабатывай для этого специальные схемы. Покажем что на примере использования одной из таких БИС микросхемы КР580ВВ55. Далее мы будем называть ее программируемым периферийным адаптером — ППА.

Внешние устройства подключают к линиям ввода или вывода ППА, образующим каналы А, В и С, по 8 линий в каждом. Канал С может быть разделен на младший и старший подканалы. Линии каналов связаны с соответствующими буферными регистрами ППА портами А, В и С.

Обмен информацией между микропроцессором и портами происходит по командам ввода или вывода программы по шине данных, к которой ППА подключен через двунаправленные линии D0D7. Эти линии находятся в высокоимпедансном состоянии при отсутствии сигнала ВМ и одного из сигналов ЧТ или ЗП. При выполнении команд ввода или вывода микропроцессор устанавливает на линиях А0 — А7 шины адресов номер порта. В результате его дешифрации вырабатываются сигналы ВМ,А0 и А1, определяющие, с каким из портов будет происходить обмен (см. табл.1). Направление обмена задают управляющие сигналы, поступающие с шины данных на входы ЗП или ЧТППА в зависимости от того, выполняется ли команда ввода/вывода.

Таблица1.

A1 А0 ВМ Порт
0 0 0 А
0 1 0 В
1 0 0 С
1 1 0 РУС

ППА содержит также порт регистра управляющего слова РУС, куда для задания режимов работы каналов по команде вывода предварительно заносится управляющее слово. Формат этого слова представлен в табл. 2. Отметим, что считать информацию из порта РУС нельзя. Возможны три режима (0, 1 и 2) работы каналов ППА.

M80Progp1.png

Режим 0 предусматривает обмен данными с внешними устройствами через каналы А, В и два подканала С без управляющих сигналов о готовности к работе и подтверждения обмена. Это означает, что данные, выводимые из микроЭВМ по командам вывода, фиксируются в соответствующих портах ППА и хранятся там до поступления очередных команд вывода, то есть до записи в порты новых данных. По линиям каналов они непосредственно поступают во внешние устройства.

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

В режиме 1 обменом данными между внешними устройствами и каналами А и В (или одним из них) управляют сигналы, передаваемые по линиям канала С. Работу ППА в этом режиме рассмотрим на примере совместной работы микро-ЭВМ с широко распространенным в вычислительной технике внешним устройством — алфавитно-цифровым дисплеем. Как правило, дисплей состоит из двух функционально независимых частей: клавиатуры и блока вывода данных на экран дисплея.

M80Progp2.png

Обратимся к рис.1, на котором показана схема подключения этих блоков к ППА. В нашем примере порты А и В запрограммированы в режиме 1 соответственно на ввод данных с клавиатуры и их вывод из микропроцессора на экран дисплея. Здесь же приведены и временные диаграммы управляющих сигналов. После нажатия на клавишу на линиях канала А появляется код соответствующего знака, а на линии канала С—сигнал строб приема — СТПРА. По этому сигналу данные с входных линий переписываются в порт А, что подтверждается сигналом подтверждение приема — ПДПРА, поступающим из ППА в дисплей. и сигнал СТПРА гасится. ППА при этом формирует сигнал запрос прерывания — ЗППРА, свидетельствующий о том, что данные в порту А подготовлены для последующего их считывания микропроцессором по команде ввода. Ее выполнение вызывает появление сигнала ЧТ, фронт которого гасит сигнал ЗППРА, а спад — сигнал ПДПРА, после чего с клавиатуры дисплея можно вывести новый байт данных на линии канала А.

M80Progp3.png

При выводе на экран дисплея какого-либо символа его код переписывается в порт В по команде вывода, вызывающей одновременно появление сигнала ЗП на входе ППА. По спаду этого сигнала формируется сигнал строб записи — СТЗПВ для дисплея. Этот же сигнал разрешает считывание данных с линий канала В и по нему же вырабатывается сигнал подтверждение записи — ПДЗПВ, спад которого сбрасывает сигнал СТЗПВ и вызывает в ППА возникновение сигнала запрос прерывания — ЗППРВ. Теперь микропроцессор может аписать в буфер ППА код очередного символа для его последующего вывода на экран.

В режиме 2 линии канала А приобретают свойство двунаправленностн и поэтому могут быть подключены к внешнему устройству, также использующему для ввода-вывода двунаправленные линии. Управляющие сигналы в режиме 2 такие же, как и в режиме 1. Переводом линий канала А в режимы ввода и вывода управляют поступающие от внешних устройств сигналы СТПРА и ПДЗПА соответственно. При их отсутствии линии канала А остаются в высокоимпедансном состоянии. Этот режим весьма специфичен, и его рассмотрение мы пока отложим.

В табл.3 показано назначение линий канала С при разных режимах работы каналов ППА. Свободные от управляющих сигналов линии канала С (в таблице они обозначены В/В) могут быть использованы как линии ввода или вывода данных. Для вывода данных По отдельным линиям канала С используют специальное управляющее слово, записываемое в порт РУС и служащее для индивидуальной установки в 1 или 0 любого разряда порта С (см. табл.4). В зависимости от кода, записанного в разрядах D1- D3, выбирается разряд порта С, значение которого (а следовательно, и сигнала на соответствующей линии) будет изменено при записи этого слова в порт РУС. Если необходимо изменить состояние нескольких линий порта С, то загружают последовательно несколько управляющих слов.

Управляющие сигналы, передаваемые по линиям канала С, фиксируются в соответствующих разрядах порта С (см. табл. 5). Байт. считанный микропроцессором из порта С, отражает текущее состояние ППА и может быть затем программно проанализирован. Одновременно могут быть считаны и данные, вводимые или выводимые по свободным линиям канала С.

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

На практике обычно используют оба способа проверки готовности внешних устройств. Например, при выводе «по инициативе» микропроцессора на экран дисплея последовательности символов целесообразно использовать программный опрос готовности. Однако, если микропроцессор в это время производит какие-либо вычисления, а Вы, например, хотите иметь возможность прервать этот процесс в произвольный момент вводя с клавиатуры дисплея какой-либо знак, то целесообразно использовать ввод данных по прерыванию. Иначе микропроцессору потребуется наряду с вычислениями постоянно опрашивать готовность порта, связанного с клавиатурой, а это может значительно снизить скорость вычислений.

Для разрешения или запрещения формирования сигналов ЗППР в ППА необходимо устанавливать определенные разряды порта С (в табл. 5 они названы РЗПР) соответственно в 1 или 0. Это позволяет программным путем «разрешить» или «запретить» отдельным внешним устройствам работать с микропроцессором.


Адр. Код Метка Мнем. Операнд КОММЕНТАРИИ
1000 ЗЕВ4   MVI В4Н НАСТРОЙКИ ПОРТОВ:
1002 D303   OUT РУС ПОРТ А — ВВОД В РЕЖИМЕ 1, ПОРТ В — ВЫВОД В РЕЖИМЕ 2,
1004 ЗЕ09   MVI А, 09Н УСТАНОВКИ БИТА 04 ПОРТА С ДЛЯ
1006 0303   OUT РУС РАЗРЕШЕНИА СИГНАЛА ЗППР А,
1008 ЗЕОЭ   MVI А, 0AН УСТАНОВКА БИТА 02 ПОРТА С ДЛЯ
100А 0303   OUT РУС РАЗРЕШЕНИЯ СИГНАЛА ЗППР В. ВВОД СИМВОЛА С КЛАВИАТУРЫ:
100C DB02 ВВОД: IN ПОРТ-С ПРОВЕРКА НАЛИЧИЯ СИМВОЛА С
100E Е604   ANI 04Н КЛАВИАТ.- ВВОД БИТА СОСТОЯН.,
1010 СА0С10   JZ ВВОД ВЫДЕЛЕНИЕ И АНАЛИЗ РАЗРЯДА 03 ДЛЯ ОБНАРУЖЕН. СИГНАЛА ЗППР А;
1013 DB02   IN ПОРТ-A ВВОД КОДА СИМВ. С КЛАВИАТУРЫ:
1015 4F   MOV С,А СОХРАН. КОД В РЕГИСТРЕ С. ВЫВОД СИМВОЛА НА ЭКРАН:
101A DB02 ВЫВОД: IN ПОРТ-С ПРОВЕРКА ГОТОВН. ДИСПЛЕЯ К
1018 E601   ANI 01Н ВЫВОДУ СИМВОЛА НА ЭКРАН -
101A CA1610   JZ ВЫВОД ВВОД БАИТА СОСТОЯНИЯ, ВЫДЕЛЕН. И АНАЛИЗ РАЗРАДА 00 ДЛА ОВНАРУЖЕНИА. СИГНАЛА ЗППР В;
101D 79   MOV А,С ВЕРНУТЬ КОД СИМВ. и РЕГИСТР А,
101E D301   OUT ПОРТ-В ВЫВЕСТИ СИМВОЛ НА ЭКРАН.
1020 C30C10   JMP ВВОД  
    ПОРТ-A: EQU 00Н ПРИСВОЕНИЕ НОМЕРОВ ПОРТАМ
    ПОРТ-В: EQU 01Н В СООТВЕТСТВИИ С РИС.1
    ППРТ-С: EQU 02Н (СИГНАЛЫ НА ШИНЕ АДРЕСОВ
    РУС: EQU 03H ИНВЕРСНЫЕ).

Рис.2

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

При начальном запуске из микроЭВМ на соответствующий вход ППА должен быть подан сигнал СБР. По этому сигналу все порты ППА настраиваются на выполнение операций ввода в режиме 0 и обнуляются их разряды. Только после этого можно задавать нужные режимы работы. Обнуление необходимо также и при операциях смены режимов работы.

При конструировании различных устройств с ППА необходимо помнить, что нагрузочная способность его линий позволяет подключать к ним только по одному входу ТТЛ микросхем.

Перейдем теперь к рассмотрению модуля программатора ППЗУ К573РФ1. Его принципиальная схема приведена на рис.3, находящемся в альбоме. Конструктивно модуль программатора можно выполнить в виде отдельного устройства. Микросхему ППЗУ устанавливают в программатор в специальную панель, которую в радиолюбительских условиях можно изготовить из каких-либо разъемов с плоскими контактами, расположенными с шагом 2,5 мм

Формирование сигналов на выводах ППЗУ при записи в него информации происходит программно. Для подключения ППЗУ к шинам микро-ЭВМ используем каналы А, В и С ППА в режиме 0. В соответствии со схемой (рис. 3) порты А, В, С и РУС будут иметь соответственно номера 83Н, 82Н, 81Н и 80Н. Постарайтесь выяснить сами, почему это так и чем ограничены допустимое число н номер портов из-за того, что вывод ВМ ППА непосредственно (без дешифратора) подключен к линии ША7 шины адресов. Отметим также, что сигнал СБР перед поступлением на ППА должен быть инвертирован.

По каналу А и линиям КСО и КС1 канала С поступают коды адресов ППЗУ. Линии канала В предназначены для вывода данных при записи их в ППЗУ и для ввода данных в микро-ЭВМ из ППЗУ для контроля. Сигналы линий КС4 и КС5 порта С управляют блоком формирования импульса программирования, собранном на элементах D3, V1, V2. Сигналы с линии КС6 управляют формирователем сигнала ВМ, выполненном на элементе D4.1. Через элемент D4.2 к линии КС7 ППА подключен светодиод V3, зажигающийся во время выполнения цикла программирования.

При программировании ППЗУ на его вход ВМ подают положительное напряжение 12 В. На адресных линиях А0-А9 ППЗУ последовательно устанавливают адреса всех 1024 ячеек микросхемы, а на информационных линиях D0—D7 — соответствующие байты информации. Они считываются из буферного ОЗУ микро ЭВМ, где предварительно должна быть подготовлена исходная информация для программирования ППЗУ. Запись информации в ячейку ППЗУ происходит в момент подачи на его вход ПР программирующего импульса амплитудой 26В и длительностью 0,2…1мс. По окончании цикла программирования на вывод ВМ ППЗУ подают уровень 0 и последовательно считывают и сравнивают содержимое всех ячеек ППЗУ с исходной информацией в буферном ОЗУ. При обнаружении несоответствия цикл программирования повторяют. Как правило, для правильного программирования ППЗУ приходится выполнить несколько таких циклов. Все эти операции выполняются автоматически с помощью описанной ниже программы.

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

  • программа-загрузчик — F400H— F40CH:
  • программа просмотра содержимого ОЗУ F40DH—F419H;
  • программа вывода содержимого ППЗУ в буферное ОЗУ — F41AH— F43AH;
  • программа записи в ППЗУ — F43BH—F4A7H.

Машинные коды всех программ приведены на рис.4.

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

F400 DB 00 6F DB 00 67 DB 00 77 23 C3 06 F4 DB 00 6F 
F410 DB 00 67 7E 03 00 23 C3 13 F4 3E B2 D3 80 SE 60 
F420 D3 81 21 00 F4 11 00 04 2B 1B 7B D3 83 7A F6 60 
F430 D3 81 DB 82 77 7A 83 C2 28 F4 76 31 FF F7 06 10 
F440 3E 82 D3 80 3E 60 D3 81 21 00 F4 11 00 04 2B 1B 
F450 7B D3 83 7A F6 60 D3 81 DB 82 BE 3E 81 C2 69 F4 
F460 7A 83 C2 4E F4 06 01 3E OF F5 OE OC 3E AO D3 81 
F470 3E 80 D3 80 21 00 F4 11 00 04 2B 1B 7B D3 83 7A 
F480 F6 AO D3 81 7E D3 82 7A F6 90 D3 81 3E 10 3D C2 
F490 8E F4 7A F6 AO D3 81 7A B3 C2 7A F4 OD C2 74 F4 
F4AO F1 05 C2 40 F4 D3 00 76

Рис.4

Программу чтения содержимого ОЗУ запускают с адреса F40DH. Эта программа считывает набираемые на тумблерном регистре Д0—Д7 младшие и старшие байты адреса первой просматриваемой ячейки ОЗУ, а затем после каждого нажатия на кнопку ВП на светодиодах ШД0—ШД7 отображает содержимое очередной ячейки памяти.

С помощью программы записи происходит собственно процесс программирования ППЗУ, то есть подготовленные в буферном ОЗУ 1024 байта информации («копия» содержимого ППЗУ) переписываются в него. При этом необходимо иметь в виду, что процесс программирования ППЗУ сводится к записи нулей в нужные разряды ячеек памяти, так как после стирания информации в ППЗУ (ультрафиолетовыми лучами) во всех его ячейках оказываются записанными единицы. При этом, например, попытка записи байта FFH в какую-либо ячейку ППЗУ не оказывает на нее никакого воздействия. Однако запись байта 00Н ведет к тому, что все разряды этой ячейки обнуляются.

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

При занесении информации в буферном ОЗУ нужно учитывать, что последовательность байтов, записанная в ячейки с F000H по F3FFH буферного ОЗУ при программировании, перепишется в ячейки ППЗУ с 0000Н по 03FFH соответственно.

Программу записи ППЗУ запускают по адресу F43BH. Время ее работы — несколько десятков секунд. По окончании её работы на светодиодах ШД0ШД7 пульта отладочного модуля появляется комбинация 00001111 в случае успешного окончания процесса программирования или же 10000001 при невозможности за 16 циклов программирования записать нужную информацию. Причинами неудачи могут быть неполное предварительное стирание ППЗУ, неисправность самого ППЗУ, ошибки в наборе программы в ОЗУ и другие.

Рекомендуем первоначально записать в ППЗУ машинные коды программ, представленных на рис. 5.

FCOO DB 00 6F DB 00 67 DB 00 77 23 C3 06 FC DB 00 6F 
FC10 DB 00 67 7E D3 00 23 C3 13 FC 3E 82 D3 80 3E 60 
FC20 D3 81 21 00 F4 11 00 04 2B 1B 7B D3 83 7A F6 60 
FC30 D3 81 DB 82 77 7A B3 C2 28 FC 76 31 FF F7 06 10 
FC40 3E 82 D3 80 3E 60 D3 81 21 00 F4 11 00 04 2B 1B 
FC50 7B D3 83 7A F6 60 D3 81 DB 82 BE 3E 81 C2 69 FC 
FC60 7A B3 C2 4E FC 06 01 3E OF F5 OE OC 3E AO D3 81 
FC70 3E 80 D3 80 21 00 F4 11 00 04 2B 1B 7B D3 B3 7A 
FC80 F6 AO D3 81 7E D3 82 7A F6 90 C3 81 3E 10 3D C2 
FC90 8E FC 7A F6 AO D3 81 7A 83 C2 7A FC OD C2 74 FC 
FCAO F1 05 C2 40 FC D3 00 76

Рис.5

Это те же самые программы, что и уже описанные, но расположены в другой области памяти. При этом адреса запуска программы-загрузчика, программ просмотра содержимого ОЗУ, вывода содержимого ППЗУ в буферное ОЗУ, записи в ППЗУ соответственно будут равны FC00H, FC0CH, FC1AH и FC3BH. Тогда, установив вместо D43 (см. рис.2 в статье «Модуль памяти») нашу БИС ППЗУ с записанной программой, получим достаточно удобное устройство для программирования, которое потребуется нам в дальнейшем.

Отсканировано с журнала Радио № 5 1983 г.
Отредактировано Лесных Ю. И. 1999 г.