Цифровые автоматы в схемотехнике и программировании
Окружающая нас информация постоянно претерпевает преобразования. Однако не все окружающие нас преобразователи информации выполняет только функциональное отображение информации вход-выход. Результат преобразования зачастую зависит не только от того какая информация появилась на входе, но от того что происходило раньше.
Например, один и тот же вход – извинение соседа после того как он наступил вам на ногу – вызовет у вас одну реакцию в первый раз и совсем другую – в пятый раз.
Автомат – это пример устройства, реакция которого зависит не только от входа , но и от того что было раньше, то есть от состояния в предыдущий момент времени.
Компьютер – пример цифрового автомата. Он обладает памятью, которая хранит его состояние. В зависимости от состояния компьютер выполняет то или иное действие. Синоним термину «цифровой автомат» - «конечный автомат». Первый термин подчеркивает, что автомат работает с цифрами, то есть конечными наборами символов, второй – что его память конечна.
Однако компьютер слишком сложен для тех методов, которые мы будем рассматривать в этом курсе. Более подходящий пример – команды в операционной системе Unix, каждая их которых – конечный автомат.
Конечный автомат – абстракция, которая позволяет не рассматривать динамические состояния, которые возникают во время переходных процессов. Конечный автомат рассматривает состояния перед началом и после завершения перехода, в промежуточные моменты времени конечно-автоматное описание невозможно. Методы конструирования реальных устройств позволяют рассматривать конечно-автоматное описание как описание функции автомата, а переходные процессы учесть и скрыть от внешнего мира. Если эта задача решена, то можно рассматривать устройство как конечный автомат. Еще более простое соотношение между конечным автоматом и программой. Любой конечный автомат может быть представлен программой.
Мы будем употреблять термин «цифровой автомат» для устройств, которые реализуют действий над числами. Это сумматоры, умножители, делители, устройства для извлечения корня, вычисления тригонометрических функций и других операций, которые разработчик считает нужным реализовать аппаратно.
Отличия цифрового автомата от конечного автомата общего вида состоят в следующем:
он предназначен для представления чисел и выполнения операций над ними,
в нем на самом первом этапе, этапе синтеза одноразрядного или многоразрядного сумматора, решается проблема гонок (порождаемых задержками),
цифровой автомат имеет погрешность представления – погрешность, которая возникает при представлении счетных или несчетных числовых систем из-за ограниченного количества разрядов и памяти. Отличия реализованной операции от арифметической в особо важных случаях выражаются дополнительными сигналами: переполнением, сигналом "машинного нуля",
цифровой автомат слишком сложен для автоматического синтеза.
Аппаратно реализуются, в основном, сумматоры, умножители и делители. Более сложные операции сводятся к этим последним, так что арифметическое устрйство используется в паре с управляющим автоматом, который реализуется либо аппаратно, либо программно.