Контролер переривань
Контро́лер перерива́нь (англ. Programmable Interrupt Controller, PIC) — мікросхема чи інтегрований блок процесора, що відповідає за послідовну обробку запитів на переривання від різних пристроїв.
Призначення
Використовується для забезпечення процедури переривання в мікропроцесорних системах:
- обслуговує до восьми запитів на переривання мікропроцесора;
- визначає пріоритет запитів;
- має можливість нарощування кількості ліній запитів переривання за рахунок каскадного з’єднання контролерів переривання.
Структура контролера переривань
Внутрішні і програмні переривання обробляються безпосередньо процесором, а для попередньої обробки зовнішніх запитів застосовують спеціалізовані пристрої - контролери переривань. Необхідність використання контролерів переривань зумовлена тим, що процесор або мікроконтролер має обмежене число вхідних ліній для прийому запитів на переривання (1-2 — у однокристальної ЕОМ, 2-10 — у мікроконтролерів). У той же час кількість пристроїв, які вимагають взаємодії з процесором через сигнали переривань, в реальних системах досягає декількох десятків. Таким чином, контролер переривань виконує селекцію запитів. Відзначимо важливу особливість контролерів переривань, виконаних у вигляді інтегральних схем, — можливість їх програмного налаштування на необхідні режими роботи.
Контролери переривань є складними пристроями, а в їх структурі можна виділити чотири основних блоки: фіксації запитів, дозволи запитів, аналізу пріоритету запитів і схему керування.
Блок фіксації запитів виконаний на основі регістра фіксації запитів переривань (РФЗ) і служить для фіксації асинхронних сигналів запитів від зовнішніх пристроїв.
Блок дозволу запитів призначений для вибірки із вхідних сигналів тих запитів, які є найважливішими для обробки на конкретному етапі реалізації основних алгоритмів. Основу блоку становить регістр дозволу переривань (РРП). В цей регістр можна записати програмним шляхом двійковий код, який визначатиме набір запитів, дозволених для обробки в цей час. Нехай, наприклад, в РРП контролера переривань, що має вісім входів, записаний код 01100010. Це означає, що в цей час дозволені переривання по входу 1, 5 і 6 (рахуючи з нуля, справа наліво). Код, який записується в РРП, прийнято називати маскою переривань, так як нульові біти в цьому коді забороняють (маскують) обробку певних запитів.
Блок аналізу пріоритетів запитів призначений для вибору з групи запитів одного найважливішого, тобто найпріоритетнішого для обробки. Програмно задана шкала пріоритетів визначає послідовність реакції на сигнали, які пройшли через РМП, у разі їх одночасної появи. На процесор пропускається сигнал, який був ідентифікований першим в порядку опитування. Код, що визначає шкалу пріоритетів, записують в регістр пріоритетів переривань (РПП) програмним шляхом. Як правило, контролери переривань мають вбудовану апаратну шкалу, відповідно до якої вхід з меншим номером має найвищий пріоритет. Тому запис коду в РПП, по суті, змінює стандартну апаратну шкалу.
Номер входу контролера переривань позначається «IRQ». Не слід плутати цей номер із пріоритетом переривання, а також з номером входу в таблицю векторів преривань (INT).
Процесор також має вбудований блок дозволу переривання та перевірки пріоритетності. Цей блок служить для узгодження зовнішнього запиту на переривання та внутрішніх і програмних запитів при їх одночасному надходженні.