Прерывания
Прерывание
(англ.interrupt)—
сигнал, сообщающий процессору
о наступлении какого-либо события. При
этом выполнение текущей последовательности
команд приостанавливается и управление
передаётся обработчику
прерывания,
который реагирует на событие и обслуживает
его, после чего возвращает управление
в прерванный код.
В ядре PicoBlaze
сигнал прерывания поступает на вход
Interrupt. Когда прерывание
начнет обрабатываться на выходе
подтверждения прерывания Interrupt_ACK
появиться логическая 1.
При возникновении прерывания
сохраняется значение счетчика команд,
и в него записывается значение 0х3FF.
По этому адресу находится
команда безусловного перехода на
подпрограмму обработки прерывания.
Пример: пусть есть периодический
сигнал с частотой 1Гц. Требуется
подсчитывать число секунд.
LOAD s0, 00
ENABLE INTERRUPT
start:
OUTPUT s0, 33
JUMP start
OneSek:
ADD s0, 01
RETURNI ENABLE
ADDRESS 3FF
JUMP OneSek
Коддляэмулятора:
DSOUT $33
LOAD s0, 0
EINT
start:
OUT s0, $33
JUMP start
OneSek:
ADD s0, 1
RETI ENABLE
ORG $3FF
JUMP OneSek
11