- •6. Проектирование микропроцессорных систем
- •6.1. Представление системы как объекта проектирования
- •6.2. Основные этапы проектирования
- •6.3. Разработка архитектуры системы
- •6.4. Проектирование аппаратных средств
- •6.4.1. Схемотехническое проектирование процессора
- •6.4.2. Схемотехническое проектирование памяти
- •Банкирование памяти
- •Организация банков памяти
- •Проектирование запоминающих устройств
- •6.4.3. Схемотехническое проектирование интерфейса
- •Организация ввода/вывода данных
- •6.4.4. Тестирование и настройка аппаратных средств
- •Тестирование статическими сигналами
- •Свободный прогон микропроцессора
- •6.5. Проектирование программных средств
- •6.5.1. Этапы жизненного цикла программы
- •6.5.2. Точная постановка задачи и формулировка требований к программе
- •Постановка задачи ввода данных в озу
- •6.5.3 Проектирование программы
- •Декомпозиция общей задачи
- •Декомпозиция задачи ввода данных в озу
- •Структуры данных
- •Разработка структуры данных программы для ввода данных в озу
- •Алгоритмизация программы
- •Подходы к алгоритмизации
- •Иерархическая организация алгоритма
- •Алгоритмизация программы для ввода данных в озу
- •1. Модуль "Тестовый контроль озу по шд" (dTstContr)
Постановка задачи ввода данных в озу
Пример 6.4:
Сформулировать требования к программе работы устройства для ввода данных в ОЗУ.
Перед проектированием программы для ввода данных необходимо сформулировать предъявляемые к ней требования. Сделаем это, последовательно отвечая на типовые вопросы.
1. Функции программы.
Программа должна обеспечивать:
1) работу в двух режимах ввод данных и просмотр данных в ОЗУ;
2) запись заданных данных в ячейку по заданному адресу (в режиме ввода);
3) отображение данных из ячейки по заданному адресу ( в режиме просмотра);
4) модификацию адреса путем его инкрементирования/декрементиро- вания.
Функции программы, как правило, определяются необходимостью создания устройства с высокими эксплуатационными свойствами с точки зрения пользователя.
2. Функциональный смысл входной и выходной информации.
Входная информация имеет следующий смысл:
1) числовая информация об адресе или данных;
2) тип числовой информации (адрес или данные);
3) режим работы (ввод или просмотр данных);
4) направление модификации текущего адреса (инкрементирование или декрементирование).
Выходная информация имеет следующий смысл:
5) область данных, введенных в ОЗУ;
6) визуальное отображение адреса и данных.
Состав входных данных должен быть достаточным, чтобы исключить неопределенность в работе системы. Состав выходных данных определяется требуемым результатом и обеспечением удобства эксплуатации устройства.
3. Типы устройств ввода/вывода и форма представления информации.
В качестве устройств ввода использовать:
1) для ввода числовой информации шестнадцатиричную клавиатуру типа "матрица сухих контактов";
2) для ввода режима работы тумблер;
3) для ввода типа числовой информации и направления модификации адреса кнопки без фиксации.
Выбор устройств ввода определяет форму представления входной информации. В данном случае вся информация представляется в цифровом виде.
В качестве устройств вывода использовать:
4) для индикации адреса и данных семисегментные знакосинтези- рующие индикаторы;
5) для индикации типа числовой информациидвоичные индикаторы (светодиоды).
Для удобства эксплуатации потребуем, чтобы адрес и данные отражались одновременно.
4. Диапазон изменения и точность представления входной и выходной информации.
Считая, что при ручном вводе данных их объем не может быть очень велик, получим требования к диапазону изменения входной и выходной информации:
1) объем вводимых данных не более 64 кбайт;
2) разрядность адреса 2 байта;
3) разрядность данных 1 байт;
4) сигналы о типе числовой информации, режиме работы и направле- нии модификации адреса однобитные.
Точность представления информации в данной задаче не имеет смысла.
5. Системные требования.
Эти требования уточняют вспомогательные характеристики решаемой задачи: различные временные параметры, особенности ввода/вывода информации и т.д. и т.п.
В данной задаче в качестве системных требований определим следующие:
1) ввод числовой информации в режиме бегущей строки справа налево в пределах выбранного поля (адреса или данных);
2) период следования числовых значений при вводе не менее0,1 с.
Выбранный вариант ввода числовой информации наиболее удобен. При этом очередная введенная цифра отображается в младшем разряде соответствующего поля, а все предшествующие цифры сдвигаются на одну позицию влево. Это позволяет корректировать ошибочно введенную информацию путем дальнейшего ввода. Значение, отображаемое на индикаторах, в момент подачи управляющих сигналов считается достоверным и фиксируется в памяти.
6. Необходимость контроля и типы обнаруживаемых ошибок.
Как правило, в любой системе необходим какой-либо контроль, свидетельствующий о достоверности ее функционирования.
В данной задаче потребуем следующие контрольные функции:
1) контроль работоспособности ОЗУ для размещения вводимых данных по шине адреса и данных;
2) контроль одновременного включения двух или более клавиш кла- виатуры.
7. Особые случаи и реакция на них.
Как правило, под особым случаем понимается ситуация возникновения некоторой ошибки. При этом необходимо определить реакцию на ошибку и способ выхода из этого состояния.
В данной задаче потребуем следующее:
1) при обнаружении любой из контролируемых ошибок на семисег- ментный дисплей выводится соответствующее сообщение:
отказ ОЗУ (по шине адреса)ErОП А;
отказ ОЗУ (по шине данных)ErОП d;
одновременное включение нескольких клавиш клавиатурыErr НБ.
2) выход из состояния ошибки путем устранения причин ошибки;
3) при возникновении ошибки состояние введенных в ОЗУ данных должно сохраняться.
При выборе формы сообщения необходимо учитывать информативные возможности используемых индикаторов. В данной задаче первое слово сообщений об ошибках Err, характеризующее факт ошибки, будем отображать в поле "Адрес" (ОП оперативная память), а второе слово, характеризующее тип ошибкив поле "Данные" (Аадрес, dданные, НБнабор).
Анализируя сформулированные требования, не представляет труда изобразить эскиз лицевой панели устройства, приведенный на рис.6.18.

Рис. 6.18. Лицевая панель устройства для ввода данных в ОЗУ
Этот эскиз наглядно представляет элементы ввода/вывода, с которыми должна взаимодействовать программа, и позволяет четко определить порядок работы с разрабатываемым устройством.
Работа с устройством ввода данных в ОЗУ начинается с выбора режима работы тумблером "Режим" (например, "Ввод").
Для ввода данных прежде всего необходимо указать начальный адрес, с которого они будут размещаться в памяти. Для этого нажимается кнопка "Адрес" блока "Тип ввода". Устройство подготавливается к вводу адреса, о чем свидетельствует зажигающийся при этом двоичный индикатор, расположенный над кнопкой "Адрес".
Далее вводится адрес с 16-ричной клавиатуры. Вводимые цифры отображаются на знакосинтезирующем дисплее "Адрес" в режиме бегущей строки справа налево.
После установки необходимого адреса нажимается кнопка "Данные" блока "Тип ввода". Устройство переходит в режим ввода данных, о чем свидетельствует зажигающийся двоичный индикатор, расположенный над кнопкой "Данные". При этом индикатор над кнопкой "Адрес" гаснет.
Далее вводятся данные с клавиатуры. Вводимые цифры отображаются на знакосинтезирующем дисплее "Данные" в режиме бегущей строки справа налево.
После установки необходимых данных нажимается кнопка " +1" или "1" блока "Адрес". При этом данные записываются в формируемый массив ОЗУ, после чего адрес изменяется на единицу в указанную сторону.
В случае возникновения какой-либо из контролируемых ошибок на знакосинтезирующих дисплеях отображается сообщение о соответствующей ошибке.
После устранения причин ошибки сообщение о ней снимается, и на индикаторах отображается та же информация, что и до ошибки. Если отказ ОЗУ имеет устойчивый, а не сбойный характер, то для восстановления работоспособности необходим его ремонт.
Работа в режиме "Просмотр" аналогична работе в режиме "Ввод". При этом становится невозможным лишь ввод данных, а модификация адреса кнопками "+1" и "1" не вызывает записи данных в память.
Кнопка "Сброс" служит для аппаратного перезапуска программы с самого начала.
