Смекни!
smekni.com

Проектирование цифрового сглаживающего фильтра (стр. 2 из 4)

Таблица 1: Описание прерываний процессора ВМ85

Имя Приоритет Стартовый адрес Вид сигнала
TRAP 1 24CH Переход из 0 в 1, затем в 1
RST 7.5 2 3CH Переход из 0 в 1
RST 7.5 3 34CH 1
RST 7.5 4 2CH 1
INTR 5 Вводится при подтверждении прерывания 1

Из таблицы видно, что стартовые адреса подпрограмм обслуживания прерываний находятся в области точек входа по команде RSTn, n=0-7, но расположены посередине между ними. Это разъясняет ряд наименований , принятых для запросов RSTn.5, n=5-7.

Все запросы, за исключением TRAP, могут быть запрещены или разрешены одновременно с помощью команд EI, DI, управляющих общим флагом разрешения прерываний IEN. Существует также возможность раздельного маскирования запросов типа RST независимо др. от друга, которое выполняется с помощью команды SIM. По команде SIMобеспечивается установка нового состояния маски в соответствии с содержимым аккумулятора. При выполнении этой команды содержимое аккумулятора интерпретируется следующим образом.

А7 А6 А5 А4 А3 А2 А1 А0
SOD SDEN -- R 7.5 MSEN M 7.5 M 6.5 M 5.5

M 7.5, M 6.5, M 5.5 – маски соответствующего прерывания

MSEN – разрешение установки маски прерываний

R 7.5 – бит, сбрасывающий триггер, где фиксируются запрос внешнего прерывания по входу RST 7.5

SDEN – Разрешение вывода данных, которые находятся в разряде A7

SOD – данные предназначенные для вывода через линию SOD

Установленная маска запрещает соответствующее прерывание. Смена маски в соответствии с А0-А2 выполняется только при разрешении её установки: MSEN=1. В противном случае функция установки маски подавляется.

Текущее состояние масок прерываний может быть прочитано по команде RIM.

При включении источника питания или пуске МП все индивидуальные маски устанавливаются, а флаг разрешения прерывания IEN сбрасывается, что приводит к запрету прерываний. Приём какого – либо запроса на прерывание тоже вызывает общее запрещение всех маскируемых прерываний, но при сохранении состояния индивидуальных масок. Кроме этого запрос TRAP сохраняет и состояние флага общего разрешения, которое может быть прочитано только после первой команды RIM. Вторая команда даёт результат текущего состояния маски, показывающего общий запрет прерываний.

В нашем случае маскирование с помощью режимного слова имеет вид:

Установка маски осуществляется по команде SIM. При этом режимное слово находится в аккумуляторе.

Настройка портов ввода-вывода

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

В зависимости от содержания РУС каждый порт (А и В) может работать в двух режимах: простого ввода – вывода ( без обмена управляющими сигналами) или ввода – вывода с квитированием сообщения ( с обменом управляющими сигналами). В режиме 0-го программируемого параллельного интерфейса (ППИ) порт С может осуществлять ввод- вывод параллельно по шести линиям.

Режим с квитированием сообщений соответствует режиму 1 ППИ. В этом случае линии порта С разбиваются на две группы , одна из которых обеспечивает обмен управляющими сигналами для порта А, а другая для порта В.Варианты использования линий порта С и соответственно организация работы всех портов представлены в следующей таблице:


Линии порта С Варианты использования линии
ALT 3 ALT4
РС 0 INTR A INTR A
РС1 BF A BF A
РС2 STB A STB A
РС3 Порт вывода INTR B
РС4 То же BF B
РС5 >> STB B

Примечание: Вариант ALT1 соответствует использованию всех линий порта С в качестве портов ввода, а вариант ALT2 – в качестве портов вывода.

где INTRA/INTRB (InterruptRequest)- запрос прерывания по порту A/B;

BFA/BFB (BufferFull) – буфер порта А/В полон/заняты

STAA/STAB (Strobe)- строб записи, соответствующий порту А/В

Временные диаграммы , поясняющие обмен управляющими сигналами при работе портов А и В в режиме с квитированием сообщений, представлены на рисунке:

Временная диаграмма работы порта А(В) со стробированием в режиме ввода

По переднему фронту импульса на линии STBA, который формируется таймером, формируется сигнал BF (PC1) "буфер полон" который используется в качестве сигнала квитирования. По заднему фронту импульса STBA формируется сигнал INTR (PC0) который является сигналом прерывания.

С приходом сигнала запроса прерывания RST 7,5 процессор переходит в режим обслуживания прерываний. Соответственно программе обслуживания прерываний 7,5 производится считывание данных из порта ввода А.Затем процессор начинает обрабатывать данные в соответствии с заданным алгоритмом. По окончанию вычислений процессор выдаёт данные в порт В. И процесс повторяется вновь.

Сигналы BF и INTR остаются активными до выполнения микропроцессором команды INPORT, по которой содержимое буферного регистра порта А вводится МП по сигналу RD. С началом импульса RD сбрасывается сигнал INTR , а с его окончанием – сигнал BF. Таким образом , сигнал BF =1 сохраняется в течении всего времени обращения к буферному регистру и хранению данных в нём. Сигнал INTR=1 сохраняется, пока записанный в регистр байт данных ожидает ввода в МП.

Если в МПС используется система прерываний, то выход INTR соединяется с соответствующим входом прерывания. Если она не используется, то МП может получить информацию о наличии сигнала прерывания и о состоянии других управляющих сигналов путём чтения слова состояния из РСС и анализа его содержимого.

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

Режим работы портов, а также управление таймером состоит в том, что в регистр управляющего слова записывается байт формат которого имеет следующий вид:


Биты D0, D1 управляющего слова задают направление передачи данных через порты А и В;

Биты D2,D3 определяют вариант использования порта С;

Биты D4,D5 разрешают или запрещают выработку сигналов прерывания INTR;

Биты D6,D7 содержат код TM2,TM1 команды управления таймером.

В нашем случае этот байт будет равен:

Запись в управляющий регистр производится записью режимного слова в порт с адресом 08H.

Пространство ввода-вывода я распределил следующим образом:

08Н – РУС (Регистр управляющего слова) и РСС (Регистр словосостояния) ;

09Н – Порт А (Порт ввода)

0АН –Порт В (Порт вывода)

0ВН – Порт С (Порт обработки сигнала квитирования)

0СН – Регистр хранения таймера (младший байт)

0DH - Регистр хранения таймера (старший байт)

Адресное пространство памяти, исходя из её объёма, распределено следующим образом:

Настройка таймера

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

Для обеспечения частоты дискретизации 1.2 КГц коэффициент счёта таймера должен равняться:

Запись управляющего слова осуществляется в два регистра таймера старший и младший, микросхемы РУ55.

Загрузка управляющего слова производится в порты

C9HПорт ОD- старший байт

C4HПорт ОС- младший байт

Функционирование таймера. Блок таймера содержит 14-битовый вычитающий счетчик, 16-битовый регистр хранения, схему формирования выходного сигнала и схему управления таймером. Счетчик выполняет основную функцию данного блока, заключающуюся в подсчете импульсов, поступающих извне на вход TIMERIN. Регистр хранения в 14 младших битах содержит коэффициент счета N, который загружается в него при подготовке таймера к работе и задает начальное состояние счетчика. Число N может иметь любое значение от 2Н до 3FFFN. Два старших бита этого регистра составляют регистр режима (RR), в котором хранится код ТМ2ТМ1 заданного режима работы таймера. Схема формирования обеспечивает форму сигнала TIMEROUT в соответствии с режимом работы таймера. Этот сигнал обязательно изменяет свое значение в момент окончания счета. Схема управления реализует заданный режим работы таймера и, в частности, осуществляет перезагрузку числа N из регистра в счетчик при организации циклической (непрерывной) работы таймера. Программирование таймера состоит в загрузке двухбайтового слова в регистр хранения, после чего осуществляется запуск счетчика с помощью специальной команды (предусмотрен только программный запуск таймера). Во время работы счетчик уменьшает свое содержимое по фронту каждого импульса, поступающего на вход TIMERIN. Когда требуется производить отсчет реального времени, этот вход обычно соединяется с выходом PCLK генератора. При обращении к таймеру используются два адреса: младший байт N загружается по адресу А2А1АО = 101, старший — по адресу А2А1АО=101. Это позволяет загружать указанные байты в любом порядке.