Понятие программной реализации алгоритмов. Программные реализации функций алгебры логики (ФАЛ) – 2 часа.
Основой систем железнодорожной автоматики являются дискретные устройства, которые подразделяются на два больших класса, комбинационные автоматы (схемы без памяти) и последовательные автоматы (схемы с памятью). Аппаратная реализация этих устройств была основным способом построения СЖАТ до начала 80-х годов. Алгоритмы управления, которые выполняются с помощью дискретных устройств, также можно подразделить на комбинационные и автоматные. При их программной реализации могут быть использованы методы, основанные на известных способах синтеза автоматов на аппаратных средствах или специальные методы, удобные только для программных средств.
Комбинационные алгоритмы чаще всего задаются с помощью функций алгебры логики, которые являются математическим аппаратом для представления комбинационных схем. Широкое практическое использование методов программной реализации ФАЛ стало возможным только в микропроцессорных системах. При этом качество программ оценивается следующими показателями: числом команд в программе; объемом памяти, необходимой для описания функции; объемом промежуточной памяти, необходимой для хранения промежуточных результатов вычислений; временем работы программы в выбранных единицах измерения (пропорционально числу выполняемых команд).
Существуют компиляционные и интерпретирующие методы программной реализации дискретных устройств.
При компиляционном методе для каждого дискретного устройства создается своя программа. Достоинством этого метода является то, что при выполнении программы не требуется ввода в ЭВМ исходных данных, кроме набора входных переменных и слова начального состояния (для автоматов с памятью). К компиляционным относятся методы непосредственного вычисления ФАЛ и метод бинарных программ.
При интерпретирующем методе строят универсальную программу, что является его достоинством. Однако при выполнении программы необходимо вводить в память ЭВМ данные о конкретном дискретном устройстве. К интерпретирующим методам относятся метод адресных программ, метод отображения входного набора и метод адресных переходов.
Метод непосредственного вычисления ФАЛ основан на вычислении отдельных частей логической формулы в соответствии с законами алгебры логики. Рассмотрим реализацию данного метода на примере функции
f = a (bc v bc) (1)
Алгоритм программы представлен на рис. 1. В табл. 1 приведена программа на языке Ассемблер.
Цифрами на рис. 1 указаны команды, которые реализуют соответствующий блок программы. Переменные а, b, с подаются в порты ввода с именами VAR1, VAR2, VAR3, а результат вычисления выводится в порт с именем RES. В памяти выделена область из трех ячеек М1, М2, МЗ для хранения соответственно переменных a, b и с. Адрес ячейки Ì1 имеет имя BASE. Переменные представлены значениями 0 и 1. Для каждой переменной отводится 1 байт, т. е. одна ячейка памяти, имеющая восемь разрядов (в восьмиразрядном микропроцессоре). Поэтому значению 0 соответствует слово 00000000, а значению 1 — слово 00000001.
Метод непосредственного вычисления обладает простотой и наглядностью. Размеры программ и время их вычислений определяются сложностью конкретных булевых формул.
Рис. 1. Алгоритм программы непосредственного вычисления
Таблица 1
№ |
Метка |
Мнемокод команды |
Операнды |
Комментарий |
1 2 3 4 5 6 |
START: |
LXI IN MOV INX IN MOV |
H, BASE VAR1 M, A H VAR2 M, A |
Адресация M1 a ® A a ® M1 Адресация M2 b ® A b ® M2 |
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
BASE: |
INX IN MOV CMA DCX ANA MOV MOV CMA INX ANA ORA DCX DCX ANA OUT JMP DB |
H VAR3 M, A A H M B, A A, M A H M В H H M RES START ?, ?, ? |
Адресация M3 с ® A с ® M3 Вычисление с Адресация M2 Вычисление bc bc ® B b ® A b Адресация M3 bc bc v bc Адресация M1 f = a (bc v bc) Вывод f Переход к команде 1 Ячейки М1, М2 и М3 |
Метод бинарных программ основан на том, что процесс вычисления ФАЛ можно свести к последовательности выполнения команд условного перехода i: если A, то j, иначе i + 1, где i — порядковый номер команды; А — булева переменная, значение которой проверяется данной командой. Если А = 1, то осуществляется переход к выполнению команды с порядковым номером j, если А = 0 — переход к выполнению команды с порядковым номером i + 1.
Алгоритм вычисления функции (1) по бинарной программе представлен на рис. 2. В табл. 2 приведена ее запись на языке Ассемблер.
Первые девять команд совпадают с соответствующими командами в табл
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.