Министерство образования Российской Федерации
Пензенский государственный университет
Н. П. Вашкевич, Е. И. Калиниченко...
2 downloads
174 Views
370KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство образования Российской Федерации
Пензенский государственный университет
Н. П. Вашкевич, Е. И. Калиниченко
Синтез и отладка алгоритмов функционирования цифровых устройств управления Рекомендовано учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов специальности 220100 – «Вычислительные машины, комплексы, системы и сети»
Пенза 2001
2
УДК 519.713 В 23
Рецензенты: Кандидат технических наук, доцент кафедры «Компьютерные системы и сети» МГТУ им. Н. Э. Баумана
В. Я. Хартов Доктор технических наук, профессор, заместитель директора по науке Пензенского филиала ГУП НТЦ «Атлас»
Г. Н. Чижухин Кандидат технических наук, ведущий научный сотрудник ГНПП «Рубин»
М. М. Бутаев
Вашкевич Н. П. В 23
Синтез и отладка алгоритмов функционирования цифровых устройств управления: Учеб. пособие / Н. П. Вашкевич, Е. И. Калиниченко. — Пенза: Изд-во Пенз. гос. ун-та, 2001. – 43 с.: 16 ил., 8 табл., библиогр. 4 назв. Рассматриваются задачи проектирования алгоритмов функционирования цифровых устройств и их отладки путем моделирования. Приводятся примеры решения таких задач. Предлагается методика проектирования параллельных алгоритмов. Описывается инструментальная система, позволяющая автоматизировать разработку алгоритмов, в том числе параллельных, с последующей их верификацией. Приводятся примеры проектирования цифровых устройств. Учебное пособие подготовлено на кафедре "Вычислительная техника" и предназначено для студентов специальности 2201 при изучении ими дисциплин "Теория автоматов", "Недетерминированные автоматы и их примене-
3
ние", "Организация ЭВМ", выполнения курсового проектирования, а также может быть использовано студентами других специальностей при изучении дисциплин, связанных с разработкой алгоритмов для цифровых устройств и т. п.
УДК 519.713
© Издательство Пензенского государственного университета, 2001 © Н. П. Вашкевич, Е. И. Калиниченко, 2001
4
1 Проектирование цифровых устройств обработки информации При проектировании цифрового устройства обработки информации рассматриваем его, как устройство (рис. 1.1), состоящее из двух блоков: управляющего автомата (УА) и операционного автомата (ОА) [1]. Они связаны между собой набором управляющих ({Y = (y1,…...,yn)}) и набором осведомительных сигналов ({X = (x1,…...,xm)}). Объект, которым управляет ЦУ, в общем случае будем называть "внешней средой". По способу синхронизации работы ЦУ и внешней среды различают синхронную, асинхронную и согласованную модель взаимодействия. В синхронной модели генератор тактовых импульсов задает дискретное время и для внешней среды и для ЦУ. Весь последующий материал пособия соответствует использованию синхронной модели. Входные данные Внешняя среда Цифровое устройство
{X} {Y}
Старт
УА
ОА
ГТИ Стоп
Исключение Выходные данные
5
Рис. 1.1
При управлении ЦУ взаимодействует с внешней средой с использованием входных и выходных сигналов. Рассмотрим наиболее типичные сигналы взаимодействия. От внешней среды к УА поступает сигнал "старт", определяющий начало работы ЦУ. По завершении работы УА вырабатывает сигналы "стоп". В случае возникновения исключительных ситуаций при работе ЦУ, а именно: деление на нуль, переполнение и т. п. вырабатывается сигнал "исключение". Эти сигналы поступают от ЦУ во внешнюю среду. Для ОА от внешней среды поступают обрабатываемые данные ("входные данные"), а результат работы выдается во внешнюю среду ("выходные данные"). Разработка ЦУ начинается с этапа эскизного проектирования. На этом этапе выполняется переход от словесной формулировки алгоритма, данной в техническом задании на проектирование, к формализованному описанию. При этом, как правило, возможна реализация нескольких вариантов устройства. Как правило, каждый из вариантов прорабатывается с различной степенью детализации. Важнейшей задачей при этом является обеспечение возможности оценить альтернативные варианты проектирования. От качества выбранного варианта в дальнейшем будут существенно зависеть все последующие этапы проектирования, т. е. такие характеристики устройства как сложность аппаратной реализации, быстродействие, будут существенно зависеть от предлагаемого алгоритма. Поэтому желательно на этом самом раннем этапе проектирования получить возможность как проверить правильность алгоритма, так и оценить его характеристи6
ки. Для выполнения этого необходимо иметь инструментальные средства с использованием компьютерных технологий. И если для выполнения последующих этапов проектирования уже существует достаточно много систем CAD/CAM (computer aided design/computer aided modeling), позволяющих оценить правильность и качество принимаемых решений, то для этапа эскизного проектирования их недостаточно. Существенным является и то, что современная тенденция проектирования цифровых устройств, реализующих параллельные алгоритмы, значительно усложняет эту задачу. Во-первых, разработчику традиционно, с точки зрения ранее накопленного опыта и по своей физической сути (одна голова), способнее мыслить в рамках однопроцессорной системы, легче описывать последовательные действия для однопроцессорной системы, чем параллельные действия для многопроцессорных. При описании же параллельных процессов чисто умозрительно представить, что же произойдет в целом в алгоритме, становится практически очень и очень сложным. Во-вторых, значительно возрастает количество вариантов, из которых надо сделать не интуитивный выбор, а обоснованный выбор. Предоставить возможность оценки альтернативных вариантов при разработке алгоритмов ЦУ особенно необходимо при обучении проектированию (студенты соответствующих специальностей и т. п.). Почему? Потому что специалист с большим опытом проектирования может правильно выбрать нужный вариант, а для обучающегося нужно вначале получить характеристики предлагаемого решения, чтобы оценить его качество. 7
Рассмотрим еще некоторые аспекты, относящиеся к этапу эскизного проектирования. Как уже было отмечено ранее алгоритм управления из технического задания на проектирование ЦУ, и алгоритм, реализуемый в конечном итоге в ЦУ это не одно и то же (возможно несколько вариантов). Далее при формализации какого-либо варианта алгоритма возможны различные реализации его отдельных частей (например, использование разных алгоритмов умножения, деления и т. п.). Это приводит к появлению дополнительных вариантов, которые также должны быть оценены по заданным критериям. Предположим, произведен выбор варианта алгоритма для дальнейшей проработки. Этот алгоритм будет определять структуру ЦУ в общем виде. Дальнейшее проектирование ЦУ распадается на две взаимосвязанные задачи: проектирование УА и проектирование ОА. При разработке УА и ОА также, как правило, появляется несколько вариантов их реализации. В конечном итоге алгоритм и соответствующее ему ЦУ будут однозначно определены, когда будет выполнено формализованное описание как УА, так и ОА. Какое из этих устройств описывать первым, а какое —вторым? Есть сторонники описания вначале ОА, а затем УА, а есть и сторонники обратного подхода. Авторы считают, что для выполнения этих двух тесно взаимоувязанных задач лучше всего использовать, так называемую, содержательную граф-схему алгоритма, из которой затем легко получить описания УА и ОА [2]. После завершения формализации описания УА и ОА разработчику необходимо иметь соответствующие инструментальные средства, которые позволят выполнить тестирование алгоритма для оценки 8
полученных результатов. При этом, кроме главной задачи тестирования – определить выполняется ли заданная функциональность, тестирование должно позволить решить ряд других достаточно важных вопросов. Например, при проектировании ОА решить следующие задачи: ⎯
минимизировать число узлов ОА (регистры, сумматоры, счетчики
и т. п.) без потери функциональности; ⎯
определить минимально необходимую разрядность узлов ОА;
⎯
определить оптимальный набор сигналов управления {yi} и опре-
делить их совместимость; ⎯
исследовать и правильно обработать исключительные ситуации
(переполнение и т. п.); ⎯
отработать взаимодействие с внешней средой ОА по информа-
ционным входам. ⎯
При проектировании УА нужно решить следующие задачи:
⎯
определить оптимальный набор {xi};
⎯
отработать взаимодействие с внешней средой УА по управляю-
щим входам; ⎯
выполнить оптимизацию алгоритма работы непосредственно УА
как с использованием формальных методов (минимизация числа состояний и т. п.), так и "вручную". Выполнить такое тестирование путем макетирования нереально не только из-за значительных материальных затрат, но главное из-за затрат времени на это, поскольку временной цикл проектирования не может быть большим. Наличие же соответствующей инструменталь9
ной системы, основанной на использовании моделирования, даст существенную экономию материальных затрат, затрат времени, позволит использовать существующие формализованные методы анализа и преобразования и в конечном итоге гарантирует получение работоспособного алгоритма. Кроме того, такой подход к разработке устройства позволит исключить из рассмотрения на последующих этапах проектирования нерациональные варианты. Поэтому для решения подобных задач с использованием компьютерных технологий и была разработана инструментальная система (программное приложение) "СОМПА" (с. 15, данного пособия). Существенным достоинством системы авторы считают возможность использования формализованных методов проектирования УА, таких, как: ⎯
использование специализированных языков для формализа-
ции описания УА; ⎯
возможности перевода с одного языка на другой и решение
при этом ряда задач минимизации алгоритма; ⎯
возможность получения для параллельного алгоритма экви-
валентного ему последовательного алгоритма (детерминизация), что позволяет реализовать системы класса ОКМД; ⎯
верифицирование алгоритма УА моделированием.
1.1 Языки регистровых передач (ЯРП) В основе моделирования работы ЦУ лежит его описание на какомлибо специализированном языке. Для решения всех вышеперечисленных задач из всех языков, позволяющих формализовать описа10
ние алгоритма работы ЦУ, по мнению авторов, наиболее подходит язык регистровых передач (ЯРП). Поэтому такой язык использован в приложении СОМПА. ЯРП — это общее название целого семейства языков для описания цифровой аппаратуры. ЯРП описывают параллельные обращения к отдельным устройствам цифровой аппаратуры, таким, как регистры и устройства памяти, а также передачу информации между ними. ЯРП применяются, чтобы облегчить общение между специалистами, ведущими проектирование устройства. Эти языки используются при управлении проектированием, моделировании, документировании цифровых устройств. Описания устройств на языке РП служат входными данными для моделирования проектируемого ЦУ. При этом моделирование на уровне регистровых передач может предоставить разработчику системы много информации, которая позволяет оценить качество разработки устройства, в первую очередь, выполняется ли заданная функциональность, увидеть способы оптимизации. Конкретный же язык РП, как и любой язык, имеет алфавит, синтаксис и семантику. Разработчик языка РП отражает в нем свою модель цифрового устройства и свой "уровень интереса" при проектировании ЦУ. Модели устройств могут быть разного уровня: от принципиальной схемы (низший уровень) и до схемы соединения компьютеров в сети и их взаимодействия. Ясно, что уровень описания модели определяется решаемой на данном этапе задачей проектирования. Так, описание на уровне вентилей позволяет решить задачу проектирования логической схемы на базе реальной элементной ба11
зы (следует отметить, что для таких задач язык РП применяется в средней степени). В большей же степени язык РП используется на следующих уровнях проектирования: ⎯
алгоритмическом, чтобы решить задачу разработки алгорит-
ма управления; ⎯
регистровом, чтобы подробно представить структуру цифро-
вого устройства и алгоритмы управления им без учета ограничений со стороны конкретной технологии. Языки РП описывают в явном виде меньшее число подробностей, чем языки на уровне логических схем, и это делает более очевидным замысел разработчика устройства, что позволяет лучше его понять и при необходимости в дальнейшем легче внести исправления и улучшения. Языки РП могут отличаться набором типовых базовых синтаксических конструкций. Большинство языков РП допускает достаточно большую степень абстракции, чтобы получить более краткое и ясное описание алгоритма и устройства. В итоге можно сказать, что язык РП предоставляет символику, синтаксис и семантику для абстрактного описания цифровых схем и систем. В качестве примера такого языка можно привести язык DDL (Digital Design Language) и др. Моделирование с использованием методов описания на языках РП привлекательно, в первую очередь, в том отношении, что для его проведения не надо выполнять детальную разработку проектируемого устройства. По сути дела ЯРП обеспечивает на этапе эскизного проектирования новых систем возможность выполнения альтернативных оценок вариантов проектирования с решением таких вопро-
12
сов, как: проверка правильности системы, выявление проблем, связанных с временными параметрами, и др. Затем по завершении этого этапа проектирования вполне реальна трансляция описания устройства с языка РП на следующий более детальный уровень, а именно язык логических схем с последующим применением при проектировании систем CAD/CAM.
1.2 Язык регистровых передач СОМПА Если исходить из вышесказанного, описание ЦУ в приложении СОМПА основывается именно на использовании языка РП. В отличие от языка DDL и ему подобных, в которых описание производится только в виде последовательности строк, в предлагаемом языке сочетается графическое и текстовое описание. Это дает неизмеримо большую наглядность в понимании описания устройства и, как следствие, значительно облегчает в последующем, если это необходимо его модификацию. При разработке приложения это было одним из наиболее важных соображений, а именно организовать удобное взаимодействие с конечным пользователем. СОМПА обеспечивает такие условия, при которых человек не являющийся программистом, может после незначительной подготовки описать устройство и выполнить моделирование его работы. Приложение просто в использовании, выдает четкие сообщения при описании устройства и моделировании, имеет диагностику ошибок. Взаимодействие с пользователем реализовано полностью через графический интерфейс, что обеспечивает максимум удобств. 13
Приведем неформальное описание языка РП, используемого в приложении. Идентификаторы. Используются для именования узлов ОА. В идентификаторах можно использовать только буквы латинского алфавита и арабские цифры. Например, R1, RSM2 и т. д. Объявления специальных узлов. Предусмотрены специальные соглашения по назначению имен, которые используются как средства объявления типа узлов: ⎯
входные шины – DI<идентификатор>[<разрядность>],
⎯
выходные шины – DO<идентификатор>[<разрядность>],
⎯
двунаправленные шины
DIO<идентификатор>[<разрядность>]. Примеры определения шин:
DI[8] – входная шина DI разрядностью 8 бит; DI2[2] – входная шина DI2 разрядностью 2 бита; DOF[4] – выходная шина DOF разрядностью 4 бита (рассматривается как регистр). Объявление существования и назначения узлов. Определение регистров – <идентификатор>[<разрядность>] Примеры определения регистров:
R1[2] – регистр с именем R1 разрядностью 2 бита; RA21[8] – регистр с именем RA21 разрядностью 8 бит; TS[1] – однобитовый регистр TS.
14
Выделение части узла. Если узел устройства имеет несколько разрядов, то выделение части узла выполняется с использованием квадратных скобок, стоящих вслед за идентификатором узла. В скобках, через "/", указывается, с какого по какой разряд происходит выделение. Нумерация разрядов выполняется слева направо (от старшего к младшим) и начинается с 0. Например:
RA21[5/7] – доступ к младшим разрядам регистра RA21 с пятого по седьмой;
RA21[0/4] — доступ к старшим разрядам регистра RA21 с нулевого по четвертый. Операции — это утверждение, которое описывает взаимосвязи и взаимодействие узлов и состоит из операндов и операторов. Операндами в операциях являются идентификаторы узлов или выделение части узлов. Операторы обозначаются специальными символами и описывают характер взаимосвязей и взаимодействия (табл 1.1). Таблица 1.1 Обозначение
Оператор
Тип
=
Подключение
Унарный
:=
Присвоение
Унарный
+
Сложение
Бинарный
-
Вычитание
Бинарный
*
Умножение
Бинарный
/
Деление
Бинарный
!
Отрицание
Унарный
15
&
Конъюнкция
Бинарный
∨
Дизъюнкция
Бинарный
Окончание табл. 1.1 Обозначение
Оператор
Тип
%
Исключающее или
Бинарный
++
Инкремент
Унарный
--
Декремент
Унарный
AL
Арифметический сдвиг влево
Унарный
AR
Арифметический сдвиг вправо
Унарный
LS
Простой сдвиг влево
Унарный
RS
Простой сдвиг направо
Унарный
LC
Циклический сдвиг влево
Унарный
RC
Циклический сдвиг вправо
Унарный
Рассмотрим эти операторы более детально. Оператор подключения (=) описывает путь прохождения информации в комбинационной схеме (табл. 1.2). Таблица 1.2 Действие
Пример
Подключение
MS1=RA1
Подключение бит
MS1[0/3]=RA1[4/7]
Оператор передача (:=) описывает запись информации в элементы памяти (табл. 1.3). Таблица 1.3 Действие
Пример
R1:=R2, R1:=5, CT:=0
Запись
16
R1[2]:=R2[0], R1[0/3]:=R2[4/7]
Запись бит
Арифметические операторы описывают выполнение операций сложения, вычитания, умножения, деления над содержимым узлов (табл. 1.4). Таблица 1.4 Действие
Пример
Сложение
R1=R2+R3
Вычитание
R1=R2—R3
Умножение
R1=R2*R3
Деление
R1=R2/R3
Логические операторы описывают выполнение логических операций над содержимым узлов (табл. 1.5). Таблица 1.5 Действие
Пример
И
R1=R2&R3
ИЛИ
R1=R2vR3
НЕ
R1=!R2
Исключающее ИЛИ
R1=R2%R3
Битовое И
R1[0]=R2[0]&R3[2]
Битовое ИЛИ
R1[0]=R2[0]vR3[2]
Битовое НЕ
R1[5]=!R2[1]
Битовое исключающее ИЛИ
R1[0]=R2[0]%R3[2]
17
Операции сдвига и счета описывают различные операции сдвига и счета прямого и обратного (табл. 1.6). Таблица 1.6 Действие
Пример
Арифметический сдвиг влево
AL(R1,2)
Арифметический сдвиг вправо
AR(R1,2)
Логический сдвиг влево
LS(R1,4)
Логический сдвиг вправо
RS(R1,4)
Циклический сдвиг влево
LC(R1,1)
Циклический сдвиг вправо
RC(R1,1)
Инкремент
R1=R1++
Декремент
R1=R1--
Примеры правильных операций:
RSM:=R1+R2 RSM:=!R1+R2+1 R2[8/15]:=R1[0/7] Примеры неправильных операций:
RCM[1/7]=!R2[0/6]+R3[0/6]+1 DO=!R1+3 LS(!R1,1) RDI[4]=R2[4]%R3[4]&R17[0] Операции используются также формирования осведомительных сигналов от ОА к УА. Поскольку значением такого сигнала может быть только "0" или "1", то и выражение, составленное из операций, 18
должно давать такой результат. Приведем примеры формирования осведомительных сигналов. Примеры правильной записи осведомительных сигналов:
RCM[0] – нулевой разряд регистра RCM. !R1[7] – инверсия 7-го разряда регистра R1. V(CT1[0/3]) – дизъюнкция разрядов счетчика CT1 с нулевого по третий. Примеры неправильной записи осведомительных сигналов:
R1[0]+R2[0] – использован арифметический оператор. R1[0/7]vR2[0/7] – результат операции 8 двоичных разрядов.
2 Инструментальная система разработки и верификации параллельных алгоритмов Инструментальная система "СОМПА" (система описания, моделирования, преобразования алгоритмов) разработана на кафедре "Вычислительная техника" Пензенского государственного университета под научным руководством д.т.н., профессора Вашкевича Н.П. Непосредственными авторами разработки являются студенты Синев С. А. (гр. 95В1), Антонов А. В., Токарев А. Н. (гр. 96ВВ1). Система представляет собой программное приложение и предназначена для ускорения разработки алгоритмов цифровых устройств, в том числе с использованием параллельной обработки, в различных областях вычислительной техники с их последующей верификацией путем моделирования. Например, для разработки следующих алгоритмов: 19
управление цифровыми устройствами в компьютерных системах; управление цифровыми контроллерами в технологических процессах; распознавание (поиск вирусов, синтаксический анализ и т. п.) и т. д. Приложение, в первую очередь, ориентировано для обучения студентов разработке алгоритмов с их последующей верификацией. Необходимые ресурсы для работы системы "СОМПА": операционные системы — Windows 9Х (минимальный размер ОЗУ — 8 Мбайт) или
Windows NT (минимальный размер ОЗУ — 16 Мбайт). Приложение имеет следующие возможности: ⎯
позволяет проектировать алгоритмы с их последующей ве-
рификацией моделированием для систем "одиночный поток команд – одиночный поток данных" (ОКОД) и "одиночный поток команд – множественный поток данных" (ОКМД). При этом имеется в виду, что синхронизация УА и ОА в них производится от одного генератора; ⎯
позволяет описать и моделировать как ЦУ в целом (УА+ОА),
так и по отдельности УА и ОА; описать на уровне языка регистровых передач операционный автомат и произвести его моделирование; ⎯
при проектировании УА задать (описать) алгоритм на любом
из стандартных языков, таких, как графические схемы алгоритмов (ГСА), регулярные выражения алгебры событий (РВАС), систем канонических уравнений и систем функций выхода (СКУ и СВФ), таблиц переходов и выходов (ТПиВ); ⎯
выполнить преобразование описания алгоритма заданного на
одном из языков, на другой из этих языков; ⎯
произвести, если это необходимо, преобразование (детерми-
низацию) параллельного алгоритма в эквивалентный ему последова20
тельный (это в ряде случаев полезно и для анализа параллельного алгоритма); ⎯
произвести упрощение (минимизацию) алгоритма;
⎯
задать входные сигналы алгоритма абстрактными или двоич-
ными, что расширяет диапазон применения системы; ⎯
проверить правильность (верифицировать) алгоритма моде-
лированием его работы с заданием входа алгоритма по отдельным шагам или на любое число шагов; ⎯
вставить дополнительную последовательность входных сиг-
налов в любое место уже промоделированной последовательности (при этом автоматически обновляются результаты моделирования). Приложение отличается: ⎯
высокой эффективностью при создании и верификации алго-
ритмов, т. к. пользователю не требуется изучать и использовать языки программирования; ⎯
хорошо интуитивно понимаемым графическим интерфейсом
для каждого этапа работы; ⎯
удобными встроенными редакторами для каждого из исполь-
зуемых языков; ⎯
удобным редактором для описания и моделирования опера-
ционного автомата; ⎯
удобными формами для задания входных воздействий на
очередном шаге алгоритма; ⎯
удобными формами представления результатов моделирова-
ния. 21
До запуска системы "СОМПА" необходимо установить специально разработанный для нее шрифт NDA.ttf, используя "панель управления" WINDOWS и значок "шрифты" в ней. Тогда ввод отрицания двоичного входного сигнала или отрицания события производится при нажатой клавише Shift в латинском алфавите, например: < Shift > + <x> (при этом прописные буквы исключены), а операции дизъюнкции — одновременным нажатием <Shift> + < прерывистая вертикальная черта > также в латинском алфавите. При очередном запуске приложения размеры окон, видимые панели и т. п. будут загружены в том виде, в котором они были при выходе из предыдущего сеанса. Основные пункты меню приложения для ускорения работы продублированы через панели инструментов. Панели инструментов можно включать/выключать вручную или автоматически. Кнопки на панели инструментов снабжены всплывающими подсказками. Главное окно приложения состоит из меню, панели инструментов, рабочего поля приложения. Строка статуса приложения включает в себя следующие поля (слева направо): флаг изменения файла, координаты местоположения курсора в окне, сообщения о текущем действии. В окне приложения есть также поле вывода подсказки. Меню приложения зависит от контекста работы с ним пользователя. Поэтому вначале опишем пункты меню, которые являются общими и не зависят от контекста.
22
2.1 Контекстно-независимое меню Опишем меню, которое появляется при загрузке приложения. Пункт меню [Файл] позволяет выполнить следующее. С использованием подпункта [Файл|Создать] – позволяет создать новый файл для задания алгоритма на одном из следующих языков: [Файл|Создать|РВАС] — создание нового файла на языке РВАС; [Файл|Создать|СКУ] — создание нового файла на языке СКУ; [Файл|Создать|ГСА] — создание нового файла на языке ГСА; [Файл|Создать|Таблицу переходов] — создание нового файла на языке ТПиВ. Кроме того, [Файл|Создать|Текстовый файл] - позволяет создать новый текстовый файл (формат RTF). Эти пункты меню продублированы кнопками на панели инструментов , соответственно "Открыть", "Сохранить", "Открыть РВАС", "Открыть СКУ", "Открыть ГСА", "Открыть таблицу переходов", "Открыть текстовый файл" позволяет открыть уже существующий файл. [Файл|Выход] позволяет выйти из приложения. Пункт меню [Настройки] позволяет включать или выключать следующие панели инструментов (если флаг установлен, то панель включена): "Файл", "Редактирование", "ГСА", "Таблица", "Перевод", "Моделирование", "Представление регистров". Подпункт "Показывать автоматически" – обеспечивает включение/выключение режима, при котором нужные панели будут показываться автоматически, т. е. панели будут появляться и исчезать в зависимости от того, какое окно является активным (например, панель с инструментами ГСА будет видна только при редактировании алгоритма на языке ГСА, а при переключении на окно языка ТПиВ исчезнет, и т.д.). 23
Пункт меню [Окно] стандартен для приложений WINDOWS и обеспечивает работу с окнами, открытыми приложением. Пункт меню [Помощь] также стандартен и обеспечивает: вызов справки о программе, поиск по ключевому слову в справке, руководство по пользованию справочником.
2.2
Контекстно-зависимое меню
Если открыто окно с текстовым редактором для описания алгоритмов на различных языках (РВАС, СКУ и т. п.), то в меню [Файл] добавляются стандартные подпункты, существующие в любых современных редакторах текста: [Файл|Создать] — создание нового файла; [Файл|Открыть] — открытие существующего файла; [Файл|Закрыть] — закрыть файл в активном окне; [Файл|Сохранить] — сохранение файла из активного окна; [Файл|Сохранить как…] — сохранение файла из активного окна с заданием его имени; [Файл|Печать…] — вывод файла из активного окна на печать; [Файл|Настройки принтера…] — изменение настроек принтера; [Файл|Выход] — выход из программы. В меню [Правка] также добавляются стандартные подпункты: [Правка|Вырезать] — вырезать выделенный текст в буфер; [Правка|Копировать] — копировать выделенный текст в буфер; [Правка|Вставить] — вставить текст из буфера; [Правка|Удалить] — удалить вырезанный текст; [Правка|Выделить все] — выделить весь текст в окне. В меню [Формат] добавляются стандартные подпункты (действуют в активном окне): [Формат|По левому краю] — выравнивание по ле24
вому краю; [Формат|По правому краю] — выравнивание по правому краю; [Формат|По центру] — выравнивание по центру; [Формат|Перенос слов] — включить/выключить режим переноса слов; [Формат|Шрифт] — изменение параметров шрифта; [Формат|Увеличить шрифт] — увеличить размер шрифта; [Формат|Уменьшить шрифт] — уменьшить размер шрифта. Далее рассмотрим стандартные языки, которые используются в приложении для описания работы УА.
2.3
Язык регулярных выражений алгебры событий
СОМПА позволяет описывать алгоритмы на языке регулярных выражений алгебры событий (РВАС) [2]. Для этого с использованием пункта основного меню [Файл|Создать] или кнопки "РВАС" на панели инструментов "Файл" открывают окно редактора, предназначенного для записи регулярного выражения (при сохранении файла ему автоматически назначается расширение ".rvs"). Алфавиты входных сигналов регулярного выражения, а также их тип (абстрактные, двоичные), выходных сигналов, событий определяются с использованием масок. Для установки масок используется меню [Настройки|Опции] и вкладка "Общие". Так, если в регулярном выражении используются абстрактные входные сигналы и для них установлена маска z, то в окне редактора допустим ввод входных сигналов как z с цифровым индексом (например, z4 и т. д.). Установленные маски используются при проверке синтаксиса записи алгоритма.
25
Так как синтаксис записи алгоритма на РВАС предусматривает обязательное наличие специального события, называемого начальным, его обозначение необходимо задать с использованием пункта основного меню [Настройки|Опции], вкладка "РВАС". В окне редактора допустимые операции языка обозначаются следующим образом: ⎯
итерация – {};
⎯
конкатенация – *;
⎯
дизъюнкция —
∨ (вводится с клавиатуры на верхнем регист-
ре клавишей "|"). Регулярное выражение должно обязательно заканчиваться символом ";". Для изменения порядка вычисления используются круглые скобки без ограничения уровня вложенности. Если выражение не умещается в одну строку, то перенос на следующую строку производится без специального признака, т. к. конец его определяется по ";".При записи алгоритма можно вставлять комментарии. Они могут быть двух видов: ⎯
начинаются с // и до конца строки;
⎯
начинаются от /* и заканчиваются */ и располагаются на любом
количестве строк. При перемещении курсора по тексту в нижнем левом углу приложения отображаются его относительные координаты, что облегчает работу пользователя. Окно редактора включает в себя поле для редактирования текста и поле сообщений, в котором выводятся сообщения о синтаксических 26
ошибках, выявленные при проверке выражения или его преобразовании. В окне редактора по нажатии правой кнопки мыши вызывается контекстное меню, дублирующее подпункты пункта "Правка" меню: "Вырезать", "Копировать", "Вставить". Приведем пример записи алгоритма на языке РВАС (рис. 2.1)
Рис. 2.1
Можно описать алгоритм и в виде системы регулярных выражений. В этом случае уравнения, входящие в систему записываются друг за другом и отделяются друг от друга также символом ";". Например, (рис. 2.2).
Рис. 2.2
По завершении ввода алгоритма на языке РВАС в окно редактора есть возможность проверки правильности синтаксиса языка. Для этого используется пункт меню [Преобразования|Проверка] или кнопка "Проверка" на панели инструментов. Обнаруженные синтаксические ошибки показываются в дополнительном окне сообщений, которое располагается под окном редактора. Если перевести курсор на со-
27
общение и выполнить двойной щелчок мышью или нажать клавишу "Enter", то происходит переход к месту ее обнаружения. Если в записи алгоритма введены изменения, то устанавливается признак наличия изменений (слева внизу основного окна приложения появляется "изменено"). Это является подсказкой пользователю в дальнейшей работе при преобразованиях алгоритма, его моделировании и т.п. Ограничения, устанавливаемые приложением в языке РВАС, следующие. Количество входных и выходных сигналов, событий не должно превышать величину 32767, что является более чем достаточно для любой практической задачи. Запись алгоритма на языке РВАС может быть преобразована на один из следующих языков: СКУиСВФ, ТПиВ. Для этого можно воспользоваться или пунктом основного меню [Преобразование], или кнопками на панели инструментов
2.4
.
Язык систем канонических уравнений и систем функций выходов
Можно также описать алгоритм УА на языке систем канонических уравнений и систем функций выходов (СКУиСВФ, НДСКУиСВФ) [2,3]. Для этого с использованием пункта основного меню [Файл|Создать] или кнопки "СКУ" на панели инструментов "Файл" открывают окно редактора, предназначенного для записи алгоритма на этом языке (при сохранении файла ему автоматически назначается расширение ".sku").
28
Допустимые алфавиты входных сигналов, а также их тип (абстрактные, двоичные), выходных сигналов, событий определяются с использованием масок в пункте основного меню [Настройки|Опции] на вкладке "Общие" так же, как и для языка РВАС. Желательно (не обязательно) начальное состояние алгоритма обозначать в соответствии с маской, установленной для такого события в языке РВАС. Окно редактора СКУиСВФ включает в себя поле для редактирования текста и поле сообщений, в нем выводятся сообщения об ошибках в синтаксисе языка, выявленных при проверке или преобразовании. По правой кнопке мыши вызывается контекстное меню, дублирующее поля меню [Правка|Вырезать|Копировать| Вставить]. В окне редактора допустимые операции языка обозначаются следующим образом: ⎯
отрицание – x (при включенном верхнем регистре введен
символ "x"); ⎯
конъюнкция — &;
⎯
дизъюнкция — ∨ (при включенном верхнем регистре введен
символ "|"). Каждое уравнение должно обязательно заканчиваться символом ";". Для изменения порядка вычисления используются круглые скобки без ограничения уровня вложенности. Если выражение не умещается в одну строку, то перенос на следующую строку производится без специального признака, т. к. конец его определяется по ";". При запи-
29
си алгоритма можно вставлять комментарии. Они могут быть двух видов: ⎯
начинаются с // и до конца строки;
⎯
начинаются от /* и заканчиваются */ и располагаются на любом
количестве строк. При перемещении курсора по тексту в нижнем левом углу окна приложения отображаются его относительные координаты, что облегчает работу пользователя. В окне редактора по нажатии правой кнопки мыши вызывается контекстное меню, дублирующее подпункты пункта [Правка] основного меню: "Вырезать", "Копировать", "Вставить". Приведем пример записи алгоритма на языке СКУиСВФ (рис. 2.3).
Рис. 2.3
По завершении ввода алгоритма в окно редактора есть возможность проверки правильности синтаксиса языка. Для этого используется пункт основного меню [Преобразования|Проверка] или кнопка "Проверка" на панели инструментов. Обнаруженные синтаксические ошибки показываются в окне сообщений, которое располагается под окном редактора. Если перевести курсор на сообщение и выполнить 30
двойной щелчок мышью или нажать клавишу "Enter", то происходит переход к месту ее обнаружения. Если в записи алгоритма введены изменения, то устанавливается признак наличия изменений (слева внизу основного окна приложения появляется "изменено"). Это является подсказкой пользователю в дальнейшей работе при преобразованиях алгоритма, его моделировании и т. п. Ограничения, устанавливаемые системой в языке СКУиСВФ, следующие. Количество входных и выходных сигналов, событий не должно превышать величину 32767, что является более чем достаточно для любой практической задачи. Запись алгоритма на языке СКУиСВФ может быть преобразована на язык ТПиВ. Для этого можно воспользоваться или пунктом основного меню [Преобразование], или кнопкой на панели инструментов .
2.5
Язык таблиц переходов и выходов
Можно также описать алгоритм УА на языке таблиц переходов и выходов (ЯТПиВ). Для этого с использованием пункта меню "[Файл|Создать"] или кнопки "Создать таблицу" на панели инструментов "Файл" открывают окно редактора, предназначенного для записи алгоритма на этом языке (при сохранении файла ему автоматически назначается расширение ".tbl"). При этом окно редактора представляет собой таблицу, содержащую пять столбцов в соответствии с синтаксисом языка, приведенным в [2,3] (крайний левый столбец – номер состояния перехода по порядку). Ширина столбцов, кроме са31
мого левого, может быть изменена пользователем. Для этого необходимо в верхней строке (шапке) таблицы поместить курсор на разделительную линию и раздвинуть или сжать столбец (рис. 2.4).
Рис. 2.4
Допустимые алфавиты (префиксы) входных и выходных сигналов, событий, а также их тип (абстрактные, двоичные) определяются в соответствии с табл. 2.1.
Таблица 2.1 Префикс
Обозначение и тип
Пример
a
Абстрактное событие
a0
s
Двоичное событие
s2
w
Абстрактный выходной сигнал
w3
y
Двоичный выходной сигнал
y1
z
Абстрактный входной сигнал
z5
x
Двоичный входной сигнал
x1
Нет
Безусловный переход (тактовый сигнал)
1
Нет
Недостижимый переход
0
32
Из этой таблицы видно, что безусловный переход из одного состояния в другое задается символом "1", а недостижимые переходы – символом "0". Желательно (не обязательно) начальное состояние алгоритма обозначать в соответствии с маской установленной для такого события в языке РВАС. В окне редактора допустимые операции языка обозначаются следующим образом: ⎯
отрицание – x (при включенном верхнем регистре введен
символ "x"); ⎯
конъюнкция – &.
В качестве разделителя может использоваться любой из следующих символов: {,}{&}{*}{;}{-}{+}{%}{#}{@}. Для управления переходами таких элементарных автоматов как триггеры также существуют правила именования сигналов (табл. 2.2): Таблица 2.2 Префикс
Тип сигнала
Пример
a
Абстрактный переход
a0
s
Активный сигнал для Q и T-триггера
s1
r
Сигнал сброса RS-триггера
r4
s
Сигнал установки RS-триггера
swait
j
Сигнал установки JK-триггера
j_done
k
Сигнал сброса JK-триггера
kev10
33
При управлении состояниями автомата с использованием
RS-триггеров комбинация сигналов s_somestate,R_somestate является запрещённой, так как создаёт неопределённость переключения триггера. Для JK-триггера одновременное появление сигналов
j_somestate, k_somestate разрешено. Настройка таблицы переходов выполняется через пункт основного меню [Настройки|Опции…]. На вкладке "Таблица переходов" задаются следующие параметры: ⎯
"Контроль префиксов" – нужно ли компилятору выполнять
контроль префиксов входных и выходных сигналов и состояний (в текущей реализации данный параметр всегда включен); ⎯
"Детерминированность" – является ли управляющий автомат
детерминированным автоматом; ⎯
"Абстрактные входы" – являются ли входные сигналы абст-
рактными; ⎯
"Абстрактные выходы" – являются ли выходные сигналы аб-
страктными; ⎯
"Тип триггеров" – указание триггера, на котором реализован
автомат, если по функциям возбуждения элементарных автоматов необходимо получить исходную СКУ и СВФ (проверка правильности реализации алгоритма). Так как алгоритм моделируется только при задании его на языке ТПиВ, то, кроме стандартных подпунктов, добавляется подпункт [Файл|Отчет], который позволяет результаты моделирования сохранить в файле отчета в формате RTF. 34
В пункт основного меню [Правка] кроме стандартных подпунктов добавляются следующие: [Правка|Вставить строку] – вставить новую строку в таблицу перед текущей; [Правка| Добавить строку] – добавить новую строку в конец таблицы; [Правка|Удалить строку] – удалить текущую строку. Эти пункты меню продублированы кнопками на панели инструментов
.
В основное меню добавляется пункт [Моделирование], содержащий подпункты: [Моделирование|Моделирование УА] – моделирование работы управляющего автомата; [Моделирование ОА] – моделирование работы операционного автомата; [Моделирование УА+ОА] – моделирование работы цифрового устройства. В пункт основного меню [Преобразования] добавляются подпункты: [Преобразования|Перевод в СКУ] – преобразование из ЯТПиВ на язык СКУ и СВФ; [Преобразования|Детерминизация…] детерминизация таблицы переходов параллельного алгоритма. В основное меню добавляется пункт [Операционный автомат], содержащий подпункты: [Операционный автомат|Создать] – создать новый файл с описанием операционного автомата на основе текущей таблицы; [Операционный автомат|Открыть] – открыть уже существующий файл с описанием операционного автомата (загрузить в оперативную память); [Операционный автомат|Сохранить] – сохранение текущего файла операционного автомата; [Операционный автомат|Сохранить как…] – сохранение текущего файла операционного автомата с новым именем; [Операционный автомат|Удалить] – удалить операционный автомат; [Операционный авто-
35
мат|Редактировать] – переход в режим редактирования операционного автомата, если он загружен в оперативную память. Компиляция. Когда Вы выбираете в меню пункты моделирования таблицы или преобразований, выполняется анализ правильности при компиляции. Все сообщения об ошибках и предупреждениях публикуются в списке сообщений (он расположен под таблицей, если включен пункт меню [Настройки|Показывать сообщения]). Если два раза щёлкнуть кнопкой мыши на отдельном сообщении, система покажет место её обнаружения. Ограничения: количество строк в таблице ограничено возможностями C++ Builder, т.е. типом int в пределах 1…32768. Для задания таблицы переходов кроме ограничений синтаксиса и грамматики существенных ограничений нет (исключая системные ограничения, например, объём оперативной памяти). Например, максимальное число сигналов в любом алфавите – 230 = 1073741823. Если Вам не хватает такого количества, пожалуйста, сообщите свои пожелания разработчикам.
2.6
Язык графических схем алгоритмов
Приложение позволяет описать алгоритм УА на языке графических схем алгоритмов (ГСА) и его расширении – языке параллельных граф-схем алгоритмов (ГСАП) [2,3]. Для этого с использованием пункта основного меню [Файл|Создать] или кнопки "Создать ГСА" на панели инструментов [Файл] открывают окно редактора предназначенного для записи граф-схемы алгоритма (при сохранении файла ему автоматически назначается расширение ".gsa"). 36
Запись алгоритма ведется на специальном рабочем поле представляющем собой сетку. В любую клетку сетки можно поместить графический символ. Графические символы помещаются на рабочее поле с использованием специальной панели инструментов, на которой находятся все допустимые в языке графические символы. Кнопка, помеченная крестиком, позволяет удалять из ГСА любые графические символы. С использованием пункта основного меню [Настройки|Опции] на вкладке "ГСА" производится настройка имен начального и конечного событий и выходных сигналов соответствующих им. Здесь же может быть включен режим "следящие" фигуры, при котором выбранный графический символ в виде контура перемещается за курсором, что облегчает работу пользователю. Если включено "автоматическое присвоение имен", то каждой операторной вершине автоматически назначается уникальное событие, в противном случае пользователю необходимо самому вводить событие для каждой операторной вершины. В этом случае нужно соблюдать синтаксис, а именно s12(y1,
y2). Так как язык ГСА ориентирован, в первую очередь, на описание алгоритмов цифровых устройств, осуществляющих преобразование информации, то в нем допускаются только двоичные входные и выходные сигналы. Пункт меню [Правка] в этом случае имеет свои особенности. [Правка|Отменить] позволяет сделать "откат" на 1 шаг при выполнении любого действия. Например, можно восстановить символ при его 37
случайном удалении. [Правка|Добавить строку] позволяет выполнить присоединение к рабочему полю ГСА внизу еще одной строки. Это может понадобиться, если рабочего поля сетки не хватило для построения ГСА. [Правка|Очистить ГСА] позволяет очистить все рабочее поле. Запись алгоритма на языке ГСА может быть преобразована на язык ТПиВ. Для этого можно воспользоваться или пунктом основного меню [Преобразование], или кнопкой
2.7
на панели инструментов.
Моделирование
Моделирование алгоритма работы ЦУ выполняется только в том случае, если он представлен на языке ТПиВ. Поэтому перед моделированием описание алгоритма с любого языка надо преобразовать на язык ТПиВ. Возможно моделирование отдельно УА. В этом случае входные воздействия задаются "вручную". Возможно моделирование отдельно ОА, при этом управляющие сигналы задаются "вручную". Возможно моделирование цифрового устройства, т. е. ОА+УА. В этом случае "вручную" задается только значение входных шин ОА и сигналы от внешней среды ("старт" и т. п.).
2.8
Моделирование управляющего автомата
Для моделирования УА необходимо на каждом такте работы иметь возможность задать входной сигнал и получить в ответ переход и выходной сигнал. В приложении это выполняется с использованием таблицы входных воздействий и результатов моделирования (рис. 2.5). 38
Начальное событие
Результат моделирования
Входное воздействие Рис. 2.5
В таблице входных воздействий и результатов моделирования первая строка является особой и представляет собой начальное состояние алгоритма. Поэтому в столбце "вход" задается s0. Все последующие строки в первой колонке должны содержать входные сигналы. Пользователь может редактировать лишь строки столбца "вход" (т. е. задавать входные воздействия). Остальные столбцы таблицы генерируются программой моделирования как результат реакции алгоритма на входные воздействия. Для удобства работы можно включить панель моделирования, содержащую четыре кнопки
. Эти кнопки позволяют
выполнить следующие действия соответственно их расположению в панели. "Добавить строку" — добавление пустой строки в конец таблицы моделирования (в меню аналога нет). "Вставить строку" — вставка пустой строки в таблицу моделирования впереди текущей строки (в которой находится курсор). При этом автоматически выполняется обновление результатов моделирования в таблице (аналог в меню [Редактирование|Вставить строку]). "Удалить строку" — удале39
ние строки из таблицы моделирования с автоматическим обновлением результатов моделирования (аналог в меню [Редактирование|Удалить строку]). "Создание отчета" — формирование отчёта в
RTF формате по результатам моделирования (аналога в меню нет). Кроме того, автоматически отслеживается любое изменение входных сигналов в таблице моделирования, если после редактирования ячейки входа пользователь нажал "Enter" или переместил курсор в другую ячейку. При обнаружении изменений выполняется обновление таблицы. Возможно также принудительное обновление кнопкой
или через меню ([Воздействия|Моделирование]).
При моделировании удобно пользоваться панелью управления входными воздействиями
. Кнопка "Сохранить"
позво-
ляет сохранить в файле входные воздействия из таблицы моделирования (расширение ".sgn"). Это же можно выполнить с использованием меню [Воздействия|Сохранить]. Кнопка "Открыть"
позволяет
загрузить входные воздействия из файла. При этом автоматически выполняется моделирование (аналог в меню [Воздействия|Открыть]). Это является удобным, например, если алгоритм модифицирован и требуется промоделировать его работу на тех же входных воздействиях, что алгоритм до модификации.
2.9
Моделирование операционного автомата.
Для моделирования ОА необходимо на каждом такте работы иметь возможность задать управляющий сигнал для него (выходной сигнал от УА) и получить результат его работы и осведомительный сигнал (входной сигнал для УА). В приложении это выполняется с 40
использованием специального окна, которое можно открыть, если алгоритм работы устройства задан на языке ТПиВ. Для этого используется [Операционный автомат|Создать], если ОА проектируется для алгоритма или [Операционный автомат| Открыть], если ОА уже описан и надо его редактировать. Во втором случае необходимо указать имя файла (расширение ".oa"), в котором находится описание ОА. Нужно учесть, что при этом описание автомата загружается из файла в оперативную память, а для его последующего редактирования необходимо выполнить [Операционный автомат|Редактировать]. Обратите внимание, что с этим окном можно будет работать только после ввода алгоритма на каком-либо языке, устранения возможных синтаксических ошибок и преобразования его в конечном итоге на язык ТПиВ. Окно моделирования операционного автомата представляет собой редактор для описания операционного автомата (рис. 2.6). Окно "Операционный автомат" состоит из четырех частей. Первая часть, расположенная вверху, это панель управления, содержащая четыре кнопки. Кнопка "Применить и закрыть" — определяет момент завершения описания ОА, сохранения его в оперативной памяти и закрытия этого окна. "Применить" — позволяет сохранить в оперативной памяти текущее описание ОА без выхода из окна редактирования ОА. "Отменить изменения" — отменить сделанные изменения с момента последнего входа в режим редактирования ОА. "Моделирование ОА" позволяет перейти к моделированию ОА. Далее окно разделено на три части. Правая часть используется для описания элементов памяти ОА и шин (входные, выходные и 41
двунаправленные шины, регистры, счетчики, триггеры и т.п.), и её рекомендуется заполнить в первую очередь. Последние две части расположены слева друг над другом и позволяют описать микрооперации, выполняемые по соответствующему выходному сигналу от УА, и входные сигналы УА, формируемые ОА. Набор выходных {yi} и входных сигналов {xi} редактор ОА при загрузке автоматически берет из текущей ТПиВ УА. Отметим, что при удалении какого-либо сигнала из таблицы и входе в режим редактирования ОА, это будет обнаружено и появится запрос об удалении его из ОА. Допустимый синтаксис для управлющих сигналов (микроопераций) и осведомительных сигналов приведен в описании языка РП на с. 10.
Рис. 2.6
Для того, чтобы описать микрооперации, выполняемые по какомуто выходному сигналу УА, нужно выбирать его из списка. Окно выбора вызывается по нажатии кнопки раскрытия списка на панели или двойным нажатием кнопки мыши (можно вводить и с клавиатуры, но не рекомендуется из-за возможности внесения ошибок). Точно так же описываются входные сигналы УА (в случае некорректного описания 42
в этом поле появляются сообщения об ошибке). Каждому выходному сигналу УА можно назначить одну или несколько микроопераций. Описание каждой микрооперации должно начинаться с новой строки. Нельзя в одной строке описать несколько микроопераций. Каждому входному сигналу ставится в соответствие один бит. Этот бит может быть как разрядом регистра, так и допустимой логической функцией над отдельными разрядами. Входной сигнал не может быть результатом арифметической операции. Все регистры в начале моделирования автоматически инициализируются нулями. На входных шинах пользователь должен сам задать нужные значения с помощью пункта меню [Установить шины] или по нажатии кнопки "BUS"
.
Вся информация об операционном автомате может быть сохранена в файле *.oa, который будучи назван тем же именем, что и соответствующая ему таблица переходов *.tbl, и находясь в том же каталоге, автоматически открывается вместе с открытием таблицы и доступен для редактирования и моделирования. Если файл операционного автомата назван другим именем, тем не менее имеется возможность открыть его для любой таблицы, используя соответствующий пункт меню программы. Моделирование работы ОА (во время моделирования изменения в его описании запрещаются) производится с использованием меню [Воздействия]. [Воздействия|Открыть] – открыть существующий файл с последовательностью входных сигналов операционного автомата. [Воздействия|Сохранить] – сохранить последовательность входных сигналов операционного автомата в файле. [Воздейст43
вия|Сохранить как…] – сохранить входные сигналы операционного автомата в файле с вводом имени файла. [Воздействия|Установить шины] – установка начальных значений шин. [Воздействия|Вызов ОА] – переход в режим редактирования операционного автомата. При моделировании удобно пользоваться кнопками панели инструментов "Моделирование"
. Эти кнопки
позволяют, соответственно: "Открыть" – открыть существующий файл с последовательностью входных сигналов операционного автомата (если был сохранён ранее); "Сохранить" – сохранить последовательность входных сигналов операционного автомата в файле; "S0" – установить начальное событие алгоритма; "Установить шины" – установить начальные значения шин; "Такт" – моделировать работу ОА по тактам; "Стоп" – прекратить моделирование; "Автоматическое моделирование" – включить автоматическое моделирование. Представление результатов моделирования. Второй (справа) список регистров и их значений включает в себя также два поля: ⎯
поле имен регистров – вводится "вручную" или заполняется
автоматически (в этом случае выводятся все регистры) при установленном флажке в настройках; ⎯
поле значений регистров – заполняется автоматически при
моделировании. Значение данного поля привязано к выбранной строке в первом списке, т.е. зависит от номера шага моделирования.
44
При изменении какой-либо строки или входных шин проводится повторное моделирование, изменяются значения регистров и выходных сигналов. Значение регистров может быть представлено, в зависимости от желания пользователя, либо в двоичной, либо в шестнадцатеричной, либо в десятичной системах счисления. Для этого используются кнопки установления системы счисления
, соответственно
слева направо: представление регистров в двоичном формате; представление регистров в шестнадцатеричном формате; представление регистров в десятичном формате. Ограничения: количество шагов моделирования и количество отображаемых регистров ограничено возможностями C++ Builder, т. е. типом int в пределах 1…32768. Для всех списков и полей данных используется стандартное ограничение по длине int (32768), что достаточно для любых практических нужд. Моделирование цифрового устройства (УА+ОА) [Моделирование |Моделирование ОА] — моделирование операционного автомата, при этом открывается окно моделирования ОА. [Моделирование|Моделирование УА+ОА] — моделирование цифрового устройства, при этом открывается окно моделирования УА+ОА. [Операционный автомат|Создать] - присоединение к текущей таблице переходов изначально пустого операционного автомата, т. е. структуры данных, предназначенной для хранения информации о микрооперациях, соответствующих сигналам управляющего автомата, регистрах, данных, передаваемых в качестве осведомительных сигналов, и т. д. 45
[Операционный автомат|Открыть] — открытие файла *.oa, содержащего структуру операционного автомата, и присоединение его к текущей таблице переходов. [Операционный автомат|Сохранить] — сохранение ОА в существующем файле *.oa без запросов имени. [Операционный автомат|Сохранить как] - сохранение ОА в файле *.oa с запросом нового имени. [Операционный автомат|Удалить] — удаление операционного автомата. После выполнения этого действия текущая таблица переходов не будет содержать ссылок на ОА. [Операционный автомат|Редактировать] — открытие окна редактирования ОА. Моделирование УА+ОА. При моделировании ЦУ полностью, т.е. УА+ОА в стандартное меню добавляются следующие пункты. [Файл|Отчёт] (на панели инструментов кнопка
) — для создания
отчёта в формате RTF по результатам моделирования. [Моделирование|Пуск] (на панели инструментов кнопка
) — пуск автоматиче-
ского моделирования ОА+УА. [Моделирование|Шаг] (на панели инструментов кнопка
) — выполнение одного шага алгоритма модели-
рования ОА+УА. [Моделирование|Пауза] (на панели инструментов кнопка
) — приостановить автоматическое моделирование (про-
должить — Пуск). [Моделирование|Стоп] (на панели инструментов кнопка
) — остановить моделирование без возможности продол-
жения. [Моделирование|Частота] – относительная скорость автоматического моделирования (от одно- до четырехкратной). [Моделирование|Начальное состояние] (на панели инструментов кнопка 46
)—
задание начального состояния УА. [Моделирование|Установка шин] (на панели инструментов кнопка
) — установка начальных значе-
ний на шинах ОА. [Моделирование|Предел] — установка предела числа шагов автоматического моделирования. [Моделирование|Вызов ОА] (на панели инструментов кнопка
) — вызов окна
ОА.
3 Примеры проектирования цифровых устройств Рассмотрим два примера проектирования цифровых устройств. В первом примере проектируемое цифровое устройство реализует алгоритм распознавания заданных цепочек-образов во входной последовательности символов. Особенностью этой задачи является то, что цифровое устройство, реализующее алгоритм, будет состоять только из управляющего автомата и не будет содержать операционный автомат, т. к. не осуществляется преобразование входной информации, а осуществляется только её анализ. Такое устройство относится к классу "автомат-распознаватель". Во втором примере проектируемое цифровое устройство реализует параллельный алгоритм вычисления арифметического выражения. В этом случае цифровое устройство будет содержать как управляющий автомат, так и операционный автомат.
47
3.1 Автомат-распознаватель Рассмотрим решение задачи, в которой требуется за один просмотр входной последовательности символов, заканчивающейся специальным символом "bottom", идентифицировать наличие в ней хотя бы одной из трёх искомых цепочек-образов. Входной алфавит
Z=(z1, ... ,z9). Искомые цепочки-образы: z1z2z2 ... z2z1; z3z2z1; z3z2z3 ... z2z3z1 (многоточие означает появление символа, стоящего слева и справа от него, любое число раз, но не менее одного). Необходимо выполнить проектирование и исследование алгоритма работы ЦУ для решения этой задачи. При разработке алгоритма поиска совершенно не существенна двоичная кодировка символов алфавита в реальной системе. Поэтому на данном этапе удобно работать с абстрактными входными сигналами. Для разработки алгоритма с использованием СОМПА рекомендуется выполнить следующие шаги проектирования. На первом шаге запишем алгоритм поиска цепочек в последовательности символов регулярным выражением на языке РВАС (вопросы идентификации цепочек-образов рассмотрены в [4]):
s(y)=s0(z1z2{z2}z1∨z3z2z1∨z3{z2z3}z1). На втором шаге в окне редактора РВАС введем это регулярное выражение (рис. 3.1).
Рис. 3.1
48
На третьем шаге выполним преобразование описания алгоритма с языка РВАС на язык СКУ и СВФ. Следует обратить внимание, что полученный алгоритм поиска является параллельным и для его описания используется НДСКУ [2]. Поскольку выразительные возможности языка РВАС при записи алгоритмов поиска цепочек-образов ограничены [4], выполним коррекцию НДСКУ добавлением еще одного уравнения (рис. 3.2).
коррекция НДСКУ
Рис. 3.2
На четвертом шаге выполним перевод алгоритма с языка НДСКУ и СВФ на язык ТПиВ (рис. 3.3).
49
Рис. 3.3
На пятом шаге выполняется тестирование и исследование алгоритма на возможность его оптимизации. Документировать в пособии все, относящееся к этому шагу невозможно и ниже приводится лишь пример обнаружения цепочки z3z2z1 во входной последовательности (рис. 3.4).
сигнал искомая
б
цепочка
Рис. 3.4
50
3.2
Автомат-преобразователь
Разработать для вычисления арифметического выражения
Y=A+B+C+D+E цифровое устройство, реализующее максимально возможный параллельный алгоритм (по критерию минимума времени вычисления) на уровне регистровых передач. Операнды A, B, C, D, E представлены в дополнительном коде, результат Y также должен быть получен в дополнительном коде. Формат операндов – однобайтовые целые числа, левый разряд – знаковый. Число входных шин устройства равно пяти, а выходная шина одна. При разработке алгоритма ЦУ не будем учитывать возможные исключительные ситуации (переполнение при сложении) из-за ограниченного объёма методических указаний. На первом шаге выполним "словесное" проектирование устройства и алгоритма его работы. Так как на входных шинах устройства можно установить значение всех пяти слагаемых, то распараллелим вычисление выражения на две ветви: (A+B) и (C+D+E). По завершении вычислений в ветвях произведем суммирование полученных результатов. Для этого в устройстве предусмотрим два сумматора накапливающего типа. К входу первого сумматору через мультиплексор подключим две входные шины, а к входу второго — три. Итоговое суммирование выполним на первом сумматоре, для чего к его входу подключим выход второго сумматора. Этим словесным описанием в общем виде фактически определены алгоритм работы УА и структура ОА. Теперь необходимо выполнить их детализацию. 51
На втором шаге выполним разработку функциональной схемы ОА, определив все необходимые информационные связи и управляющие сигналы. Обратите внимание, что осведомительные сигналы в данном случае отсутствуют, т. к. алгоритм линейный. В результате получим схему, приведенную на рис. 3.5. Разумеется, в общем случае это не окончательный результат разработки ОА, а его начальный вариант. Последующие этапы проектирования приведут к уточнению схемы, а, может быть, и к пересмотру исходного алгоритма. DI1
DI2
DI3
DI4
DI5
Y2 MS1:=DI1 MS1 Y3 MS1:=DI2
SM1 Y1
RSM1:=0
RSM1
Y2,Y3 RSM1:=SM1
MS2:=DI3 Y5 MS2
MS2:=DI4 Y6 MS2:=DI5 Y7 MS2:=RSM1 Y8
SM2 Y4
RSM2:=0
Y5,Y6,Y7,Y8 RSM2:=SM2
RSM2
Рис. 3.5
На третьем шаге с использованием "СОМПА" формализуем алгоритм УА. Для этого откроем окно редактора языка ГСА. С использо52
ванием [Настройки|Опции] открыть окно настроек и на вкладке "ГСА" произвести настройку имен начального, конечного событий и выходных сигналов УА. Здесь же может быть включен режим "следящие" фигуры. Рекомендуется отключить "автоматическое присвоение имен", с тем, чтобы на последующих этапах было легче устанавливать соответствие между ГСА и ТПиВ. Напоминаем, что в этом случае нужно соблюдать синтаксис, а именно:<событие><(<список управляющих сигналов>)>. Например, s12(y1,y2). ГСА приведена на рис. 3.6. Из исходного задания ясно, что для объединения параллельных ветвей нужно использовать конъюнктивный соединитель, причем выход за него выполняется в случае завершения процессов в параллельных ветвях. Для осуществления этого каждая ветвь заканчивается операторной вершиной с "пустым" выходным сигналом, соответственно,
sk1(ye) и sk2(ye). Далее организуется цикл ожидания завершения процесса в другой ветви. Конечно, в данном алгоритме можно было поступить более просто. Достаточно в левой ветви вставить операторную вершину с "пустым" выходным сигналом и время выполнения ветвей будет выравнено, и тогда не нужны циклы ожидания. Но если в алгоритме есть ветвления и циклы, то такой подход невозможен. На четвертом шаге преобразуем описание алгоритма с языка ГСА на язык ТПиВ. При этом преобразовании могут быть выявлены различные ошибки. Например, недостижимые события или отсутствие перехода из какого-то события. В этом случае нужно разобраться с этими ошибками (можно в ГСА, можно в ТПиВ, в зависимости от того,
53
как удобнее разработчику). Если ошибок нет, переходим к следующему шагу. На пятом шаге при открытой таблице переходов с использованием [Операционный автомат|Создать], открываем окно "Операционный автомат" и описываем ОА проектируемого устройства (рис. 3.7). Описываются все регистры ОА, выходные сигналы от УА к ОА (yi), входные сигналы УА от ОА (xi). При этом можно проверить правильность выполнения в ОА каждого yi и правильность формирования xi.
54
S0(Y0)
RSM1:=0 S11(Y1)
RSM2:=0 S21(Y4)
MS1=DI1 RSM1:=RSM1+DI1 S12(Y2)
MS2=DI3 RSM2:=RSM2+DI3 S22(Y5)
MS1=DI2 RSM1:=RSM1+DI2 S13(Y3)
MS2=DI4 RSM2:=RSM2+DI4 S23(Y6)
S1K(Ye)
MS2=DI5 RSM2:=RSM2+DI5 S24(Y7)
S2K
S2K(Ye)
S1K
C
MS2=RSM1 RSM2:=RSM2+RSM1 S1(Y8)
SK(Ye)
55
Рис. 3.6
Рис. 3.7
На шестом шаге приступаем к моделированию работы устройства. Для этого выбираем [Моделирование|Моделирование УА+ ОА]. Затем, используя кнопку
, устанавливаем значения операндов A, B, C, D,
E на входных шинах DI1 – DI5 (рис. 3.8).
Рис. 3.8
С использованием панели инструментов "Представление регистров"
устанавливаем систему счисления, в которой будет
представлено содержимое регистров ОА. С помощью кнопки
вы-
полняем потактовое моделирование работы устройства, с проверкой полученного результата после каждого такта. При достижении конечной вершины моделирование завершается сообщением "нет активных событий" (рис. 3.9). 56
Чтобы убедиться в правильности работы устройства, надо, как минимум, подготовить такой набор входных данных, при которых выполняется прохождение по всем ветвям алгоритма. Выполнив "прогоны" алгоритма по этим данным в тактовом режиме, рекомендуется, перейдя в автоматический режим моделирования, выполнить еще прогоны. При этом выбираются входные данные из допустимого диапазона так, чтобы проверить работу алгоритма в "экстремальных" условиях (максимальные и минимальные значения исходных операндов и результата и т. п.).
Рис. 3.9
Как правило, после выполнения этих действий у разработчика накапливается информация о возможности совершенствования устройства (модификации структуры ОА и алгоритма УА). Чтобы проверить эти возможные решения, нужно вернуться к соответствующему шагу, внести изменения с повторением последующих шагов.
57
Список литература 1. Глушков В. М. Синтез цифровых автоматов. — М.: Физматгиз, 1962. — 476 с. 2. Вашкевич Н. П. Синтез микропрограммных управляющих автоматов: Учеб. пособие. — Пенза: Пенз. политехн. ин-т, 1990. — 115 с. 3. Вашкевич Н. П. Недетерминированные автоматы и их использование для синтеза систем управления: Учеб. пособие/
Н. П. Вашкевич, С. Н. Вашкевич. — Пенза: Изд-во Пенз. гос. техн. унта, 1996. — 88 с.
58
4. Вашкевич Н. П. Проектирование параллельных алгоритмов в задачах идентификации: Учеб. пособие/ Н. П. Вашкевич, Е. И. Ка-
линиченко. — Пенза: Изд-во Пенз. гос. ун-та, 1999. — 80 с.
59
Оглавление 1
ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ ОБРАБОТКИ
ИНФОРМАЦИИ……. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.1 ЯЗЫКИ РЕГИСТРОВЫХ ПЕРЕДАЧ (ЯРП) . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2
9
ЯЗЫК РЕГИСТРОВЫХ ПЕРЕДАЧ СОМПА. . . . . . . . . . . . . . . . . . . . . .
ИНСТРУМЕНТАЛЬНАЯ СИСТЕМА РАЗРАБОТКИ И ВЕРИФИКАЦИИ
ПАРАЛЛЕЛЬНЫХ АЛГОРИТМОВ. . . . . . . . . . . . . . . .
3
3
13
2.1
КОНТЕКСТНО-НЕЗАВИСИМОЕ МЕНЮ. . . . . . . . . . . . . . . . . . . . . . . .
16
2.2
КОНТЕКСТНО-ЗАВИСИМОЕ МЕНЮ. . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3
ЯЗЫК РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ АЛГЕБРЫ СОБЫТИЙ. . . . . . . . . . . . .
17
2.4
ЯЗЫК СИСТЕМ КАНОНИЧЕСКИХ УРАВНЕНИЙ И СИСТЕМ ФУНКЦИЙ ВЫХОДОВ. . . . .
2.5
ЯЗЫК ТАБЛИЦ ПЕРЕХОДОВ И ВЫХОДОВ. . . . . . . . . . . . . . . . . . . . . . .
20
2.6
ЯЗЫК ГРАФИЧЕСКИХ СХЕМ АЛГОРИТМОВ. . . . . . . . . . . . . . . . . . . . .
22
2.7
МОДЕЛИРОВАНИЕ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.8
МОДЕЛИРОВАНИЕ УПРАВЛЯЮЩЕГО АВТОМАТА. . . . . . . . . . . . . . . . .
27
2.9
МОДЕЛИРОВАНИЕ ОПЕРАЦИОННОГО АВТОМАТА. . . . . . . . . . . . . . . .
27
ПРИМЕРЫ ПРОЕКТИРОВАНИЯ ЦИФРОВЫХ УСТРОЙСТВ. . . . . . .
29
3.1
АВТОМАТ-РАСПОЗНАВАТЕЛЬ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.2
АВТОМАТ-ПРЕОБРАЗОВАТЕЛЬ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
СПИСОК ЛИТЕРАТУРЫ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36 42
60