Загрузка...

Программируемый контроллер прерываний (PIC)


Рассмотрим пример программируемого контроллера прерываний для многопроцессорных систем.

Структурная схема программируемого контроллера прерываний

Рис. 1. 60. Структурная схема программируемого контроллера прерываний

1. D[7:0] –шина данных контроллера. Используется для выдачи номера типа прерывания, а также для обмена данными между системным интерфейсом и устройствами.

2. CS# — выбор контроллера. Когда сигнал активен, контроллер воспринимает управляющие сигналы системного интерфейса.

3. RD# и RW# — сигналы чтения и записи регистров контроллеров.

4. D/I# — высокий уровень – чтение/запись данных, низкий уровень – чтение/запись индексного регистра. Заводится на этот вход младший разряд шины адреса интерфейса.

5. IREQ# и ACK# — запрос на прерывание и разрешение прерывания (смотри временную диаграмму выше).

6. INT* — 24 линии запроса на прерывание от устройств.

7. ID2 – шина идентификации процессора, который должен обработать прерывание.

8. JTAG – последовательный интерфейс тестирования контроллера в рамках интерфейса PCI.

9. ID1 – шина идентификации ведомых (ведущих) контроллеров при расширении подсистемы прерываний.

Рассмотрим структурную схему многопроцессорной системы с несколькими контроллерами прерываний.

Структурная схема подсистемы прерываний многопроцессорной системы

Рис. 1. 61. Структурная схема подсистемы прерываний многопроцессорной системы

Каждый процессор имеет свою логику обработки запросов на прерывание.

INT – обычный вход прерывания.

NMI – немаскируемый вход прерывания.

Логика работает тогда, когда на шине идентификации процессора ID2 выставлен номер процессора. Контроллер прерываний PIC является пассивным устройством на интерфейсе PCI. Для связи контроллера с интерфейсом PCI используется блок PIC-logic, который формирует сигналы чтения/записи регистров, тип регистра (данные или индекс), а также сигнал выбора контроллера, который формируется селектором адреса путём обработки адреса обращения с интерфейса PCI. По получению запроса на прерывание INTx от внешнего устройства контроллер обрабатывает его, как описано ранее, выставляет сигнал запроса на прерывание IREQ# и ID2 и после подтверждения обработки прерывания сигналом ACK на шине данных PCI выставляет номер типа прерывания.

При каскадировании контроллеров, когда в системе используется несколько контроллеров к ведущему контроллеру подключаются ведомые (вторичные), выход IREQ которых подключается на один из входов ведущего (главного) контроллера. В этом случае используется шина идентификации контроллеров ID1. По получению сигнала ACK главный контроллер выставляет на шине ID1 номер того ведомого контроллера прерываний, который должен передать тип прерывания на шину данных PCI. Все контроллеры доступны через адресное пространство интерфейса PCI.

Загрузка...