Команды микропроцессорной техники

         

Номер нажатой клавиши определяется по


S2

S3

0



1

1

1

1

0

1

1

1

1

0

1

1

1

1

0

.Это постоянно делается в цикле.

Номер нажатой клавиши определяется по формуле:

Nкл=4i+j

i- номер строки матрицы

j-номер столбца матрицы

Сделаем еще одно важное замечание. Необходимо исключить дребезг клавиш. Для этого одна и та же клавиша опрашивается несколько раз (от 50 до 100). Если все опросы подтвердились, значит, клавиша действительно была нажата.

Индикация.

Индикация бывает двух типов: статическая и динамическая.

. При статической индикации на каждый элемент требуется отдельный порт(см. рис. ниже).



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


1.3.7.      Программируемый контроллер прерываний KP580BH59. Пример применения

Напомним, что система прерываний — это совокупность программных и аппаратных средств, реализующих механизм прерываний.

Аппаратные средства системы прерываний включают выводы микропроцессора:

INTR — вывод для входного сигнала внешнего прерывания. На этот вход поступает выходной сигнал от микросхемы контроллера прерываний КР580ВН59;

INTA — вывод микропроцессора для выходного сигнала подтверждения получения сигнала прерывания микропроцессором. Этот выходной сигнал поступает на одноименный вход INTA микросхемы контроллера прерываний КР580ВН59;

NMI — вывод микропроцессора для входного сигнала немаскируемого прерывания.

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

Итак, центральное место в схеме обработки аппаратных прерываний занимает программируемый контроллер прерываний (ПКП), например, микросхема КР580ВН59 (или КР580ВН59А), позволяющий организовать богатую систему обслуживания прерываний. Эта микросхема может обрабатывать запросы от восьми источников внешних прерываний. Перечислим функции, выполняемые микросхемой контроллера прерываний:

 фиксирование запросов на обработку прерывания от восьми источников, формирование единого запроса на прерывание и подача его на вход INTR микропроцессора;

 формирование номера вектора прерывания и выдача его на шину данных;

 организация приоритетной обработки прерываний;

 запрещение (маскирование) прерываний с определенными номерами.

На рисунке ниже показано схематическое представление внутренней структуры и физических выводов микросхемы КР580ВН59.



Рассмотрим назначение основных структурных компонентов контроллера прерываний

регистр запросов на прерывания (обозначение в литературе IRR - Interrupt Request Register) - восьмиразрядный регистр, фиксирующий поступление сигнала на один из входов ЗПр0-ЗПр7. Фиксация выражается в установке соответствующего бита в единичное состояние;

 регистр маскирования прерываний (или IMR - Interrupt Mask Register — восьмиразрядный регистр, с помощью которого можно запретить обработку запросов на прерывания, поступающих на соответствующие входы (уровни) ЗПр0-ЗПр7. Для запрещения (маскирования) определенных уровней пре­рываний необходимо установить соответствующие биты регистра IMR. Эта операция осуществляется путем программирования порта 21h;

 регистр обслуживаемых прерываний ISR (Interrupt Service Register) — вось­миразрядный регистр, единичное состояние разрядов которого показывает, прерывания каких уровней обрабатываются в данный момент в микропроцессоре;



схема разрешения приоритетов — функцией данного блока является разрешение конфликта при одновременном поступлении запросов на входы ЗПр0-ЗПр7;

схема управления — основной функцией данного блока является организация информационного обмена контроллера прерываний и микропроцессора через шину данных.

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

1)      Контроллер получает запрос на прерывания.

2)      Этот запрос фиксируется в регистре запросов прерываний.

3)      Схема разрешения приоритетов выявляет запрос на прерывание с максимальным приоритетом и пропускает его на вход регистра обслуживания прерываний.

4) Сигнал поступает на схему управления, которая формирует сигнал на выводе Пр . Этот вывод связан с входом микропроцессора INTR. Таким образом, сигнал на входе контроллера достигает микропроцессора. При поступлении сигнала на вход INTR в микропроцессоре происходят следующие процессы:

1. Анализируется флаг IF. Единичное состояние этого флага говорит о том, что аппаратные прерывания разрешены, нулевое — запрещены.

2. Если прерывания запрещены, то запрос на прерывание «повисает» до момента установки IF в единицу.

3. Если прерывания разрешены, микропроцессор выполняет следующие действия:

 сбрасывает флаг IF в ноль;

 формирует сигнал подтверждения прерывания на выводе микропроцес­сора INTA. Этот вывод микропроцессора замкнут на вывод ППр контроллера.

5) Данный вывод внутри контроллера прерываний замкнут на его схему, которая выполняет сразу несколько действий при поступлении этого сигнала:

1. Сбрасывает бит в регистре запросов прерываний, соответствующий уровню поступившего запроса прерывания.

2. Устанавливает в регистре обслуживания прерываний 1 в разряде, соответствующем поступившему запросу прерываний, тем самым, фиксируя факт обработки прерывания в микропроцессоре.

3. Формирует с помощью блока управления номер вектора прерывания, значение которого формируется в буфере данных и далее поступает на выводы контроллера D0.. .D7.


Выводы D0.. , D7 замкнуты на шину данных, по которой номер вектора поступает в микропроцессор. В микропроцессоре этот номер используется для вызова соответствующей процедуры обработки прерывания.

Очень важный момент связан с процессом завершения обработки прерывания. Проблема здесь состоит в следующем. После принятия микропроцессором запроса на обслуживание прерывания в контроллере устанавливается бит в регистре ISR, номер этого бита соответствует уровню прерывания. Установка бита с данным номером блокирует все прерывания уровня, начиная с текущего, и менее приоритетные Если процедура прерывания закончит свою работу, то она сама должна этот бит сбросить, иначе все прерывания этого уровня и менее приоритетные будут игнорироваться. Для осуществления такого сброса необходимо послать код 20h в порт 20h.

MVI A,20h

OUT 20h

Другой не менее интересный момент заключается в том, что микропроцессор при принятии к обработке запроса на прерывание сбросил флаг IF в ноль, тем самым запретив все последующие аппаратные прерывания. Этим обстоятельством программист может пользоваться по своему усмотрению. Поскольку все запросы на прерывания с приоритетом, равным или меньшим текущему, будут запрещены в любом случае (это обусловлено логикой работы контроллера КР580ВН59), программист должен решить, насколько его замыслам могут помешать запросы на более приоритетные прерывания. Если это некритично, то лучше сразу, в начале процедуры обработки прерывания установить флаг IF в единицу, В большинстве случаев эту операцию нужно делать как можно раньше. Для установки флага IF в единицу в системе команд микропроцессора есть специальная команда, не имеющая операндов:

STI - разрешить аппаратные прерывания.

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

1.Жесткий приоритет (в литературе также встречается обозначение FNM (Fully Nested Mode) или режим вложенных прерываний.) В этом режиме каждому входу присваивается фиксированное значение приоритета, причем уровень ЗПр0 имеет наивысший приоритет, a ЗПр7 — наименьший.


Приоритетность прерываний определяет их право на прерывание обработки менее приоритетного прерывания более приоритетным (при условии, конечно, что IF = 1).

2.Циклический приоритет. ( В литературе также встречается обозначение ARM (Automatic Rotation Mode))— режим циклической обработки прерываний. В этом режиме значения приоритетов уровней прерываний также линейно упорядочены, но уже не фиксированным образом, а изменяются после обработки очередного прерывания по следующему принципу: значению приоритета последнего обслуженного прерывания присваивается наимень­шее значение. Следующий по порядку уровень прерывания получает наивысшее значение, и поэтому при одновременном приходе запросов на преры­вания от нескольких источников преимущество будет иметь этот уровень. Это дает возможность обеспечить «равноправие» при обработке прерываний.

Например. До поступления запроса на прерывания:

01234567

Поступил ЗПр3. После его выполнения очередь на обслуживание прерываний будет выглядеть следующим образом:

45670123

Как уже было сказано выше, указатели на процедуры обработки прерываний записаны в таблице векторов прерываний. Но как же МП определяет адрес каждой процедуры обработки? В памяти компьютера таблица векторов прерываний выглядит следующим образом. Имеется общий базовый адрес, от которого через равное количество ячеек (либо 4 - либо 8) находятся адреса соответствующих процедур обработки запросов прерываний. Базовый адрес задается  двумя первыми начальными управляющими словами при начальной инициализации контроллера. Бывают ситуации, когда восьми входов  ЗПр контроллера недостаточно. Тогда систему прерываний реализуют каскадированием. К одному контроллеру, называемому ведущим, подключают до восьми  ведомых контроллеров. Таким образом, при желании число входов ЗПр можно увеличить до 64.




Как же здесь обслуживаются ЗПр? Ведущему (на его вход ВДм подается высокий уровень +5В) с помощью третьего начального управляющего слова сообщается  о том, что к нему подключены ведомые ( на их входы ВДм подается низкий уровень 0).


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

Программирование контроллера прерываний осуществляется через адресное пространство ввода-вывода посредством двух 8-битовых портов с адресами 20h и 21 h. Управление контроллером осуществляется путем посылки в определенной последовательности в эти порты управляющих слов, которые также управляют работой дешифраторов адресов. Управляющие слова делятся на две группы. Это начальные управляющие слова (НУС), задающие начальные установки работы ПКП и текущие управляющие слова (ТУС), позволяющие программировать ПКП во время его работы.

Начальные управляющие слова.

НУС 1.

Осуществляет сброс всех разрядов регистра запросов прерываний, очищает регистр маски, присваивает низший приоритет входу ЗПр7, сбрасывает триггеры обслуживающего регистра.

Формат НУС 1:



После НУС 1 нужно обязательно загружать НУС 2.

НУС 2.

Задает старший байт базового адреса подпрограмм обслуживания прерываний.



Если есть каскадирование, то за НУС 2 должно обязательно следовать НУС 3, которое является разным для ведущего и ведомого контроллеров.

Для ведущего: единицы устанавливаются в тех битах, к которым подключены ведомые.




Для ведомого: в последних трех битах выставляется номер входа ЗПр ведущего, к которому он подключен.

Ведущий ПКП выставляет на шину каскадирования ту трехразрядную кодовую комбинацию, которая записана в D2 D1D0 третьего начального управляющего слова ведомого ПКП, и тот ПКП, у которого эта комбинация совпадает, выставляет соответствующий адрес подпрограммы обработки прерывания.

Текущие управляющие слова.

ТУС 1

Этим управляющим словом программируется регистр маскирования прерываний.




ТУС 2.

Если К=0 и В=1, то будет сброшен бит в обслуживающем регистре прерывания, имеющего наивысший приоритет.



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

Если К=1 и В=1, то будет сброшен бит в обслуживающем регистре с номером      К2 К1 К0 (номер запроса).



ТУС 3.



Режим спецмаскирования. Если во время обслуживания запроса наивысшего приоритета надо обслужить ЗПр с меньшим приоритетом, а сбрасывать ‘1’ в обслуживающем регистре до конца обслуживания запроса нельзя, то применяется спецмаскирование. На время обслуживания ЗПр меньшего приоритета прерывается обслуживание запроса наивысшего приоритета (таким образом можно принимать все ЗПр).

Рассмотрим  теперь более подробную схему каскадирования (см. рис. ниже).



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

Сигналы ППр от МП подаются на все 3 контроллера одновременно. Получив первый сигнал ППр, ведущий контроллер выдает код команды CALL и каскадный код (т.е. номер входа ЗПр, к которому подключен выбранный ведомый) ведомого контроллера с высшим приоритетом. По второму и третьему сигналам ППр выбранный ведомый контроллер выдает 16-тиразрядный адрес подпрограммы обработки соответствующего прерывания (см. рис. ниже).



Поскольку сигнал ЗПр может быть принят микропроцессором в случайный момент времени, то необходимо помнить о следующих моментах:

- необходимо сохранить в стеке (команда PUSH) все регистры, которые используются в подпрограмме обработки прерываний;

- в конце подпрограммы восстановить содержимое всех используемых в подпрограмме регистров из стека (команда POP);

- для процессора I8080 перед возвратом из подпрограммы обработки прерываний надо выполнить команду EI (разрешить прерывание), так как этот МП после ухода на подпрограмму прерываний автоматически выполняет команду DI (запретить прерывания);

- в контроллере надо сбросить бит обслуживания прерывания после обслуживания прерывания.



1.3.8.      Программируемый таймер KP580BИ54. Пример применения

Программируемый таймер (ПТ) может вырабатывает временные интервалы, длительность и форма представления которых задаются программно. Специальные режимы ПТ позволяют:

-         делить входную частоту;

-         вырабатывать однократные временные интервалы по внешнему сигналу или команде МП;

-         вести подсчет внешних импульсов или измерять длительность временного интервала.

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

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



Используемые условные обозначение ПТ:

-         D0…D7 - двунаправленная шина данных;

-        
 (ЧТ), 
(ЗП) - управляющие сигналы чтения и записи;

-         А1, А0 – адресные входы;

-        
 - выбор кристалла (устройства);

-         CLK0 (ТИ0).. CLK2 (ТИ2) - тактовые импульсы;

-         GATE0 (Р0)... GATE2 (Р2) - сигналы разрешения работы канала;

-         OUT0 (Вых0)...OUT2 (Вых2)- выходные сигналы каналов.

-         СЕ - счетчик/таймер;

-         OL - выходная защелка;

-         CR - регистр для хранения констант счета;

-         RSTAT - регистр состояния;



-         CWR - регистр управления.

Назначение основных частей МС.

Буфер шины данных D0…D7 представляет собой двунаправленный 8- разрядный буфер, используемый для сопряжения ПТ с ШД МП-системы. Через буфер принимаются управляющие слова и начальные значения кодов счетчиков и выдаются текущие состояния счетных схем ПТ.

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

Таблица операций ПТ КР580ВИ54

Операция

Сигнал







А1

А0

Запись данных в счетчик 0

0

1

0

0

0

Запись данных в счетчик 1

0

1

0

0

1

Запись данных в счетчик 2

0

1

0

1

0

Запись управляющего слова

0

1

0

1

1

Чтение содержимого счетчика 0

0

0

1

0

0

Чтение содержимого счетчика 1

0

0

1

0

1

Чтение содержимого счетчика 2

0

0

1

1

0

Отключение таймера от ШД

1

Х

Х

Х

Х

(выходы D - в высокоимпедансное состояние)

0

1

1

Х

Х

Счетчики каналов СЕ представляют собой 16-разрядные вычитающие счетчики с возможностью установки произвольного начального кода. Счет может выполняться в двоичном или двоично-десятичном коде. Входными сигналами каждого счетчика являются тактовые импульсы CLK, по отрицательным фронтам которых содержимое счетчика уменьшается на 1, и сигнал разрешения работы канала, разрешающий (GATE = 1) и запрещающий (GATE = 0) счет. Выходной сигнал канала формирует временной интервал в соответствии с запрограммированным режимом. Счетчики каналов таймера полностью независимы, Каждый из них может иметь свой режим работы и свой начальный код. Чтение содержимого каждого счетчика выполняется либо при прекращении счета, либо без его приостановки (режим чтения "на лету").

Выходная защелка OL 16-разрядная, необходима для запоминания и хранения содержимого счетчика СЕ по командам "Чтение ‘на лету’" и "Обратное чтение".



Регистр для хранения констант счета CR 16-разрядный, предназначен для хранения констант счета, содержимое регистра изменяется только при перезагрузке счетчика или при перепрограммировании режима его работы (запись управляющего слова).

Регистр состояния RSTAT 8-разрядный регистр состояния RSTAT содержит код типа счета, код режима работы канала, код чтения/записи констант счета, признак перезагрузки констант и состояние выхода OUT, содержимое RSTAT защелкивается в STATL по команде "Обратное чтение";

Регистр управления CWR 6-разрядный, предназначен для приема и хранения кода управляющего слова (разряды D5-D0), который задает режим работы канала, определяет тип счета и последовательность загрузки констант счета.

Режимы работы.

Каждый канал таймера может работать в одном из шести режимов.

Режим 0. Режим счетчика событий.

Обеспечивает выработку единичного выходного сигнала после поступления на ПТ заданного количества импульсов CLK

Выходной сигнал OUT устанавливается в 0 (низкий уровень) в момент загрузки управляющего слова, задающего данный режим при программировании таймера. После записи начального кода начинается счет импульсов CLK. Отсчитав заданное количество импульсов, выходной сигнал OUT устанавливается в 1 (высокий уровень) по отрицательному фронту CLK и сохраняет это значение до занесения следующего начального кода.



Режим 1. Режим программируемого одновибратора.

 



Обеспечивает выработку временного интервала, равного заданному количеству периодов CLK .

Выходной сигнал OUT в исходном состоянии имеет высокий уровень (т. е. 1) и принимает нулевые значения на время, пропорциональное значению начального кода счетчика. Интервал формируется от первого отрицательного фронта сигнала CLK после установки разрешающего входного сигнала GATE в единичном значении.

Режим 2. В режиме делителя частоты.

Таймер генерирует периодический сигнал с частотой в N раз меньшей, чем частота тактовых импульсов CLK, N - начальный код счетчика.




В течение N- 1 такта каждого периода выходной сигнал OUT равен 1, на последнем такте периода - нулю. Перезагрузка счетчика между двумя выходными импульсами приводит к изменению величины следующего периода. Формирование выходного сигнала осуществляется при GATE = 1 непосредственно после загрузки начального кода счетчика.

Режим 3. Режим генератора меандра.

Аналогичен режиму делителя частоты за исключением того, что выходной сигнал в течение первой половины периода равен 1, а во второй половине устанавливается в ноль. Если начальный код счетчика нечетен, то единичный выходной сигнал на один такт дольше нулевого.



Режим 4. В режиме программного стробирования.

Таймер формирует временной интервал, отсчитываемый от первого отрицательного фронта сигнала CLK после окончания записи кода N в ПТ.

Длительность интервала равна N периодам тактового сигнала. После окончания интервала выходной сигнал принимает нулевое значение на один период сигнала CLK. Если счетчик перезагружается во время счета, то предыдущий интервал прерывается и



 формируется новый - с учетом принятого значения начального кода.

Режим 5. Режим аппаратного стробирования.

Аналогичен режиму программного стробирования, однако формирование интервала здесь начинается после установки входного сигнала GATE из 0 в 1. Для генерирования следующего интервала сигнал GATE должен быть предварительно установлен в ноль. Если это произойдет до окончания формирования текущего интервала, то он прерывается,



 и начинается формирование нового интервала.

Программирование таймера

 

Программирование таймера осуществляется занесением управляющих слов для каждого счетчика и их начальных кодов. Отдельные каналы могут программироваться в любой последовательности. Начальный код счетчика может быть загружен не сразу после управляющего кода, а в любой последующий момент времени. Загрузка отдельных байтов начального слова может выполняться различным способом в соответствии с запрограммированной последовательностью.



Формат управляющего слова ПТ КР580ВИ54 приведен на рис.



Часто желательно читать содержимое счетчика без нарушения процесса счета. Имеется три метода чтения счетчиков Простое чтение, “Чтение на ‘лету’”, "Обратное чтение".

1. Простое чтение

Осуществляется путем выполнения обычной операции чтения. Для обеспечения стабильного показания счетчика работа счетчика должна быть приостановлена путем временного снятия сигнала разрешения (т.е. подачей GATE=0), либо путем прекращения подачи сигнала CLK на данный счетчик (с помощью внешней логической схемы)

2. “Чтение на ‘лету’”

Осуществляется путем подачи в таймер специальной команды “Чтение на ‘лету’” и последующего чтения. Во втором случае программист может обеспечить считывание без прерывания процесса счета путем подачи команды чтения счетчика на "лету", которая характеризуется следующими значениями разрядов управляющего слова:

-         D7, D6 содержит код канала (т.е. номер счетчика);

-         D5, D4 равны 0 (задают режим чтения счетчика на "лету");

-         D3...D0 имеют произвольное значение.

-          

Примеры программирования ПТ на разные режимы работы и его инициализации.

1. Программирование ПТ

MVI       A,00110101B      ;      Счетчик 0 в режим делителя частоты (режим 2),

OUT      73H                      ;      двоично-десятичный счет

MVI       A,01010011B      ;      Счетчик 1 в режим программируемого одновибратора

OUT      73H                      ;      (режим 1), двоично-десятичный счет      

MVI       A,10110000B      ;      Счетчик 2 в режим счетчика событий (режим 0),

OUT      73H                      ;      двоичный счет

2. Инициализация ПТ

MVI       A,0                       ;      Коэффициент деления

OUT      70H                      ;      Счетчик 0 равен 10103

MVI       A,00010000B      ;     



OUT      70H                      ;     

MVI       A,5H                    ;      Длительность выделенного интервала составляет 5

                                           ;      периодов входной последовательности импульсов

                                           ;      ТИ1

OUT      71H                      ;     

MVI       A,0                       ;      Счетчик 1 будет считать число входных импульсов

                                          ;      ТИ2 до максимально возможного значения


OUT      72H                      ;

             

Интерфейс с частотным датчиком.

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



Пример схемы сопряжения частотного датчика (сигнал Х) с МП-системой с помощью таймера КР580ВИ53 приведен на рисунке ниже.



Существует два способа измерения частоты.

1. Измерение частоты.

 Задаем время измерения tизм. Частоту fизм определяем по количеству периодов Тизм, которые уместились в интервал времени tизм. Время измерения задается с помощью эталонных импульсов:

tизм=Тэт * кэт.

Тэт – эталонный импульс;

кэт – количество импульсов.

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

2.Измерение периода.

Период сигнала датчика вычисляется по тому, сколько эталонных импульсов уместилось в периоде датчика:

Тд = Тэт * кэт.

Тэт –эталонный импульс;

кэт – количество эталонных импульсов внутри измеряемого периода сигнала датчика.

Погрешность метода сравнима с Тэт. Возникает проблема создания tизм= Тд.

Пример.

Измерим период сигнала датчика с помощью программируемого таймера. Необходимо сформировать tизм, кратное заданному количеству измеряемых периодов Тд. Используем режим одновибратора для формирования tизм. Эталонные импульсы будем подсчитывать с помощью канала, запрограммированного в нулевом режиме.

Таким образом:



1.Первый канал надо запрограммировать в режим одновибратора, чтобы сформировать интервал измерения tизм, (кд – число периодов сигнала датчика – задается программно).

2.Вых.1 через инвертор подаем на вход Р2 второго канала, который программируем в режим счетчика событий.

3.Счетчик второго канала обнуляем.

4.Начало измерений запускаем выходным сигналом одного из выходов порта управления (перепад с низкого уровня на высокий, то есть сначала в этот разряд записывается 0, а потом - 1).

5.Процесс измерения заканчивается через интервал времени tизм путем снятия высокого уровня сигнала Р2.

6.Читаем содержимое счетчика канала 2.

Теперь в счетчике будет

0000h                         0

0FFFFh          -1

0FFFEh          -2

.

.

.

-кэт

Чтобы получить кэт, надо изменить знак у прочитанного из второго канала значения.

 

1.3.9.      Контроллер прямого доступа KP580BТ57

Ввод-вывод в режиме прямого доступа к памяти (ПДП).

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


рис. ниже):

1)   От ВУ посылается сигнал ЗПДП (запрос прямого доступа к памяти) к КПДП;

2)   КПДП выставляет сигнал ЗЗх (запрос захвата) к МП. МП, получив сигнал ЗЗх, отключается от системной магистрали и выставляет сигнал ПЗх (подтверждение захвата) к КПДП;

3)   КПДП, получив ПЗх, выставляет сигнал ППДП (подтверждение прямого доступа к памяти) для ВУ и сигнал, запрещающий адресацию к ВУ. Далее КПДП начинает выполнять функции процессора по управлению системной магистралью. КПДП узнает адрес ячейки, объем передаваемых данных и направление обмена от МП.



Рассмотрим конкретный КПДП КР580ВТ57

 КПДП КР580ВТ57.

Структурная схема контроллера КР580ВТ57 приведена на рисунке ниже, где приняты следующие обозначения:

ЗПДП0..ЗПДП3 – запросы внешних устройств;

ППДП0..ППДП3 – подтверждение прямого доступа для внешних устройств;

                                   ЗЗх – запрос захвата магистрали;

ПЗх - подтверждение захвата микропроцессором;

ГТ - готовность устройства;

ТИ – тактовые импульсы;

Сбр – начальная установка контроллера;

ВК – выбор микросхемы;

А3..А0 – двунаправленная адресная шина для адресации внутренних регистров контроллера (входы) или выдачи младших четырех разрядов адреса памяти (выходы);

А7..А4 – разряды адреса памяти;

Стр А – строб адреса, используется для загрузки выдаваемого контроллером старшего байта адреса памяти во внешний регистр-защелку;

РА – разрешение адреса используется для блокировки во время режима ПДП всех устройств МП-системы, не имеющих прямого доступа к памяти;

ЗпП, ЧтП – выходные линии записи и чтения памяти;

ЗпВВ,ЧтВВ – двунаправленные линии, являющие с одной стороны входами при программировании контроллера и чтения его внутренних регистров, а с другой стороны выходами при обмене ПДП;

КС – конец счета;

М128 – при передаче блоками каждые 128 байт сопровождаются импульсом.



      Двунаправленный 8-разрядный буфер данных, сопрягающий КПДП с ШД системы, предназначен для приема управляющего слова, выдачи старшего байта адреса ОЗУ, содержимого счетчика адресов и счетчика циклов и слова состояния контроллера.



Блок управления обеспечивает синхронизацию отдельных узлов КПДП при его программировании, чтении его состояния и собственно обмена.

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

Операции чтения и записи, реализуемые блоком управления.

Операции

Сигнал







А3

Запись управляющих слов в счетчики каналов

0

0

1

0

Запись управляющего слова в регистр режима

0

0

1

1

Чтение содержимого счетчика каналов

0

1

0

0

Чтение регистра состояния

0

1

0

1

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

Каналы 0…3 содержат по два 16-разрядных счетчика:

                  - счетчик адресов;

                  - счетчик циклов.

Счетчик адресов задает текущий адрес ячейки памяти, с которой выполняется обмен. Содержимое 14-ти младших разрядов счетчика циклов, уменьшенное на 1, определяет количество циклов ПДП, а два старших его бита А14 и А15 отведены для задания режима обмена. (А14=1 – запись, А15=1 – чтение). Каждый канал включает в себя схему приема запроса на прямой доступ, которая в соответствии с разрешением блока приоритетов генерирует сигнал подтверждения ПДП. Блок приоритетов обеспечивает очередность обслуживания одновременных запросов со стороны нескольких ПУ либо по жесткому приоритету, либо по назначенному приоритету с учетом номера обслуживаемого канала.

Контроллер КР580ВТ57 может быть запрограммирован с помощью МП для работы в различных режимах. При этом МП адресуется к КПДП как к обычному модулю ввода-вывода.


Такой режим работы контроллера называется подчиненным режимом и служит для пересылки команд и адресов КПДП и для получения от него слова состояния (т.е. информации о состоянии контроллера). В основном режиме контроллер сначала запрашивает у МП системные шины с помощью сигнала 33х. После отключения МП от шин контроллер дает команду памяти записать данные с ШД (или выставить данные на ШД) и одновременно периферийному устройству выставить данные на ШД (или считать данные с ШД). Таким образом, информация передается между памятью и ПУ под управлением КПДП с помощью сигналов
,
,
,
.

При использовании КПДП требуется две различные конфигурации адресной шины: одна для подчиненного режима, другая – для основного. В подчиненном режиме (сигнал РА контроллера выключен) адрес формирует МП на ША А0…А15. В основном режиме (сигнал РА включен) старший байт адреса на линиях А8…А15 формирует контроллер со своих линий D0…D7, которые мультиплексно подключены к этим адресным линиям. Этот байт адреса фиксируется во внешнем буферном регистре управляющим сигналом СтрА. Младший байт адреса выдается на ША непосредственно линиями А0…А7 контроллера.

Программирование КПДП.

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

Адресации внутренних регистров КПДП

Регистр

Линии адреса

Регистр

Линии адреса

А3

А2

А1

А0

А3

А2

А1

А0

Счетчик  А0

0

0

0

0

Счетчик  Ц2

0

1

0

1

Счетчик  Ц0

0

0

0

1

Счетчик А3

0

1

1

0

Счетчик  А1

0

0

1

0

Счетчик Ц3

0

1

1

1

Счетчик  Ц1

0

0

1

1

Регистр режима 

1

0

0

0

Счетчик  А2

0

1

0

0

Регистр состояния

1

0

0

0




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

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

Формат слова режима КПДП.



Четыре младших бита D0…D3 определяют состояние соответствующих каналов ПДП. При Di=0 (i й канал запрещен) контроллер не реагирует на запрос ЗПДПi. При Di=1 (i й канал разрешен) контроллер реагирует на запрос ЗПДПi.

Бит D4=0 определяет фиксированный приоритет (канал 0 имеет наивысший, а канал 3 – самый низкий приоритет) или циклический приоритет  при D4=1, когда приоритеты каналов меняются после передачи каждого байта.

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

После установки бита D5 расширенный (удлиненный) записи несколько увеличивается продолжительность управляющих сигналов
 и
 контроллера. Это позволяет не вводить дополнительного состояния ожидания с помощью сигнала Гт.

Если установлен бит D6 (режим останова КС), то после формирования сигнала КС по окончании передачи ПДП соответствующий канал ПДП запрещается. Дальнейшие передачи в этом канале возможны только после повторной загрузки регистра режима контроллера. Если бит D6=0, то появление сигнала КС не влияет на состояние канала ПДП, и закончить операции ПДП должно ПУ.



Установленный бит D7 автозагрузки позволяет использовать канал 2 для повторных передач предыдущего блока данных или сцепленных блоков данных без программного вмешательства между передачами блоков. Для этого счетчики канала 2 инициализируются обычным образом, а в счетчики канала 3 загружаются параметры повторной инициализации канала 2. После завершения в канале 2 передачи первого блока данных параметры из счетчиков канала 3 загружаются в счетчики канала 2. При этом состояние бита D6 в регистре режима не влияет на работу канала 2. В режиме автозагрузки, во-первых, при программировании канала 2 его начальные параметры автоматически дублируются в счетчиках канала 3, что в дальнейшем и обеспечивает повторяющиеся передачи одного и того же блока данных. Во-вторых, адрес блока, длина блока и информация о режиме для следующей передачи блока по каналу 2 могут быть посланы в канал 3 во время работы канала 2.

Слово состояния контроллера



Слово состояния КПДП содержит четыре бита КС0…КС3. Эти биты указывают какие каналы сгенерировали сигнал КС после того, как слово состояния было прочитано в последний раз. Таким образом, биты состояния КС0…КС3 указывают, была ли завершена передача блока данных в течение этого промежутка времени.

Признак обновления D4 устанавливается, когда в режиме автозагрузки параметры канала 3 передаются в счетчики канала 2, т.е. обновляется содержимое счетчиков канала 2. Следовательно, чтобы предотвратить преждевременное обновление информации в канале 3, необходимо считать слово состояния и проверить признак обновления прежде, чем сделать попытку перезагрузить канал 3. Этот признак можно перевести в нулевое состояние сигналом Сбр или отменой режима автозагрузки. Кроме того, признак обновления автоматически сбрасывается после обновления содержимого счетчиков канала 2 и передачи первого блока данных.

1.3.10.  Программируемый связной адаптер KP580BB51

Общие сведения

При всем удобстве параллельной передачи информации такой способ хорош лишь при передаче на небольшие расстояния.



            Основная проблема при последовательной передачи информации заключается в обеспечении битовой и символьной синхронизации. Эту проблему можно решить с помощью асинхронной посылки.

. Асинхронная посылка начинается старт-битом низкого уровня, а заканчивается стоп-битом высокого уровня (см. рис. ниже). Перепадом с высокого уровня напряжения на низкое источник говорит, что будут передаваться данные. Приемник при этом запускает часы. О длительности интервалов Dt источник и приемник договариваются заранее. Отсчитав половину длительности предполагаемого старт-бита, приемник проверяет уровень входного сигнала. Если он остается низким, то приемник начинает принимать данные, поскольку вслед за старт-битом  идут информационные биты. Об их количестве источник и приемник также договариваются заранее (от 5 до 8 информационных битов). Приемник на середине длительности очередного интервала Dt считывает уровень сигнала.



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

В конце передачи всегда проверяется значение уровня стоп - бита. Он должен быть высоким, в противном случае выставляется ошибка "отсутствие стоп-бита".

Рассмотрим подробнее, как происходит обмен данными между источником и приемником.

Источник.

1)      Из МП байт информации поступает в буфер передатчика.

2)      К этому байту в регистре сдвига передатчика подсоединяются -

-    старт - бит

-         бит контроля

-         стоп бит.

Теперь окончательно сформирована асинхронная посылка (см. рис. ниже).



3)      Асинхронная посылка побитно выталкивается в линию передачи данных приемнику.



Приемник.

1)      С входа приемника биты последовательно вталкиваются в сдвиговый регистр приемника (см. рис. ниже).



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

3)      Если ошибок нет, МП вводит принятый байт из буфера.

Надо позаботиться о том, чтобы на временном интервале асинхронной посылки 10Dt ошибка рассогласования хода часов источника и приемника e не превышала значение 1/2Dt. Если e будет больше, то будет либо недополучен бит, либо получен лишний бит. Следовательно, относительная ошибка рассогласования часов источника и приемника не должна превышать 5%. Напомним, асинхронная посылка обеспечивает и побитовую и побайтовую синхронизацию.

Программируемый связной адаптер (ПСА) КР580ВВ51 представляет собой универсальный синхронно - асинхронный приемо - передатчик, который можно запрограммировать в режимы асинхронной и синхронной передачи.

Место КР580ВВ51 в МПС показано на рисунке ниже.



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

Напомним, что если линия длинная, то в ней происходит затухание сигнала. Для борьбы с этим явлением используют модуляцию с помощью модема, который при передаче данных осуществляет модуляцию передаваемого сигнала, а при приеме модулированного сигнала производит обратную операцию – демодуляцию, т.е. выделение полезного сигнала.

Структурная схема ПСА КР580ВВ51 приведена на рисунке ниже.

 



                                               Структурная схема ПСА КР580ВВ51

На рисунке приняты следующие обозначения.

Терминал - одним из вариантов терминала может служить модем.

ГПд - сигнал, свидетельствующий о том, что буфер передатчика пуст и передатчик готов к приему новой порции данных из МП.



КПд- сигнал, свидетельствующий о том, что передатчик закончил передачу.

СПд - синхронизация передатчика, управляет скоростью передачи символа. Скорость передачи стандартизована, она задается при инициализации ПСА. В синхронном режиме работы частота синхронизации равна скорости передачи и множитель кратности равен единице (1х), а в асинхронном режиме передачи частота синхронизации выше скорости передачи в целое число раз, т.е. кратна скорости. Значение множителя кратности определяется частью слова режима и может равняться (1х), (16х) или (64х).

ГПр - сигнал, свидетельствующий о том, что буфер приемника полон и приемник адаптера готов передавать полученный символ в МП.

СПр – синхронизация приемника, управляет скоростью приема символа. Скорость приема стандартизована, она задается при инициализации ПСА. В синхронном режиме работы частота синхронизации равна скорости передачи и множитель кратности равен единице (1х), а в асинхронном режиме передачи частота синхронизации выше скорости передачи в целое число раз, т.е. кратна скорости. Значение множителя кратности определяется частью слова режима и может равняться (1х), (16х) или (64х).

Вид синхронизации – синхронизация в синхронном режиме может быть внешней и внутренней.

ЗПдТ - запрос передатчика терминала. Может быть использован как запрос о готовности терминала к передаче данных в адаптер.

ГПдТ - готовность передатчика терминала. Этот сигнал можно трактовать как готовность модема к работе.

ЗПрТ - запрос приемника терминала. Может быть использован для  запроса о готовности приемника терминала принять данные от адаптера.

ГПрТ - готовность приемника терминала. Сообщает о готовности приемника терминала принять данные от адаптера.

Программирование ПСА.

При программировании ПСА в него должен быть загружен набор управляющих слов. Управляющие слова подразделяются на два формата:

            - слово режима (начальное управляющее слово)

            - слово команды (текущее слово)

Слово режима определяет общие характеристики ПСА, поэтому оно обязательно должно следовать сразу же после операции сброса (внешней или внутренней).


После записи слова режима в адаптер можно вводить синхросимволы или слова команды.

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

 



Формат слова режима.

 

D7

D6

D5

D4

D3

Содержание раздела