Одновременно с подачей данных во входном регистре вырабатывается сигнал INT. Он подается на вход запроса векторного прерывания
микропроцессора. По шине данных выдается сигнал чтения внешнего устройства I/OR и данные из входного порта поступают в аккумулятор для
обработки. После этого происходит установка входного регистра в исходное
положение, т.е. сбрасывается сигнал INT на выходе
регистра. По адресной шине передаются адреса памяти, используемые процессором.
Различие между ОЗУ и ПЗУ осуществляется по старшему разряду адресной шины А10 .
С его помощью, а также совместно с сигналами системного контроллера MEMR / MEMW производится выборка микросхем памяти и необходимые
действия с данными (чтение / запись).
По сигналу записи во внешнее устройство I/OW происходит
обновление выходных данных в выходном регистре и их немедленная выдача на ЦАП.
Схема на выходе ЦАП выполняет функцию преобразования выходного тока ЦАП 0…1 мА
в напряжение –3…+3 В. Эта задача решается каскадом на операционном усилителе,
который имеет высокое входное и низкое выходное сопротивление. Работу
процессора синхронизирует генератор на микросхеме КР580ГФ24. Полная структурная
схема разрабатываемого устройства представлена на рис. 3.
5. Синтез управляющего узла
Все начальные значения переменных, их адреса и адреса стека выделяются автоматически
при ассемблировании и линковке программы. Непосредственно задаются только
адреса портов ввода/вывода.
По адресу 0 в ПЗУ записывается короткая программа инициализации. Она
загружает в указатель стека его адрес.
В данном устройстве программа фильтра прерывающая, т.е. она выполняется в
разрыве основной программы. Основная же программа представлена циклом останова HLT, выход из которого осуществляется прерыванием RST 7.
При выполнении команды RST 7, процессор записывает
в стек значение слова состояния PSW и содержимое
используемых в программе регистров. По окончании фильтрующей программы эти
значения “выталкиваются” из
стека обратно.
После ввода данных их необходимо преобразовать в
дополнительный код, так как процессор работает именно в дополнительном коде. Это
так же предусмотрено в программе.
Программа рассчитана на работу с целыми числами, но так как умножение
осуществляется на дробное число 0.625, то появление дробных чисел с 3-мя
знаками после запятой неизбежно. В самом алгоритме умножения два младших
дробных знака отбрасываются для увеличения диапазона перемножаемых чисел.
В программе предусмотрена проверка на переполнение при умножении и суммировании.
Если складываются числа разных знаков, то переполнения быть не может. Если же
складываются числа одного знака и знак результата не равен знаку слагаемых, то
налицо переполнение. В этом случае произведение сдвигается на разряд вправо и
его знак инвертируется. При этом также отбрасывается дробный разряд. В качестве
суммы записывается максимальное число данного знака +127 или –128.
По окончании вычисления необходимо преобразовать выходной результат в код
ЦАП. Так как ЦАП работает по принципу, чем больше единиц в старших разрядах тем
больше число на выходе ЦАП, то удобнее использовать дополнительный код,
проинвертировав в нем знаковый разряд. Так числу 00000000 соответсвует -128,
10000000 0
11111111 +127
По окончании работы фильтрующей программы выполняется разрешение прерываний
и происходит возвращение к основной программе, т.е. к команде HLT, которая осуществляет останов процессора до следующего прерывания.