Общий алгоритм функционирования радиотехнического устройства. Синтез операционного узла. Синтез управляющего узла, страница 2

 Одновременно с подачей данных во входном регистре вырабатывается сигнал 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, которая осуществляет останов процессора до следующего прерывания.

Листинг программы приводится в приложении 1.