+7(495)926-7456
+7(495)926-7456
Электронные компоненты  Мануалы 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 [ 73 ] 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

Рассмотрим назначение и особенности программной реализации отдельных блоков алгоритма, которые обозначены цифрами на рис. 7.13.

Блок I. Стек здесь организуется прежде всего для обеспечения возможности использования подпрограммы. Кроме того, стек будем использовать для временного хранения значения X(t) в течение одного цикла вычисления Z{t).

Блок 2. Обнуление очереди означает установку нулевых значений сигнала X(t) в тактах, предшествующих началу выполнения алгоритма. С этой целью в Н-L устанавливают начальный адрес очереди, который определяется величиной N. Если для определенности взять N = \0, то этот адрес будет равен 800 А. Затем обнуляется аккумулятор и его содержимое поочередно пересылается во все ячейки ОЗУ, образующие очередь.

Блок 3. Вводим Y{t) и на его основе формируем в Н-L адрес соответствующего коэффициента W{t). Поскольку и X(t) являются восьмиразрядными двоичными числами, для их перемножения воспользуемся подпрограммой, рассмотренной ранее в примере 7.5. Перед обращением к этой подпрограмме следует один сомножитель расположить в D-E, а другой - в аккумуляторе. Поэтому пересылаем \}У(1) из ПЗУ в Е, обнуляем регистр D и переходим к следующему блоку.

Блок 4. Вводим новое значение X(t) в А я дублируем его в стеке, чтобы впоследствии иметь возможность выполнить операцию сравнения X(t) > Хр. Далее вызываем подпрограмму умножения по метке MULT. Подпрограмма должна заканчиваться командой возврата RET. Заметим, что в результате выполнения подпрограммы произведение W(t). X{f) окажется в Н-L. Поскольку пара регистров Н-L понадобится в дальнейшем для хранения адресов, то осуществим обмен информацией между Н-L и D-Е.

Блок 5. Вычисляем значение 0,75 Х(/) для засылки в конец очереди. Поскольку 0,75 = 0,5+ 0,25, то для умножения на константу 0,75 достаточно сдвинуть X{t) дважды в сторону младших разрядов и вычислить сумму результатов этих сдвигов. (По условию задачи дробную часть числа отбрасываем.) Обычно такая реализация умножения целесообразна, если двоичная запись константы содержит небольшое число единиц. Это позволяет ускорить выполнение операции умножения на константу без существенного увеличения числа ячеек памяти, занимаемых программой по сравнению со случаем обращения к стандартной подпрограмме умножения.

Блок 6. Осуществляем обращение к очереди данных, содержащейся в ОЗУ Сначала извлекаем значение 0,75 X{t-Л) из ячейки, адрес которой хранится в указателе очереди и которая является первой в очереди в данный момент времени t. После этого указанная ячейка становится последней и в нее записывается значение 0,75 X(t).

Блок 7. Вычисляем адрес следующей ячейки очереди, для чего значение младшего байта указателя очереди уменьшаем на единицу. Если полученное значение этого байта окажется равным нулю, то устанавливаем первоначальное значение указателя очереди, соответствующее заданной длине очереди N.

Блок 8. Производим сравнение X{t) с порогом Хд. Предварительно уста-наплнваем значение W{t)X(t) в H-L, чтобы при любом результате сравнения вывод Z(t) осуществлялся из регистров Н-L.

Блок 9. Поскольку слагаемое W{t)X(i) занимает два байта, то для вычисления результата Z(t) целесообразно воспользоваться командой DAD D. Для этого предварительно в D-Е формируем Второе слагаемое, младший байт которого равен 0,75 X(t-N), а старший - нулю.

Блок 10. Вывод Z(/) осуществляем через один порт побайтно начиная с младшего. После выполнения всех операций предусматриваем переход к новому циклу вычисления Z{f), который начинается с ввода Y(i) Вариантом окончания программы могло бы явиться использование команды «Останов» (НЕТ). В этом случае для инициирования программы каждый раз необходим сигнал запроса прерывания от ВУ.

Рассмотрим составленную программу еще раз и попытаемся отыскать возможности ее улучшения Заметим, например, что РОН С остается свободным на протяжении всей программы. Поэтому его можно использовать для хранения X{t), что позволит заменить команды обращения к стеку более экономичными командами пересылки данных между регистрами ЦПЭ.



Глава о .

ПРИМЕНЕНИЕ 5ис Л?л1к,р0г?р0ц£сс0рнсг0 КО¥4плекта CEfMH чсбС

§81 ПЛ"ЛЛГН&И" П£РМФГ?КЙЧЫЙ АДАПТЕР

Как было рассмотрено в § 7.4, в простых случаях обмен данными между ЦПЭ и внешними устройствами (ВУ) при использовании параллельного восьмиразрядного кода можно организовать с помощью многорежимного буферного регистра (МБР) К589ИР12. Однако более широкие возможкдсти для реализации обмена данными открывает использование программируемой БИС параллельного периферийного адаптера (ППА) К580ИК55.

Этот адаптер имеет 24 линии ввода-вывода, которые сгруппированы в три восьмиразрядных канала (порта) А, В и С, причем канал С разделен на две части: младшие его разряды РСЗ-РСО составляют подканал С1, а старшие разряды РС7-РС4 - подканал С2. Программирование адаптера осуществляется с помощью управляющих слов, поступающих из ЦПЭ в специальный регистр ППА и задающих функциональное назначение каналов и их отдельных линий. С помощью программирования можно получить около ста различных конфигураций этой БИС, что позволяет обслуживать почти любое ВУ без дополнительной внешней логики.

Структурная схема ППА (рис. 8.1) содержит следующие узлы: восьмиразрядный буфер данных (БД), имеющий три устойчивых состояния и обеспечивающий двунаправленную связь внутренней шины ППА с шиной данных МПВУ; три восьмиразрядных буфера каналов А, В и С, обозначенных БКА, БКВ и БКС1 БКС2; устройство управления записью и чтением (УУ Зп/Чт), которое управляет всеми внутренними пересылками данных, управляющих слов и слов состояния ППА; два устройства управления УУАС2 и УУВС1, связанные соответственно с каналами Л и С2 и с каналами Б и С1.

Выводы БИС ППА имеют следующее назначение: ЧТ - вход для передачи сигнала считывания информации (байта данных или слова состояния) из ППА в ЦПЭ, поскольку операция считывания осуществляется с помощью команды ввода IN, то на вход ЧТ через элемент «И» подаются от микропроцессора сигналы ВВОД и ПРИЕМ, которые перекрываются во времени. ЗП - вход для подачи сигнала занесения информации (байта данных или управляющего слова) из ЦПЭ в ППА; поскольку эта операция осуществляется с помощью команды вывода OUT, то на вход ЗП подаются через элемент «И» сигналы ВЫВОД и ВЫДАЧА; ВК - вход для подачи сигнала разрешения работы ППА; на этом входе, как и на предыдущих двух, активным является нулевой уровень сигнала, если же ВК = 1, то буфер данных БД устанавливается в высокоимпедансное состояние; ко входу ВК подключается одна из свободных линий шины адреса ША, выделенная для адреса-



Al-•

СБРОС-

РСЗРСО

НЦ" РВ7-РВ0 Б KB и*-

Рис. 8.1. Структурная К580ИК55

ЦИИ данного ППА, либо один из выходов дешифратора адреса; А1, АО - адресные входы, определяющие канал ППА, к которому производится обращение: код 00 соответствует каналу Л, 01 - каналу В,

10 - каналу С, И -управляющему регистру, в который заносится управляющее слово при программировании ППА; СБРОС - вход для подачи сигнала начальной установки ППА; этот вход подключается к системной шине сброса МПВУ.

При подаче сигнала СБРОС все каналы установлены в режим ввода (т. е. 24 выходные линии находятся в высокоймпедансном состоянии). Перед началом выполнения операций ввода-вывода данных

через ППА необходимо осу-РА7-РА0 ществить его программирование.

С этой целью в ППА засылает-РС7-РП ся управляющее слово, которое устанавливает требуемый режим работы адаптера.

Имеются три основных режима работы ППА: режим О - простой ввод-вывод; режим 1 - стробируемый ввод-вывод; режим 2 - двунаправленная ма-схема ППА ™страль. В режиме О могут работать все три канала, в режиме 1 - каналы Л и fi, в режиме 2 - только канал Л. При программировании ППА используются два формата управляющего слова: первый предназначен для задания режима работы и направления включения каналов; второй - для установки или сброса произвольного разряда канала С. Признак формата содержится в разряде Д7 управляющего слова: 1 соответствует формату 1, а О - формату 2. Остальные разряды управляющего слова в первом формате имеют следующее назначение: ДО, Д1, ДЗ, Д4 - направление включения каналов С2, В, С1 и Л соответственно (1 означает включение канала на ввод, а О - на вывод); Д2 - выбор режима работы группы каналов fi и С2 (О - режим О, 1 - режим 1); Д6, Д5 - выбор режима работы группы каналов Л и С1 (00 - режим О, 01 - режим 1, 10 или

11 - режим 2).

При каждом изменении режима работы, т. е. при поступлении нового управляющего слова первого формата, все выходные регистры, а также триггеры состояния ППА сбрасываются. Режимы работы каналов Л и fi задаются независимо и они определяют режим работы подканалов С1 и С2. При работе каналов Л и В в режиме О оба подканала С! и С2 составляют отдельный восьмиразрядный канал, работающий в режиме 0. Если каналы Л и В работают в режиме 1, или канал Л работает в режиме 2, то линии канала С используются для обмена управляющими сигналами с ВУ и распределяются между каналами Л и fi.

Разряды управляющего слова во втором формате имеют следующее назначение: ДО - установка (ДО = 1) или сброс (ДО = 0) разряда



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 [ 73 ] 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105