Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПС2 Проектирование аппаратного и программного...doc
Скачиваний:
5
Добавлен:
26.09.2019
Размер:
2.77 Mб
Скачать

177

Декомпозиция задачи ввода данных в озу

Пример 3.2.

Выполнить декомпозицию и построить статическую модель программы работы устройства ввода данных в ОЗУ.

Анализируя требования к программе, сформулированные в примере 3.1, с учетом эскиза лицевой панели устройства (см. рис. 3.5), получим исходную схему представления поставленной задачи, приведенную на рис. 3.10.

Рис. 3.10. Исходная схема представления задачи ввода данных в ОЗУ

Из этой схемы следует, что проектируемая программа должна обрабатывать входную информацию с клавиатуры и управляющих переключателей ("Режим", "Тип ввода" ("Адрес", "Данные"), "Адрес" ("+1," "1")) с формированием в ОЗУ массива вводимых данных и отображением выходной информации на знакосинтезирующих дисплеях ("Адрес", "Данные") и двоичных индикаторах "Тип ввода" ("Адрес", "Данные").

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

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

Наиболее трудно разбивать РП, поскольку для каждой задачи он уникален. Для простоты сначала целесообразно представить его в виде двух подзадач: "Обработка входной информации" и "Обработка выходной информации" (рис. 3.12). Такое разбиение потребовало ввести между ними наборы данных "Сообщения о режимах" и "Образ клавиатуры". Эти наборы вытекают из анализа устройств ввода, используемых программой. Такое представление позволяет глубже понять задачу. Очевидно, что набор данных "Итоговые ошибки" является входным для подзадачи "Обработка выходной информации", т. к. он не имеет никакого отношения к обработке входной информации.

Рис. 3.11. Статическая модель программы ввода данных в ОЗУ

Рис. 3.12. Статическая модель рабочего процесса программы ввода

данных в ОЗУ (после первого этапа декомпозиции)

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

Рис. 3.13. Статическая модель контрольного процесса программы ввода

данных в ОЗУ (после первого этапа декомпозиции)

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

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

Анализируя выделенные в результате первого этапа декомпозиции подзадачи (см. рис. 3.12, 3.13), можно сделать вывод, что лишь подзадача "Контроль ввода с клавиатуры" имеет четко определенную функцию, заключающуюся в подсчете количества активных битов в наборе данных "Образ клавиатуры" с формированием соответствующих признаков в наборе данных "Итоговые ошибки". Остальные подзадачи включают в себя по несколько функций и требуют дальнейшей детализации.

Статическая модель РП после второго этапа декомпозиции приведена на рис. 3.14. Подзадача первого уровня "Обработка входных данных" разбита на две подзадачи второго уровня: "Ввод режимов" и "Ввод с клавиатуры".

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

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

Рис. 3.14. Статическая модель рабочего процесса программы ввода

данных в ОЗУ (после второго этапа декомпозиции)

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

Подзадача "Формирование информации" в зависимости от состояния управляющих признаков, считываемых из набора данных "Сообщения о режимах", формирует адрес, буферные данные или записывает введенные данные по заданному адресу в рабочую область ОЗУ.

Независимо от режима ("Ввод"/"Просмотр") при типе ввода в состоянии "Адрес" очередная цифра относится к адресной информации. В этом случае подзадача "Формирование информации" считывает ее из набора данных "Очередная цифра" и включает в набор данных "Адрес" с учетом требуемого сдвига.

В режиме "Ввод" и при типе ввода в состоянии "Данные" очередная цифра относится к данным. В этом случае подзадача "Формирование информации" включает ее в набор данных "Буферные данные" с учетом требуемого сдвига. В режиме "Просмотр" в этот набор записываются данные из ячейки с заданным адресом набора "Данные в ОЗУ".

В режиме "Ввод" при модификации адреса ("+1"/"1") подзадача "Формирование информации" сначала записывает сформированные данные из набора "Буферные данные" в ячейку памяти по заданному адресу (из набора "Адрес"). Благодаря этому формируется требуемая область данных "Данные в ОЗУ". Затем она записывает модифицированный адрес в набор данных "Адрес", а в набор данных "Буферные данные"  данные из ячейки памяти по этому адресу. В режиме "Просмотр" при модификации адреса выполняются те же самые действия, но без записи данных в набор "Данные в ОЗУ".

Подзадача "Формирование массивов отображения" представляет данные из наборов "Адрес" и "Буферные данные" в форме, необходимой для отображения на знакосинтезирующих дисплеях "Адрес", "Данные" и помещает их в набор "Массивы отображения".

Подзадача "Вывод числовой информации" выводит данные из набора "Массивы отображения" на дисплеи.

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

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

Статическая модель КП после второго этапа декомпозиции приведена на рис. 3.15. Подзадача "Тестовый контроль" разбита на две подзадачи второго уровня: "Тестовый контроль ОЗУ по шине адреса" и "Тестовый контроль ОЗУ по шине данных". Эти подзадачи выполняют соответствующий тестовый контроль ОЗУ и помещают в набор данных "Итоговые ошибки" сообщения о его результатах.

Рис. 3.15. Статическая модель контрольного процесса программы ввода

данных в ОЗУ (после второго этапа декомпозиции)

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

Следовательно, декомпозиция программы работы устройства для ввода данных в ОЗУ выполнена полностью, в результате чего построена ее статическая модель, представленная на рис. 3.14 и рис. 3.15.

Для дальнейшего проектирования программы работы устройства для ввода данных в ОЗУ необходимо, прежде всего, определить структуру данных во всех наборах данных ее статической модели.