Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мпс с 524 по 631.doc
Скачиваний:
6
Добавлен:
16.04.2019
Размер:
2.54 Mб
Скачать

Поддержка протоколов в коммуникационных контроллерах

3 4 6 7 Рис. 5.100. Регистр событий scce и

регистра маски SCCM-контроллера

- | IQOV | GINT | GUN | GOV , при работе с QMC-проТОКОЛОМ

Когда один из QMC-каналов генерирует запрос на прерывание, то RISC-контроллер проверяет, маскировано это прерывание в регистре INTMSK или нет. Если прерывание не маскировано, то контроллер заполняет следующую свободную ячейку таблицы. Эта ячейка (рис. 5.101) содержит номер логического канала в поле «номер канала» и тип события, вызвавшего прерывание. Затем устанавливается бит V = 1 (Valid), который ука­зывает, что данная ячейка используется и содержит флаги прерываний. Также увеличи­вается счетчик в ячейке INTPTR. После записи прерывания в таблицу ОМС-контроллер устанавливает бит соответствующего прерывания в регистре событий SCCE SCC-кон-троллера. Если это прерывание RXF (прерывание, регистрирующееся после приема каж­дого кадра), то уменьшается счетчик GRFCNT, который контролирует, после приема сколь­ких кадров будет выработано прерывание. Если этот счетчик не равен 0, то обработка прерывания прекращается. Если счетчик GRFCNT равен 0 или зарегистрировано другое прерывание, то в регистре событий используется дополнительный бит GINT, установка которого в «1» регистрирует, что в очереди на прерывание заполнена новая ячейка. Пос­ле сброса бита GINT центральный процессор начинает обрабатывать очередь на преры­вание. После чтения содержимого очередной ячейки таблицы процессор сбрасывает бит V := 0 и переходит к обработке следующей ячейки таблицы, и так продолжается, пока в таблице есть ячейки с установленным битом V = 1.

Если RISC-контроллер делает попытку записать данные о запросе на прерывание в ячейку, которая еще не обработана, т. е. у этой ячейки установлен бит V = 1, то регист­рируется ошибка переполнения таблицы прерываний и в регистре событий устанавлива­ется бит IQOV := 1. При возникновении этой ошибки данная ячейка таблицы немедленно программно сбрасывается и последнее прерывание теряется.

Бит NID (not idle) в ячейке таблицы устанавливается в «1», когда приемник получает данные, формат которых отличается от формата IDLE-символа. При работе с Transparent-протоколом NID-прерывание не регистрируется.

Бит IDL используется при работе с HDLC-протоколом для регистрации приема IDLE-сим-вола (OxFFFE). При работе с протоколом Transparent прерывание IDL не регистрируется.

Бит MRF устанавливается в «1» при работе с HDLC-протоколом, когда приемник при­нимает кадр, длина которого превышает максимальную длину, заданную в ячейке MFLR памяти параметров. При возникновении этой ошибки лишние байты кадра отбрасывают­ся и не сохраняются в буфере памяти, в буферный дескриптор записывается длина пол­ного кадра между двумя флагами и далее прием продолжается в обычном режиме. При работе с протоколом Transparent прерывание MRF не регистрируется.

При работе QMC-протокола регистрируются два типа глобальных ошибок, общих для всех каналов: ошибка незаполнения передатчика GUN (Global transmitting underrun), ког­да передача многобуферного кадра прекращается из-за неподготовленности очередных данных, и ошибка переполнения приемника GOV (Global receiver overrun), когда прием­ник не успевает принимать поступающие из сети данные. При возникновении ошибки GUN-контроллер передает во временной слот не менее 16 единиц, генерирует запрос на

9 10 11 12 13 14 15

V

W

NID

,dl|-

Номер канала [ MRF | UN

RXF

BSY

ТХВ

RXB

Рис. 5.101. Общий формат регистра событий канала в очереди прерываний для ОМС-контроллера

577