Смекни!
smekni.com

Контроллер системы автоматизации (стр. 2 из 3)

Распределение адресного пространства

Микропроцессор К1810ВМ86 позволяет адресовать до 1Мбайт памяти. Так как основной задачей разрабатываемого контроллера является прием информации, преобразование в другой формат и передача ее следующему корреспонденту, то распределение память становится важной задачей. Особенности процессора заставляют выбирать такую структуру памяти, при которой младшие адреса занимает ОЗУ, а старшие – ПЗУ. Поставленная задача не требует реализации полного объема возможной памяти, поэтому используется следующая структура памяти:

· адреса 0000 – 3FFFh соответствуют ОЗУ;

· адреса 4000 – 7FFFh соответствуют ПЗУ.

· Порты ввода-вывода, регистры управления таймера и программируемого контроллера прерывания также имеют фиксированные адреса:

· адреса 0000-0006 соответствуют порту ввода-вывода, предназначенному для приема данных;

· адреса 0008-000Еh соответствуют порту ввода-вывода, предназначенному для передачи данных;

· адреса 0010-0016h соответствуют управляющим регистрам программируемого таймера;

· адреса 0018-001Ah соответствуют управляющим регистрам программируемого контроллера прерываний.

Функциональная схема контроллера

Функциональная схема контроллера приведена в приложении.

Параллельный порт ввода-вывода PPI (DD15) предназначен для обеспечения приема информации в соответствии с протоколом X-Modem. Поэтому необходима двунаправленная связь. Фактически на микросхеме реализовано два интерфейса ИРПР-М. Один из них, для приема байтов информации, имеет следующую организацию:

сигналы DIN 0 - DIN 7 – выводы РА0 – РА7;

сигнал STROBEIN – вывод РС4;

сигналы BUSYINи ACKNLGIN – выводы РС0 и РС1 соответственно.

При приеме байта, он поступает на линии порта А (сигналы DIN 0 – DIN 7). Для передачи управляющих символов используется порт В. При этом служебные сигналы подключаются к следующим линиям:

сигнал STROBEOUT – вывод РС2;

сигналы BUSYOUT и ACKNLGOUT – выводы РС5 и РС6 соответственно.

Для передачи информации используется параллельный порт ввода-вывода PPI (DD16) На нем также реализован интерфейс ИРПР-М.Данные выдаются через порт А. Сигнал STROBE поступает в линию связи через нулевой разряд порта В. Сигналы готовности приемника BUSY и ACKNLG поступают в порт С (разряды 1 и 0 соответственно). Так как импульс ACKNLG имеет длительность около 5 мкс, то его программная фиксация в режиме параллельной обработки нескольких задач затруднена. Предусмотрена аппаратная защелка этого сигнала с помощью триггера. После получения сигнала ACKNLG триггер программно сбрасывается. Аналогичная схема присутствует и в блоке приема данных.

Индикатор готовности выполнен на дешифраторе DD28. Его адресные входы подсоединены к линиям 4, 5, 6 порта С микросхемы DD16. Регистр в нормальном рабочем режиме управляет индикатором готовности системы, а в случае конфликтной ситуации отображает номер “зависшей” задачи.

Программируемый таймер используется для отсчета интервалов времени для контроля выполнения задач и вызова прерываний для самопроверки контроллера – подсчета контрольной суммы ПЗУ. В качестве счетных импульсов к таймеру подведен сигнал с выхода PCLK системного генератора, имеющий частоту, в два раза меньшую, чем тактовая частота процессора. При частоте процессора 5 МГц таймер отсчитывает импульсы с частотой 2,5 МГц. При этом максимальная задержка, обеспечиваемая таймером равна 26 мс.

Программируемый контроллер прерываний служит для упорядочения запросов на прерывание по приоритету и во времени. В данной схеме обслуживается два прерывания: контроль прохождения контрольной точки задачами и самодиагностика. Запросы на прерывание поступают от таймера и подаются на входы IRQ0, IRQ1 и IRQ2.

Для выбора нужной микросхемы при выполнении операций ввода-вывода используется дешифратор DD29, преобразующий два разряда адресной шины AB2 и AB3 в сигналы выбора CS. Сигналы выбора кристалла CS формируются только если один из сигналов IOR и IOW находится в активном состоянии. Необходимым условием выбора внешних по отношению к процессору устройств является равенство нулю младшего адресного разрядаAB0. Для хранения адреса в течение всего цикла шины используются регистры-защелки DD11 и DD12, управляемые сигналов ALE процессора. Шина данных умощняется за счет подключения шинных формирователей.

Память контроллера организована на четырех микросхемах; две из них образуют ПЗУ (DD2 и DD3) и две другие – ОЗУ (DD7 и DD8). Память выполнена в виде двух банков с целью передачи как двухбайтовых слов, так и отдельных байтов. Для выбора соответствующего банка используются сигнал BHE (разрешение старшего банка) и младший разряд адресной шины AB0. Разряд шины адреса AB14 служит для выбора ПЗУ или ОЗУ. Также в качестве управляющих сигналов, задающих направление передачи применяются MEMR и MEMW.

Шина управления состоит из четырех сигналов MEMR, MEMW, IOR, IOW, которые формируются на основе сигналов процессора RD, WR, M/IO.

В таблице 2.1 показано соответствие основных элементов структурной схемы контроллера используемым микросхемам.

Таблица 2.1 – Используемые микросхемы.

Обозначение на схеме Микросхема
DD1 К1810 ГФ84
DD2, DD3 К556 РТ16
DD6 К1810 ВМ86
DD7, DD8 К537 РУ17
DD11, DD12 К1810 ИР82
DD13, DD14 К1810 ВА86
DD15, DD16 К580 ВВ55
DD17 К1810 ВИ54
DD18 К1810 ВН59А
DD27 К155 ТМ2
DD28 К155 ИР1
DD29 К155 ИД3

РАЗРАБОТКА РАБОЧЕЙ ПРОГРАММЫ КОНТРОЛЛЕРА

Структура данных

В данном проекте фоновым процессом является передача данных. В связи с этим опишем используемые переменные и структуры.

К основной структуре можно отнести два массива. Один из них служит буфером приемника и занимает в памяти ячейки с 0000 по 2FFFh. Указателем в этом массиве служит переменная RecCount. Второй массив SendBuf является буфером передатчика. За его заполнением следит отдельная задача, не рассматриваемая в данном проекте. При заполнении этого буфера данными флаг BufReady устанавливается в единичное состояние. Буфер SendBuf имеет размер 255 байт и располагается с адреса 3000h по адрес 30FFh. Указателем на очередной элемент буфера служит переменная SendCount. В таблице 3.1 описаны используемые переменные.

Таблица 3.1 – Описание используемых переменных

Переменная Размер Расположение Описание
TimeVar 3 байта 3100h Переменная хранит время в секундах с начала работы контроллера
BufReady 1 байт 3104h Флаг готовности буфера передатчика
RecCount 2 байта 3106h Указатель буфера приемника
SendCount 2 байта 3108h Указатель буфера передатчика
Sentry 1 байт 310Ah Переменная – точка входа в процедуру передатчика
FS 1 байт 310Ch Флаг работы процедуры передатчика (анализируется “службой времени”)

Переменная TimeVar обслуживается счетчиком времени. Ее значение периодически используется для процедурой формирования очередного сообщения.

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

Переменная FS является сигнализатором того, что процесс передачи в данный момент активен. В случае “зависания” по этим флагам служба времени определяет конфликтную задачу и отображает ее номер на индикаторе.

Счетчик байтов SendCount в процессе передачи сообщения изменяет свое значение от 0 до FF.

Схемы алгоритмов процессов в автономной форме

Схема алгоритма процесса самодиагностики в автономной форме показана на рисунке 3.1.

Рисунок 3.1 – Автономная форма алгоритма процесса самодиагностики.

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

Схема алгоритма процесса приема в автономной форме показана на рисунке 3.2.

Рисунок 3.2 – Автономная форма алгоритма процесса приема.

На рисунках 3.3 и 3.4 более подробно раскрыт состав блоков “прием символа” и “передача символа”.

Рисунок 3.3 – Состав блока “прием символа”.

Рисунок 3.4 – Состав блока “передача символа”.

Алгоритм приема информации реализует прием пакетов в формате X-Modem.

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

На рисунке 3.5 показана схема алгоритма передачи информации. Передатчик начинает работать, если буфер данных заполнен символами. Об этом сигнализирует флаг BufReady. После окончания передачи программа должна снять этот флаг – это служит запросом для процедуры подготовки данных.

Рисунок 3.5 – Автономная форма алгоритма процесса передачи.

Передача осуществляется порциями по 256 байт. Первые три байта – текущее время в секундах от начала работы контроллера.

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