Составители:
36
1 2n
, S
+
Abn-i сдвиг вправо (*2
-1
, A
Распределение регистров в команде mul ab
S=ACC.B – непрерывный 16-битовый регистр формирования
произведения дробных чисел.
В регистр В записывается множитель.
В регистре АСС п хранится множимое. В начале операции множимое
переписывается и сохраняется в рабочем регистре Wrk.
В регистре Wrk1 организуется счетчик циклов.
Основной цикл S=2
-1
(S
i
+Ab
n-i
) повторяется 8 раз. Если цифра множителя
B[0]=0, то с учетом размещения операндов на регистрах выполняется сдвиг
вправо ACC.B=sr(ACC.B), где ACC.B – соединение соответствующих
регистров.
Если B[0]=1, то СС.ACC.B= sr((ACC+A).B), Формат АСС выбирается
как int для сохранения переноса при сложении.
Общая схема (диаграмма) умножения:
7 0 Acc[0] B[0]
cc Acc B srm=sr(Acc.B)
+ 7 0
7 Wrk 0
cw Wrk1+
7 Wrk1 0
Wr= (-8)
Рис.4.4. Диаграмма выполнения операции умножения
При суммировании в АЛУ может возникнуть переполнение, которое
сохраняется в регистре СС и сдвигается в старший разряд АСС.
В каждом цикле (такте) инкрементируется счетчик тактов Wrk1, который в
начале операции устанавливается в состояние (-8). Начальное значение
произведения в ACC устанавливается в 0. Окончание операции контролируется
при переполнении счетчика – сигнал
cw=1. Обозначены необходимые сигналы
управления srm – сдвиг вправо, Wr-запись константы (-8).
Для реализации счетчика используем lpm_counter, регистр Wrk-защелка,
регистры ACC и B в проекте выполнены на элементах 74194 Parallel Load 4-Bit
– реверсивный сдвигающий регистр.
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »