Корвет/Радио 08-89/Интерфейсы

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

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

Автор: С. АХМАНОВ, Н. РОЙ, А. СКУРИХИН

Источник: http://www.pk-info.ru/infopk/doc/korvet_radio/doc4.htm

В этой статье мы займемся наиболее интересной для большинства радиолюбителей проблемой. Каким образом к «Корвету» можно подключать различные, в том числе и самодельные устройства. Для этой цели в машине предусмотрено пять интерфейсов:

  1. Параллельный интерфейс принтера в стандарте «Centronix».
  2. Последовательный интерфейс в стандартах RS232 и «токовая петля».
  3. Последовательный интерфейс локальной сети.
  4. Интерфейс расширения системы.
  5. Интерфейс бытового кассетного магнитофона.

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

Таймер

Выполнен на микросхеме КР580ВИ53. Он имеет три независимых канала. Канал 0 используется для создания различных звуковых эффектов. На его вход подается сигнал с частотой 2 МГц. Канал 1 используется для управления скоростью передачи данных через последовательный интерфейс. На вход канала подается сигнал также с частотой 2 МГц. Канал 2 служит для генерации системных прерываний. Он формирует запросы прерывания однократно или многократно через заданные интервалы времени. На вход канала поступают сигналы синхронизации строчной развертки дисплея с периодом 64 мкс.

Контроллер прерываний

Реализован на основе микросхемы КР580ВН59. Он обслуживает 8 уровней прерываний. Здесь мы не будем описывать, каким образом производят его программирование. В настоящее время по этому вопросу издано достаточное количество справочной литературы. Отметим, что обычно каждому из уровней прерывания определяется свой приоритет. Это происходит программно. Таким образом, одно прерывание происходит раньше другого в случае одновременного поступления запросов.

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

Уровней прерывания, как мы говорили, восемь. Их источниками являются:

  • уровень 0: прерывание от интерфейса расширения системы. Любой модуль, подключенный к этому интерфейсу, может по желанию его создателя генерировать запрос прерывания;
  • уровни 1, 2; прерывание от последовательного интерфейса. Эти прерывания осуществляются по окончании приема или передачи интерфейсом очередного байта;
  • уровень 3: прерывание от интерфейса локальной сети. Это прерывание свидетельствует, что по сети пришло сообщение;
  • уровень 4: прерывание от генератора кадровой развертки дисплея. Происходит периодически с периодом 20 мс;
  • уровень 5; прерывание от таймера. Источником запроса является канал 2 таймера;
  • уровень 6: прерывание от интерфейса принтера. Источником служит сигнал готовности принтера принимать данные. Таким образом, используя это прерывание, можно организовать такой режим работы принтера, когда процесс печати происходит параллельно с выполнением других задач;
  • уровень 7: прерывание от контроллера НГМД. Происходит это прерывание обычно при остановке мотора в дисководе. Обычно это прерывание используется для выхода системы при неисправностях в дисководах.

Приведенные выше уровни прерывания расположены по убыванию их приоритета. Другими словами, уровень 0 обслуживается в первую очередь, а уровень 7 в последнюю.

Контроллер прерываний содержит, как известно, два регистра. Их адреса на странице устройств ввода — вывода 28Н и 29Н.

При появлении запроса прерывания какого-либо уровня контроллер прерываний генерирует код команды CALL с адресом, соответствующим обрабатываемому запросу. В результате управление работой процессора передается программе, которая начинается с этого адреса. Адреса всех восьми процедур обработки прерывания сведены в одну таблицу. Контроллер запрограммирован таким образом, что разность между стартовыми адресами подпрограмм обработки прерываний составляет 4 байта. При использовании карты памяти, соответствующей ОС СР/М, таблица адресов прерываний имеет вид, представленный в табл. 1. Три байта из четырех, отведенных каждому прерыванию, занимает команда JMP, вызывающая передачу управления соответствующей процедуре. Четвертый байт равен 0.

Таблица 1
 
          ORG 0F7E0H
F7EOH:    JMP INT0
          DB  0
F7E4H:    JMP INT1
          DB  0
F7E8H:    JMP INT2
          DB  0
F7ECH:    JMP INT3
          DB  0
F7E0H:    JMP INT4
          DB  0
F7F4H:    JMP INT5
          DB  0
F7F8H:    JMP INT6
          DB  0
F7FCH:    JMP INT7
          DB 0
Korvet interface 1.jpg

Тут необходимо сделать небольшое отступление. Вы помните, что у «Корвета» может переключаться карта памяти. Поэтому необходимо при ее переключении запрещать прерывания, используя команду процессора DI. Разрешать прерывания командой ЕI можно только после того, как карта памяти будет нормализована. Это значит, что она будет приведена в соответствие с картой памяти ОС СР/М (в системный регистр заносится 1СН) или пользователь сам примет меры, чтобы каждому прерыванию соответствовала бы процедура его обработки.

Для облегчения поиска таблицы прерываний при манипуляциях с картой памяти, прерывания в «Корвете» организованы по типу векторов. Это значит, что в BIOS (это часть ОС СР/М, занимающаяся обменом с периферийными устройствами) вводится специальная таблица векторов прерываний. Каждый вектор указывает адрес начальной ячейки памяти процедуры обработки прерываний. Начальный адрес таблицы фиксирован — 0F7C8H.

Если мы хотим найти адрес процедуры, обслуживающей i-тое прерывание, то мы должны прибавить к 0F7C8H величину i*2 (адреса занимают два байта) и считать из ячеек (0F7C8H+i*2) и (0F7C8H+i*2+1) адрес ячейки памяти, где хранится первый байт программы обработки прерываний.

При желании пользователь может изменить адрес в таблице прерываний и настроить таким образом прерывания на свою собственную подпрограмму.

Теперь займемся периферийными устройствами. Для общения с ними в нашем распоряжении имеется ряд интерфейсов.

Для организации обмена информацией с внешним миром в «Корвете» установлены три программируемых параллельных адаптера (ППА) КР580ВВ55А. Их регистры имеют следующие адреса на странице УВВ:

ППА-3 предоставлен в полное распоряжение пользователя. Все его выходные сигналы выведены на боковой разъем расширения системы. Кроме них, на этот разъем поданы все питающие напряжения, сигнал частоты 2 МГц (2 м), сигнал канала 0 таймера (TIMER), запрос прерывания уровня 0 (IRQO), сигнал синхронизации кадровой частоты (SVBL) и бит 7 порта С второго адаптера (CONTROL). Цоколевка разъема расширения системы на рис. 1.

ППА-1 и ППА-2 используются в режиме 0. В этом случае возможно побитное управление портом С. Порты этих адаптеров распределены между упомянутыми в начале статьи интерфейсами. Рассмотрим теперь эти интерфейсы по порядку.


Таблица 2

             ППА-1   ППА-2   ППА-3

Порт А       38Н     З0Н     08Н
Порт В       30Н     31Н     09Н
Порт С       ЗАН     32Н     0АН
Порт 
управляющего 
слова        ЗВН     ЗЗН     0ВН

Интерфейс принтера

Korvet interface 2.jpg

В состав этого интерфейса входит регистр данных (порт А, ППА-2), регистр состояния (бит 2 (BUSYP) порта А, ППА-1), регистр управления (биты 4, 5 (АСК, SE) порта С, ППА-2). Рассмотрим, как происходит передача информации через этот интерфейс.

Для начала в регистр данных заносится передаваемый байт. После этого мы должны установить сигнал АСК в 1. Для этого в пятый разряд регистра управления нужно занести 1. Как мы уже говорили, порты С ППА-1 и ППА-2 программируются побитно. Для установки нужного бита в порте С в состояние 0 или 1 мы должны в порт управляющего слова адаптера записать байт, в котором биты 1—3 содержат номер устанавливаемого бита, а бит 0 — то значение, которое нужно записать. Это значит, что для установки бита 5 порта С ППА-2 в единичное состояние мы должны записать порт управляющего слова ППА-2 0ВН. После установки сигнала АСК в единичное состояние принтер считывает байт данных и устанавливает сигнал BUSYP в 1. Этот сигнал через инвертор подается на вход регистра состояния, откуда его считывает процессор.

После этого процессор должен сбросить сигнал АСК. Для этого в порт управляющего слова ППА-2 записывается 0АН.

Сигнал BUSYP подается также на вход запроса прерывания 6-го уровня контроллера прерываний. С помощью прерываний можно организовать процесс «фоновой» печати. Это делается для того, чтобы уменьшить потери времени процессора, затрачиваемые на ожидание, пока принтер установит сигнал BUSYP в 0. Теперь, когда принтер готов принимать информацию, он прерывает основную программу, выполняемую процессором, получает байт данных и оставляет процессор в покое, на время пока сам разбирается с полученным байтом, Сигнал SE может использоваться для инициализации принтера или других целей. Сигналы АСК и SE подаются на разъем принтера через инверторы. Цоколевка разъема представлена на рис. 2.

Последовательный интерфейс

В этом интерфейсе реализованы два стандарта:

RS232, когда данные передаются путем подачи напряжения ±12 В, и токовая петля, в которой сигналы передаются подачей тока ±20 мА.

Последовательный интерфейс реализован на микросхеме КР580ВВ51А. Здесь мы не будем рассматривать правила программирования этой микросхемы. Укажем лишь, что в ее состав входят три регистра: регистр данных (10H), регистр управления (11Н) и регистр состояния (11Н).

Выходные цепи интерфейса устроены так, что ему безразлично, через какое устройство идет передача информации: формирователи сигналов напряжения −12 В (RS232) или оптроны (токовая петля).

Скорость передачи информации по последовательному интерфейсу задается путем программирования канала 1 таймера. В регистр этого канала заносится 13 для скорости 9600 бод, 26 — 4800 бод, 52 — 2400 бод, 104—1200 бод.

Korvet interface 3.jpg

На разъем интерфейса выведены следующие сигналы:

RTS — запрос на передачу, DSR — подтверждение готовности принять информацию, TXD — принимаемые данные (RS232), ±V24RD — принимаемые данные через токовую петлю, ±V24TD — передаваемые данные через токовую петлю.

Первые два сигнала предназначены для организации диалога между компьютером и периферийным устройством. Когда компьютер собирается что-либо передавать, он устанавливает RTS в состояние «запрос», определяемое протоколом обмена (что это — 0 или 1 — решает пользователь). После этого он ждет подтверждения готовности периферийного устройства принимать данные. Когда сигнал DSR примет соответствующее состояние (какое именно — это опять-таки определяет пользователь), в регистр данных помещается байт, который автоматически выталкивается интерфейсом наружу. Прием информации осуществляется аналогично, только в этом случае запрос поступает с периферийного устройства на вход DSR, а компьютер должен подтвердить свою готовность подачей сигнала RTS (рис. 3).

Интерфейс локальной сети

Korvet interface 4.jpg

Этот интерфейс фактически не отличается от последовательного интерфейса. Он также реализован на микросхеме КР580ВВ51А. Адреса ее регистров соответственно 20Н и 21Н. Единственное отличие состоит в том, что к этому интерфейсу подводятся четыре сигнала А0РС, А1РС, А2РС, АЗРС, которые определяют номер устройства, подключенного к локальной сети. Для присваивания компьютеру определенного номера в разъем нужно вставить перемычку, соединяющую один из контактов с шиной +5 В.

Обмен происходит посредством двух сигналов OUTNL и INNL в TTL уровнях. Сигналы АОРС—АЗРС подключены к битам 4—7 порта А ППА-1 (рис. 4).

Интерфейс кассетного магнитофона

Интерфейс позволяет осуществлять обмен данными с кассетным магнитофоном со скоростью 2400 бод. Превращение параллельного кода в последовательный происходит программно, то есть процессор делает это сам. Для выдачи кода в магнитофон служит сигнал CASOUT. Он формируется посредством проводного «или» из двух младших разрядов порта с ППА-2. Код 00 соответствует сигналу низкого уровня, 01 — сигналу среднего уровня и 11 — сигналу высокого уровня. Входной сигнал CASIN через специальное устройство, преобразующее его в TTL уровни, подается на вход разряда 0 порта А ППА-1.

Korvet interface 5.jpg

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

На этом мы заканчиваем описание основных систем ПЭВМ «Корвет».

С. АХМАНОВ, Н. РОЙ, .А. СКУРИХИН

Сканирование и обработка: А. Болтаевский, 26.06.2000