© А.С. Ковалев, А.П. Лукьянова, А.А. Шалыто
Санкт-Петербургский государственный университет информационных технологий, механики и оптики
Проектная документация
Исполняемая программа
Известны различные методы программной и аппаратной реализаций булевых формул. В описанном в данной работе методе объединяются идеи как программных, так и аппаратных методов реализации булевых формул. При этом сначала для формулы строится линейный бинарный граф, по которому эта формула может быть программно вычислена. Граф преобразуется в схему мультиплексорный каскад. Анализ формул, которые формируются на выходе каждого элемента каскада показывает, что при таком подходе формула реализуется не по подформулам, а по фрагментам. На основе возврата от аппаратной реализации к программной (моделируя каскад) формируется принципиально новый способ программного вычисления булевой формулы по фрагментам, которые могут не являться ее подформулами.
Объясним разницу между подформулой и фрагментом формулы. Например, в формуле a & b | c & d выражение b | c & d не является подформулой, но является фрагментом формулы.
Вычисление булевой формулы предлагаемым способом на каждом этапе добавляет по одному операнду в уже вычисленный фрагмент формулы, начиная с ее конца. Например, для формулы, указанной выше, будут последовательно вычислены значения следующих ее фрагментов:
d,
c & d,
b | c & d,
и наконец, a & b | c & d.
Это позволяет вычислять булевы формулы быстрее, чем при использовании операторного (например, польского) способа, и отказаться от вычисления по переходам, как это выполняется при применении линейных бинарных графов.
При реализации данного проекта для построения линейных бинарных графов и мультиплексорных каскадов были применены теория компиляторов и SWITCH-технология.