Контролер переривань

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Контро́лер перерива́нь (англ. Programmable Interrupt Controller, PIC)  — мікросхема чи інтегрований блок процесора, що відповідає за послідовну обробку запитів на переривання від різних пристроїв.

Призначення[ред.ред. код]

Використовується для забезпечення процедури переривання в мікропроцесорних системах:

  • обслуговує до восьми запитів на переривання мікропроцесора;
  • визначає пріоритет запитів;
  • має можливість нарощування кількості ліній запитів переривання за рахунок каскадного з’єднання контролерів переривання.

Структура контролера переривань[ред.ред. код]

Внутрішні і програмні переривання обробляються безпосередньо процесором, а для попередньої обробки зовнішніх запитів застосовують спеціалізовані пристрої - контролери переривань. Необхідність використання контролерів переривань зумовлена тим, що процесор або мікроконтролер має обмежене число вхідних ліній для прийому запитів на переривання (1-2  — у однокристальної ЕОМ, 2-10  — у мікроконтролерів). У той же час кількість пристроїв, які вимагають взаємодії з процесором через сигнали переривань, в реальних системах досягає декількох десятків. Таким чином, контролер переривань виконує селекцію запитів. Відзначимо важливу особливість контролерів переривань, виконаних у вигляді інтегральних схем,  — можливість їх програмного налаштування на необхідні режими роботи.

Контролери переривань є складними пристроями, а в їх структурі можна виділити чотири основних блоки: фіксації запитів, дозволи запитів, аналізу пріоритету запитів і схему керування .

Блок фіксації запитів виконаний на основі регістра фіксації запитів переривань (РФЗ) і служить для фіксації асинхронних сигналів запитів від зовнішніх пристроїв.

Блок дозволу запитів призначений для вибірки з надійшли сигналів тих запитів, які найважливіші для обробки на конкретному етапі реалізації основних алгоритмів. Основу блоку становить регістр дозволу переривань (РРП). В цей регістр можна записати програмним шляхом двійкові код, який буде визначати набір запитів, дозволений для обробки в цей час. Нехай, наприклад, в РРП контролера переривань, що має вісім входів, записаний код 01100010. Це означає, що в цей час дозволені переривання по входу 1, 5 і 6 (рахуючи з нуля, справа наліво). Код, записується в РРП, прийнято називати маскою переривань, так як нульові біти в цьому коді забороняють (маскують) обробку певних запитів.

Блок аналізу пріоритетів запитів призначений для вибору з групи запитів одного найважливішого, тобто найпріоритетнішого для обробки. Програмно задаються шкала пріоритетів визначає послідовність реакції на сигнали, які пройшли через РМП, у разі їх одночасного появи. На процесор пропускається сигнал, який був ідентифікований першим в порядку опитування. Код, що визначає шкалу пріоритетів, записують в регістр пріоритетів переривань (РПП) програмним шляхом. Як правило, контролери переривань мають вбудовану апаратну шкалу, відповідно до якої вхід з меншим номером має найвищий пріоритет. Тому запис коду в РПП, по суті, змінює стандартну апаратну шкалу.

Номер входу контролера переривань позначається «IRQ». Не слід плутати цей номер із пріоритетом переривання, а также з номером входу в таблицю векторів преривань (INT).

Процесор також має вбудований блок дозволу переривання та перевірки пріоритетності. Цей блок служить для узгодження зовнішнього запиту на переривання та внутрішніх і програмних запитів при їх одночасному надходженні.

Посилання[ред.ред. код]

Див. також[ред.ред. код]