КОНТРОЛЛЕРЫ УПРАВЛЕНИЯ SMC

Каждый коммуникационный контроллер содержит два SMC-контроллера (Serial Management Controllers). SMC-контроллер в МРС860 - это полнодуплексный порт, под­держивающий протоколы UART, Transparent, GCI. Настройка режимов работы SMC-кон­троллера производится в регистре SMCMR (рис. 5.47). Биты 10,9,8 задают параметры, которые определяют работу выбранного коммуникационного протокола.

Включение передатчика SMC-контроллера в работу производится при установке бита TEN, а включение приемника выполняется при записи «1» в бит REN. В SMC-контроллерах реализован режим пониженного энергопотребления, в который он переходит, когда биты разрешения работы TEN и REN некоторого SMC-контроллера равны 0.

Длина передаваемых символов, с которыми работает SMC-контроллер, задается в битах CLEN.

Выбор протокола, с которым будет работать SMC-канал, производится в битах SM (табл. 5.32).

SMC-контроллер поддерживает упрощенную версию UART-протокола, который мо­жет быть использован для целей управления и отладки работы контроллера, позволяя освободить от этих задач основные SCC-каналы. Каждый SMC-контроллер поддержи­вает UART-протокол только в режиме NMSI, используя для его реализации свои соб­ственные внешние контакты. Функционирование контроллера в этом режиме аналогич­но работе UART-контроллера для SCC-каналов. Тактирование работы SMC UART-кон-троллера выполняется от одного из четырех внутренних BRG-генераторов или от внеш­него источника. Но поддерживается только коэффициент внутреннего увеличения час­тоты, равный 16х.

Протокол Transparent может быть реализован, используя или NMSI-режим работы пос­ледовательного интерфейса или мультиплексируемый режим работы TSA совместно с дру­гими каналами ввода/вывода. Функционирование контроллера в этом режиме аналогично работе Transparent-контроллера для SCC-каналов. При подключении SMC Transparent-контроллера к TDM-каналам (например, к линиям Т1) тактирование работы контроллера выполняется от одного из четырех внутренних BRG-генераторов или от внешнего источни­ка (в этом случае поддерживается только коэффициент внутреннего увеличения часто­ты 1х). SMC Transparent-контроллер может также использовать для синхронизации прием­ника и передатчика внешние сигналы через специальные внешние контакты.

Каждый SMC-контроллер поддерживает в полном объеме работу с C/I- и Monitor-кана­лами GCI-интерфейса для сетей ISDN. Для работы в этом режиме контроллер должен быть подключен к TDM-каналу последовательного интерфейса. При работе в SCIT-режи-ме SMC-контроллеры могут управлять работой каналов C/I и Monitor для временных кана­лов Channel 0 и Channel 1. В контроллере МС68302 канал SMC дополнительно поддержи­вает работу и с IDL-интерфейсом, но в МРС860 встроенная поддержка этого интерфейса не предусмотрена, и при желании пользователь при настройке работы памяти маршрути­зации TDM-канала может программным путем выбрать режим работы с IDL-интерфейсом. В этом случае SMC-контроллер может работать только с Transparent-протоколом.

Для тестирования работы своих схем приемника и передатчика SMC-контроллер мо­жет быть настроен для работы в режимах «внутренней петли» или «автоматического эха» (табл. 5.33). В этих тестовых режимах функционирование SMC- и SCC-контроллеров аналогично.

При работе SMC-контроллера в режиме NMSI внешний стробирующий сигнал нача­ла обмена поступает и анализируется на контакте SMSYN , внешние тактовые сигналы поступают на вход SMCLK, данные читаются с линии SMRXD и передаются на линию SMTXD. Но для работы SMC UART контроллера внешний стробирующий сигнал SMSYN не используется. При работе в мультиплексируемом режиме данные переда­ются на контакт L1TXD в выбранном временном слоте и читаются из временного слота с контакта L1RXD. Частота тактовых сигналов для работы приемника и передатчика должна быть одинаковой, и она поступает с контакта L1CLK, строб начала TDM-кадра поступает с контакта L1SYNC.

Память параметров SMC-контроллера. Когда контроллер работает с протоколами UART и Transparent, структура распределения и организация его памяти параметров и буферных дескрипторов аналогичны способам распределения памяти для SCC-контрол-леров. Данные для передачи и данные, которые приняты из сети, хранятся в буфере памя­ти. В буферах хранится только содержимое поля данных. Старт-бит, стоп-бит и бит контро­ля при передаче вставляются автоматически и при приеме удаляются самим SMC-кана-лом и в памяти не хранятся. Все буферные дескрипторы для приема и передачи организо­ваны в виде таблицы, опрос которой ведется по круговой системе. Буферы могут быть расположены или во внутренней, или во внешней памяти. При необходимости буферы могут быть расположены в неиспользуемых областях памяти параметров других SCC- или SMC-каналов. Но, если SMC-контроллер работает с протоколом GCI, для передачи и при­ема данных заранее выделены буферы фиксированного размера по 16 бит каждый, кото­рые располагаются в протокол-независимой части памяти параметров SMC-контроллера.

Память параметров SMC-каналов располагается во внутренней памяти параметров коммуникационного контроллера для МРС860 на страницах 3 и 4. Память параметров SMC-канала состоит из двух частей: протокол-независимой части, в которой определены общие параметры работы SMC-контроллера, и протокол-ориентированной части, в которой со­держатся параметры, определяющие работу выбранных коммуникационных протоколов. Назначение переменных в протокол-независимой памяти параметров SMC-контроллера и структура распределения протокол-независимой памяти совпадает с назначением анало­гичных ячеек в протокол-независимой памяти параметров SCC-контроллера.

При работе с SMC-каналами пользователь может в любой момент времени произве­сти модификацию параметров канала, например, настроить его на работу с другим ком­муникационным протоколом. Для этого канал должен быть выключен из работы, а затем снова включен. Большинство параметров настройки контроллера рекомендуется произ­водить только при выключенных приемнике (бит REN = 0) и передатчике (бит TEN = 0). При этом текущие буферы данных, с которыми работает канал, закрываются, и после возобновления работы канал будет работать с другими буферами. Рекомендованная последовательность инициализации приемника SMC-канала следующая.

1. Сбросить бит работоспособности (разрешения работы) приемника REN=0 в регистре SMCMR. Прием будет немедленно прерван, и приемник будет установлен в нор­мальное состояние.

2.Произвести модификацию памяти параметров и регистров SMC-канала. При желании пользователь может просто сбросить все параметры в исходное состояние не изменяя режимов работы, передав контроллеру команду INIT RX PARAMETERS. Если коман­да INIT RX PARAMETERS не используется, то необходимо передать команду CLOSE RX BD или ENTER HUNT MODE.

3.Установить бит разрешения приема REN := 1 в регистре SMCMR, разрешив контроллеру начать прием информации из канала связи.

Рекомендованная последовательность инициализации передатчика SMC-канала приводится ниже.

1.Если контроллер в текущий момент времени выполняет передачу кадра данных, то предварительно требуется передать ему команду STOP TRANSMIT для прерывания процесса передачи.

2.Сбросить бит работоспособности (разрешения работы) передатчика TEN := 0
в регистре SMCMR. Передатчик будет установлен в начальное состояние.

3.Произвести модификацию памяти параметров и регистров SMC-канала. При желании пользователь может просто сбросить все параметры в исходное состояние, передав контроллеру команду INIT TX PARAMETERS. Если команда INIT TX PARAMETERS не используется, то необходимо передать команду RESTART TRANSMIT.

4.Установить бит разрешения передачи TEN:= 1 в регистре SMCMR, разрешив контроллеру начать передачу в сеть информации из буфера данных, адрес которого указан в ячейке TBPTR.

Работа SMC-контроллера с протоколом UART. Работа SMC-контроллера с UART-протоколом производится аналогично работе с этим протоколом основных коммуника­ционных SCC-каналов. Но SMC-контроллер поддерживает упрощенную версию UART-протокола, которая имеет следующие отличия:

•контроллер работает с символами, длина которых может быть от 5 до 14 бит (в SCC-контроллерах длина данных может быть от 5 до 8 бит); для хранения данных в памяти используются 16-битные слова;

•контроллер не поддерживает работу с дробными стоп-битами; число стоп-битов задается в разрядах SL; если SL = 0, то один стоп-бит, если SL = 1, то два стоп-бита;

•контроллер не может работать в multidrop-конфигурациях, поэтому из формата кадра исключен бит адреса;

•не поддерживается режим изохронной передачи с коэффициентом внутреннего увеличения частоты 1х;

•при обмене не анализируются сигналы на контактах и ;

•приемник и передатчик могут тактироваться с разной частотой;

•не поддерживается режим распознавания специальных контрольных символов при приеме;

•не поддерживается режим передачи более приоритетного кадра, использующий механизм регистра TODR;

•в регистре статуса не регистрируется IDLE-состояние на линии приемника;

•при передаче данных SMC-контроллер не регистрирует никаких ошибок состояния канала связи и процесса передачи.

Общая длина кадра данных задается в битах CLEN (рис. 5.48) и равна (CLEN+1). Если в этих битах задан код меньше четырех, то будет зарегистрирована ошибка.

 

В битах PEN и РМ задается правило использования бита контроля. Если бит PEN = 0, то бит контроля исключен из формата кадра. Если PEN = 1 и РМ = 0, то используется контроль по нечетности. Если PEN = 1 и РМ = 1, то используется контроль по четности.

Прием данных SMC UART-контроллером. Если SMC-канал настроен на работу с про­токолом UART, то параметры конкретного протокола хранятся в протокол-ориентирован­ной области parameter RAM (табл. 5.34).

После включения приемника в работу контроллер переходит в режим поиска нового кадра данных. После приема первого кадра во временный регистр сдвига контроллер проверяет бит незанятости первого буферного дескриптора в таблице RxBD. Если этот бит Е = 1, то контроллер сохраняет принятый символ в буфере. Если буфер данных за­полнен или переполнился счетчик принятых IDLE-символов, SMC-контроллер сбрасыва­ет бит Е:=0 в слове состояния буфера и, если в слове состояния установлен бит I = 1, то генерируется прерывание. Далее контроллер проверяет готовность к приему данных сле­дующего буфера в таблице и, если он пустой, продолжает прием в новый буфер. Если в слове состояния буфера установлен бит СМ = 1, то бит Е при заполнении буфера не очищается, и при следующем обращении контроллера к этому буферу новые данные будут записываться поверх старых

В UART-протоколе, если в сети нет передачи, то по ней передаются IDLE-символы, которые состоят из определенного числа «1» битов. Размер IDLE-символа зависит от раз­мера кадра данных, на работу с которым настроен канал, и равен: 1 старт-бит + 5-14 битов данных + 1 бит контроля (если он используется) + 1-2 стоп-бита. Приемник канала посто­янно подсчитывает число полученных. Таким образом, счетчик IDLC подсчитывает число IDLE-символов, полученных между приемом двух кадров данных, в счетчике IDLC. Если начинается прием нового кадра данных, то содержимое счетчика IDLC сбрасывается. IDLC -это вычитающий счетчик, и при сбросе в него записывается содержимое ячейки MAXJD.

Пользователь может определить максимально допустимое число IDLE-символов меж­ду кадрами данных. Это число записывается в ячейку MAXJDL. Если счетчик IDLC дос­читал до 0, то возникает ошибка приема «IDLE sequence». Текущий буфер закрывается, в нем устанавливается бит ошибки ID := 1 (закрыто из-за IOLE-переполнения) и генериру­ется RX-прерывание в регистре событий, если оно разрешено. Если не был открыт бу­фер для приема, то прерывание не генерируется.

Если при приеме кадра данных обнаружена ошибка контроля по четности/нечетности (parity error), то канал записывает принятый байт в буфер, закрывает буфер, устанавлива­ет бит ошибки PR := 1 в слове состояния BD и генерирует RX-прерывание через регистр событий (если оно разрешено). Но далее прием продолжается в нормальном режиме.

При приеме UART-контроллер выделяет кадр данных из битового потока по старт-биту в начале и стоп-битам в конце кадра. Если в кадре не обнаружены «1» стоп-биты, то возникает ошибка формата (frame error). Канал записывает принятый символ в буфер, закрывает буфер, устанавливает в его слове состояния бит FR := 1 и генерирует преры­вание RX через регистр событий (если оно разрешено). Если произошла ошибка форма­та, контроль по четности не производится.

При приеме данные записываются в FIFO выбранного канала, далее они под управ­лением RISC-контроллера по SDMA-каналам пересылаются в память. Размер буфера FIFO приемника равен двум символам (регистр сдвига и регистр данных). Если скорость работы SDMA-каналов и сети не согласована, возможно возникновение ошибки пере­полнения (overrun), когда ячейки FIFO все заняты, а из сети получены новые данные. В этом случае новые данные пишутся поверх старых, символ записывается в буфер, буфер закрывается и устанавливается бит переполнения OV: = 1 в слове состояния BD, и генерируется прерывание RX через регистр событий (если оно разрешено). Далее при­ем продолжается в нормальном режиме.

При приеме UART-контроллер может использовать вход для автоматического контроля наличия передачи в сети. Если сигнал равен 1 при приеме символа, то возникает ошибка (CD lost) потери CD-сигнала. Прием символа прекращается, буфер закрывается, устанавливается бит CD: = 1 в слове состояния BD и генерируется преры­вание RX через регистр событий (если оно разрешено).

При приеме SMC UART-контроллер может контролировать прием символов BREAK. BREAK - это символ, состоящий из «0» битов и не содержащий стоп-биты. Если контрол­лер получил последовательность BREAK-символов, то он увеличивает счетчик BRKEC и закрывает текущий буфер приема, устанавливает в его слове состояния бит BR := 1, гене­рирует прерывание BRK через регистр событий, если оно разрешено. Если контроллер получил последовательность BREAK-символов в середине обработки текущего буфера, то он увеличивает счетчик BRKEC и закрывает текущий буфер приема, устанавливает в его слове состояния бит BR := 1 и генерирует RX-прерывание через регистр событий, если оно разрешено. Контроллер также контролирует длину BREAK-последовательности и за­писывает измеренное значение в ячейку BRKLN памяти параметров.

Пользователь может управлять работой приемника при помощи команд ENTER HUNT MODE, CLOSE RX BD, INIT RX PARAMETERS.

Передача символов SMC UART-контроллером. При передаче UART-контроллер по­лучает из буфера FIFO только сам символ, который будет передан в поле данных. Ос­тальные поля кадра заполняются внутри SCC-контроллера. Во-первых, контроллер ана­лизирует, какой тип контроля будет применен, и вычисляет контрольную сумму, которая записывается в бит контроля в кадре данных. Во-вторых, в формат кадра вводится необ­ходимое число стоп-битов.

После включения передатчика в работу (бит TEN = 1 на рис. 5.48) контроллер начина­ет передавать в сеть символы IDLE. Далее контроллер опрашивает готовность первого буфера BD к передаче. Если буфер готов (бит R = 1 в его слове состояния), то данные по SDMA-каналу загружаются в буфер FIFO канала и начинают передаваться в сеть. Если первый буфер не готов, т. е. бит R = 0, то контроллер передает IDLE-символ и обращает­ся к буферу повторно через 7-16 периодов тактового сигнала передатчика. Где задержка обращения к таблице буферов, определяется длиной кадра данных, на работу с которой запрограммирован контроллер.

Когда все данные из буфера загружены в буфер FIFO, SMC-контроллер устанавлива­ет в слове состояния текущего буфера биты статуса переданного кадра и сбрасывает бит готовности R := 0. Если в слове состояния был установлен бит СМ = 1, то бит R не сбрасывается и содержимое буфера будет повторно передаваться в сеть при следующем обращении контроллера к этому буферу при новом цикле опроса таблицы буферов передачи, и так будет продолжаться, пока пользователь не сбросит бит R. Если в слове состояния был установлен бит прерывания I = 1, то генерируется прерывание к цент­ральному процессору. Далее контроллер проверяет готовность следующего буфера пе­редачи в таблице TxBD. Если этот буфер готов, то данные из него начинают без переры­ва передаваться в сеть сразу же за данными предыдущего буфера. Если же следующий буфер не готов (бит R = 0), то контроллер начинает передавать IDLE-символы, пока дан­ные не будут подготовлены

Если передается первый символ из нового буфера данных, то в слове состояния бу­ферного дескриптора анализируется бит Р. Если этот бит равен 1 (Р = 1), то перед пере­дачей содержимого буфера передается символ преамбулы (все биты 1) и на другом кон­це канала обнаруживают IDLE-состояние линии связи перед получением данных. Пре­амбула передается, даже если длина буфера в BD установлена равной нулю. Преамбу­ла представляет собой символ такой же длины, что и передаваемые данные, только все биты в символе равны 1. Если бит Р = 0, то при передаче данных содержимое двух со­седних буферов может передаваться без задержек между буферами

Если UART-контроллер получил от CPU ядра команду STOP TRANSMIT, то он передает в сеть содержимое буфера FIFO передачи, затем передает определенное число символов BREAK, далее он переходит к передаче IDLE-символов, пока не получит команду RESTART TRANSMIT. BREAK-символ представляет собой символ установленной длины, у которого все биты равны 0 и отсутствуют стоп-биты. Количество BREAK-символов, которые UART-контроллер передаст в сеть, указывается пользователем в регистре BRKCR. После переда­чи заданного числа BREAK-символов контроллер обязательно передаст в сеть хотя бы один символ IDLE перед началом передачи следующего кадра данных. Это необходимо, чтобы приемник смог нормально распознать старт-бит нового кадра.

Контроллер SMC Transparent. SMC-канап, работающий с протоколом Transparent, поддерживает более простые режимы работы и меньшие скорости обмена, чем SCC-канал, работающий с аналогичным протоколом «прозрачной передачи».

В отличие от SCC-каналов, которые могут работать в прозрачном режиме только с 8-или 32-битными символами (это определяется при программировании бита RWF в реги­стре GSMR), SMC-канал в режиме прозрачной передачи поддерживает символы длиной от 4 до 16 бит. Биты CLEN в регистре SMCMR (рис. 5.49) задают длину символа, которая равна (CLEN+1) байт и должна быть больше четырех.

Если длина символа больше 8 бит, то бит BS в регистре SMCMR определяет, какой байт данных будет передаваться в сеть первым. В нормальном режиме работы, если дли­на символа меньше 8 бит, то бит BS = 0. Если же длина символа больше 8, и бит BS = 1, то первым будет передаваться байт, расположенный в ячейке памяти с младшим адресом.

В отличие от SCC-каналов SMC-канал не поддерживает подсчет и проверку конт­рольной суммы CRC при обмене кадрами.

При передаче, так же как в SCC-каналах, в канале SMC поддерживается режим ин­ вертирования порядка следования битов в символе. Если бит REVD = 0, то используется нормальный порядок битов и LSB-бит передается первым. Если бит REVD = 1, то пер­вым передается MSB-бит.

Как и у SCC-каналов, передатчик и приемник канала SMC в прозрачном режиме для начала работы должны быть синхронизированы. Синхронизация может выполняться двумя способами. Но при любом способе синхронизация производится от внешнего сигнала, а внутренняя синхронизация от SYNC-символов не используется.

Синхронизация SMC-контроллера. Первый способ применяется, когда SMC-контрол-лер подключен к TDM-каналам через блок TSA последовательного интерфейса. При этом синхронизация кадра выполняется выбранным временным слотом. После обнаружения сигнала синхронизации TDM-кадра строб-сигнала TxSYNC при передаче или строб-сиг­нала RxSYNC при приеме данные будут передаваться/читаться только в те временные слоты, которые закреплены за данным SMC-каналом при программировании памяти маршрутизации SIRAM последовательного интерфейса. Если SMC-контроллер работает с TDM-каналом в режиме полнодуплексного обмена и его приемник и передатчик функ­ционируют независимо со своими стробирующими сигналами TxSYNC и RxSYNC и со своими тактовыми сигналами RxCLK и TxCLK, то синхронизация приемника и передатчи­ка SMC-канала производится отдельно и независимо. Если приемник при чтении данных из TDM временного канала получит команду ENTER HUNT MODE, то синхронизация при­емника будет потеряна, текущий буфер закрывается, и канал будет ждать новой синхро­низации сигналом RxSYNC.

SMC-канал в режиме прозрачной передачи поддерживает многобуферную структуру хранения кадра данных в памяти. Если текущий буфер данных уже передан во времен­ной канал, то следующий буфер может быть передан в любом временном канале, выде­ленном для данного SMC-контроллера и новый кадр данных может начаться в том же временном канале, где закончился предыдущий кадр. Если данные из следующего бу­фера еще не готовы, то во временной канал выдаются символы IDLE, пока не будет подготовлен следующий кадр данных. Таким образом, при передаче данных в первый временной канал TDM-кадра к моменту прихода сигнала строба начала кадра должен быть готов хотя бы один TxBD-буфер данных, и при его передаче не должна возникнуть ошибка незаполнения (underrun), иначе SMC-контроллер будет выключен.

Второй способ синхронизации применяется, когда канал работает со своими собствен­ными выводами в режиме NMSI. Для синхронизации используется отрицательный фронт внешнего сигнала SMSYNx. При этом сигналы , , не используются. После включения передатчика (бит TEN = 1) или приемника (бит REN = 1) в работу по первому положительному перепаду тактового сигнала SMCLK контроллер анализирует значение сигнала на внешнем контакте . Если сигнал = 0, то синхронизация счита­ется установленной. Таким образом, в NMSI-режиме работы последовательного интер­фейса приемник и передатчик тактируются от одного тактового сигнала SMCLK и синхро­низируются одним сигналом . Ресинхронизация производится только при вык­лючении SMC-контроллера.

Приемник начинает считывать данные по тому же положительному перепаду так­тового сигнала, по которому обнаруживается активный сигнал = 0 и устанав­ливается синхронизация. Приемник не производит повторной синхронизации, даже если в дальнейшем сигнал изменит свое состояние, пока пользователь не выключит приемник из работы, т. е. не сбросит бит REN := 0.

Передатчик начинает выдавать первый символ данных, состоящих из одних единиц, асинхронно от тактового сигнала SMCLK, как только обнаружит отрицательный перепад сигнала на линии . Далее, если данные для передачи готовы, то их передача начнется по следующему отрицательному перепаду тактового сигнала SMCLK после окон­чания передачи первого служебного символа. Если данные для передачи будут подго­товлены позднее, то их передача начнется после передачи нескольких символов, состо­ящих только из единиц. Передатчик не производит повторную синхронизацию, даже если в дальнейшем сигнал изменит свое состояние, пока пользователь не выключит передатчик из работы, т. е. не сбросит TEN := 0, или пока не будет получена команда ENTER HUNT MODE.

Передача данных. После включения SMC-передатчика в работу (установлен бит TEN = 1) он начинает выдавать в канал IDLE-символы и опрашивает готовность перво­го буфера данных в таблице TxBD. Когда буфер будет подготовлен, данные по каналам SDMA переписываются в FIFO-буфер и после синхронизации передатчика передаются в сеть. После передачи всех данных из текущего буфера проверяется бит L в его слове состояния. Если это был последний буфер кадра (бит L = 1), то контроллер сбрасывает бит готовности R := 0 в слове состояния буфера и устанавливает биты статуса пере­данного кадра данных. После этого контроллер начинает передавать в сеть символы IDLE. Если это был не последний буфер данных текущего кадра (бит L = 0), то в слове состояния сбрасывается только бит готовности R := 0, и контроллер начинает переда­вать данные из следующего буфера передачи в таблице TxBD.

Если при передаче данные из текущего буфера еще не переписаны в буфер FIFO передатчика, то регистрируется ошибка незаполнения underrun, SMC-контроллер пре­кращает передачу данных из буфера, буфер закрывается, устанавливается бит ошибки UN := 1 в слове состояния текущего буфера и бит ТХЕ := 1 в регистре событий SMC-канала, вызывая прерывание работы центрального процессора. Далее контроллер на­чинает передавать в сеть символы IDLE. Ошибка незаполнения underrun не регистриру­ется в интервалах между передачами отдельных кадров данных. При обнаружении этой ошибки SMC-канал возобновит передачу после получения команды RESTART TRANSMIT.

Если в слове состояния переданного буфера установлен бит прерывания I = 1, то по окончании передачи всех данных из этого буфера центральный процессор будет уведом­лен об этом маскируемым прерыванием.

Если в слове состояния буфера передачи установлены биты СМ = 1 и R = 1, то этот буфер будет автоматически повторно передаваться в сеть при каждом новом обращении к нему RISC-контроллера, до тех пор пока пользователь не сбросит бит R := 0.

Прием данных. После включения в работу (установлен бит REN = 1) приемник SMC-контроллера проверяет установление синхронизации. Когда синхронизация приемника выполнена, он проверяет незанятость первого буфера приема в таблице RxBD и начи­нает записывать в него данные. Когда буфер приема будет полностью заполнен, SMC-контроллер сбросит бит незанятости Е := 0 в его слове состояния и, если установлен бит І = 1, сгенерирует маскируемое прерывание к процессору. Если длина принимаемо­го кадра больше, чем размер текущего буфера приема, то контроллер проверяет неза­нятость следующего буфера приема в таблице RxBD. Если новый буфер свободен (бит Е = 1), то прием данных продолжается в этот буфер. Если в слове состояния установ­лены биты Е = СМ = 1, то новые принятые данные будут записываться в этот буфер поверх старых при новом обращении к нему SMC-контроллера.

Если при приеме данных обнаруживается ошибка переполнения буфера FIFO прием­ника, т. е. RISC-контроллер не успевает освобождать ячейки для приема новых данных, то SMC-контроллер будет вынужден писать новые принятые данные поверх старых, ко­торые будут потеряны. При возникновении этой ошибки SMC-контроллер прекращает прием данных, закрывает текущий буфер приема, устанавливает в слове состояния бу­фера бит ошибки OV := 1 и бит RX := 1 в регистре событий, уведомляя прерыванием центральный процессор о возникшей ошибке. Прием следующих 'кадров данных будет продолжен в новый буфер приема из таблицы RxBD.

Работа SMC в режиме GCI-контроллера. В МРС860 каждый SMC-контроллер мо­жет управлять и C/I- и Monitor-каналами GCI-кадра в сетях ISDN, а при работе в режиме SCIT-конфигурации каждый из SMC-контроллеров может управлять работой любого 0 или 1 SCIT-канала.

При функционировании в режиме GCI-контроллера SMC-канал может быть настроен для работы с соответствующим C/I- и Monitor-каналом при программировании памяти маршрутизации SIRAM. Каждый SMC-канал поддерживает полнодуплексные операции с данными выбранного временного канала и может работать в тестовых режимах внут­ренней петли и автоматического эха.

Карта распределения памяти параметров GCI-контроллера значительно отличается от карт распределения памяти нормальных коммуникационных протоколов (табл. 5.35). В режиме SMC GCI протокол-независимая часть памяти параметров содержит буфер­ные дескрипторы приема и передачи для C/I- и Monitor-каналов и, реже, содержит табли­цу указателей на место расположения дескрипторов в других областях памяти. Прото­кол-ориентированная часть памяти параметров для SMC GCI просто отсутствует.

Каждый SMC-контроллер имеет свой собственный регистр настройки режима SMCMR (рис. 5.50), в котором производится настройка параметров работы SMC GCI-контроллера.

Биты CLEN определяют в битах размеры каналов С/І и Monitor для SCIT-каналов О и 1. Длина каналов вычисляется как CLEN = длина канала C/I + бит А + бит Е + длина канала Monitor - 1.

Биты REN и TEN разрешают функционирование приемника и передатчика SMC-кон-троллера. Биты SM и DM определяют режимы работы SMC-контроллера и являются об­щими для всех режимов работы SMC-контроллера.

Бит С# определяет, с каким из SCIT-каналов будет работать выбранный SMC-кон­троллер. Если бит равен 0, то используется SCIT-канал 0. Если бит равен 1, то использу­ется SCIT-канал 1.

Бит ME определяет, поддерживает ли выбранный SMC-контроллер работу и управле­ние Monitor-каналом. Если бит ME = 0, то М-канал не используется. Если бит ME = 1, то SMC-контроллер работает с Monitor-каналом по правилам протокола Monitor Channel.

Для управления работой SMC-контроллера в режиме GCI пользователь может применять команды: INIT TX and RX PARAMETERS - для инициализации ячеек памяти параметров в начальное состояние, TRANSMIT ABORT REQUEST и TIMEOUT – для управления процессом обмена данными при работе с М-каналом в режиме Monitor Channel Protocol. При получении команды TRANSMIT ABORT REQUEST контроллер передаст в сеть запрос на прерывание, используя бит А в формате GCI-кадра. Коман­да TIMEOUT передается контроллеру, если получен запрос на прерывание в А-канале или истек тайм-аут ожидания ответа от сетевого устройства, к которому была передана команда. При получении этой команды контроллер передаст в сеть запрос на прерывание, используя бит Е в формате GCI-кадра.

 


Передача данных по С/І-каналу. Канал С/І с номером 0 в SCIT-режиме используется для передачи управляющей информации между сетевыми устройствами 1-го уровня уп­равления (физический уровень). Сетевые устройства 2-го (канального) уровня управле­ния посылают по нулевому C/ І-каналу команды и получают ответы-индикацию от уст­ройств 1-го уровня. Например, коммуникационный контроллер, работающий в режиме ТЕ (terminal equipment), посылает команды активации/деактивации к S/T-трансиверу и получает ответы, сообщающие о переходе в новый режим работы. С/1-канал 1 в режиме SC1T используется для обмена текущей информации о состоянии между сетевыми уст­ройствами 2-го уровня управления или несетевыми периферийными устройствами, на­пример между АЦП или CODEC.

Передача начинается после загрузки данных в буфер передачи C/ І -канала (рис. 5.51), который расположен в ячейке CI_TXBD памяти параметров. Далее SMC-контроллер на­чинает последовательно выдавать данные через C/l-канал к устройству 1-го уровня уп­равления (физический уровень управления).

Бит R (Ready) устанавливается в «1» центральным процессором по окончании подго­товки данных для передачи и записи их в биты C/ І DATA. Сброс этого бита R := 0 RISC-контроллером после завершения передачи показывает, что центральный процессор мо­жет записывать в буфер новые данные для передачи.

Если SMC-контроллер работает в SCIT-режиме с 0-м каналом, то по C/l-каналу пере­даются 4-разрядные данные, и в битах C/ І DATA для хранения этих данных используются только разряды с 10-го по 13-й, а в 8-й и 9-й разряды заносится код 0. Если SMC-контрол­лер работает в SCIT-режиме с 1-м каналом, то по C/l-каналу передаются 6-разрядные данные, а биты C/l DATA используются для подготовки этих данных к передаче.

Когда буфер передачи C/ І -канала становится пустым, будет установлен бит СТХВ в регистре событий SMC GCI-контроллера. При установке любого бита в регистре собы­тий SMCE (рис. 5.52) будет выработан запрос на прерывание, если только прерывание от этого события не замаскировано в соответствующем бите регистра маски SMCM, фор­мат которого совпадает с форматом регистра событий. Запрос на прерывание выраба­тывается к контроллеру прерывания, и пользователь должен предварительно разрешить прерывание от SMC-контроллера, чтобы нормально зарегистрировать запрос при на­ступлении некоторого события в SMC-канале. Сброс запроса на прерывание в регистре событий производится записью в этот разряд кода «1». После системного сброса все разряды регистра событий сброшены в «0».

Прием данных по С/ І -каналу. При приеме данных по С/ І -каналу 0 в режиме SCIT SMC-контроллер постоянно контролирует информацию, которую он получает по С/ І каналу. Если одинаковый код получен по С/ І -каналам двух соседних GCI-кадров, то он счи­тается корректным. Дублирование передачи данных введено для повышения надежнос­ти передачи информации. Принятую информацию SMC-контроллер сравнивает с преды­дущей полученной информацией, и, если они различны, то контроллер реагирует на но­вую команду или ответ. Такая проверка необходима, поскольку некоторые сетевые уст­ройства при отсутствии новых данных для передачи могут повторно передавать после­дние данные для поддержания канала в рабочем состоянии. При работе в режиме SCIT с С/ І -каналом 1 метод дублирования данных при передаче не используется. Прием дан­ных из C/l-канала выполняется в буфер приема (рис. 5.53), который расположен в ячейке CI_RXBD. После приема данных генерируется маскируемое прерывание к центральному процессору и устанавливается бит CRXB в регистре событий SMC-контроллера.

Сброс бита Е (Empty) в «0» RISC-контроллером сообщает центральному процессору, что получены новые данные. Центральный процессор после обработки этих данных ус­танавливает этот бит в «1», разрешая прием в буфер новых данных. Если бит Е = 0 и получены новые данные, то они будут потеряны.

Если SMC-контроллер работает в SCIT-режиме с 0-м каналом, то по С/ І -каналу пере­даются 4-разрядные данные, в битах С/ І DATA для хранения этих данных используются только разряды с 10-го по 13-й, а в 8-й и 9-й разряды заносится код «0». Если SMC-контроллер работает в SCIT-режиме с 1-м каналом, то по С/1-каналу передаются 6-раз­рядные данные и биты С/ І DATA используются для хранения этих данных при приеме.

Передача данных по Monitor-каналу. Канал Monitor (М-канал) 0 предназначен для обмена данными между устройствами 1-го уровня управления, например, для обмена содержимым внутренних регистров. М-канал 1 используется для настройки режимов ра­боты (программирования) и для чтения регистров состояния устройств передачи цифро­вых данных и голоса типа CODEC.

Передача начинается после загрузки данных в буфер передачи М-канала (рис. 5.54), который расположен в ячейке M_TXBD памяти параметров.

Бит R (Ready) устанавливается в «1» центральным процессором по окончании подго­товки данных для передачи и после записи их в биты DATA. Сброс этого бита R := 0 RISC-контроллером после завершения передачи показывает, что центральный процессор мо­жет записывать в буфер новые данные для передачи. Если SMC-контроллер работает в режиме протокола Monitor Channel, то бит R сбрасывается после получения подтверж­дения на переданные данные. Далее SMC-контроллер начинает последовательно выда­вать данные в сеть через М-канал. Как только буфер М-канала становится пустым, будет установлен бит МТХВ в регистре событий SMC-контроллера.

Биты каналов А и Е используются для управления передачей по М-каналу. Если SMC-контроллер должен передавать данные, поскольку начался закрепленный за ним вре­менной канал, но бит R = 0, то контроллер будет передавать предыдущие данные, и так будет продолжаться, пока не закончится подготовка новых данных.

Бит L (Last) устанавливается в «1» центральным процессором при записи в буфер передачи последнего байта сообщения (End of Message). SMC-контроллер, проанализи­ровав этот бит, вначале дважды передает (дублирует) последний байт данных по М-кана­лу, а затем дважды в соседних кадрах передает неактивное значение бита в Е-канале. Получив два раза в соседних кадрах неактивный бит в Е-канале, приемник воспринима­ет эту ситуацию как прием индикации о конце сообщения.

Когда приемник получит запрос на прерывание по А-каналу и центральный процес­сор обнаружит эту ситуацию, то последний установит бит AR := 1 (Abort Request), и SMC-передатчик передаст команду End of Message в виде двух соседних GCI-кадров с неак­тивным значением бита в Е-канале.

Пользователь может принудительно вызвать передачу запроса на прерывание по Е-каналу, если передаст SMC-контроллеру команду TRANSMIT ABORT REQUEST.

В биты 3-7 пользователь должен записывать коды «0» при заполнении буфера новы­ми данными.

Прием данных по Monitor-каналу. При приеме полученные данные и биты статуса размещаются в буфере приема в ячейке M_RXBD памяти параметров (рис. 5.55).

Биты каналов А и Е используются для управления обменом по М-каналу. Когда при­нятые данные будут сохранены в буфере приема, центральный процессор уведомляет­ся об этом маскируемым прерыванием. Бит Е (Empty) в ячейке буфера приема сбрасы­вается в «0» RISC-контроллером, чтобы сообщить центральному процессору, что полу­чены новые данные. Центральный процессор после обработки этих данных устанавли­вает этот бит в «1», разрешая прием в буфер новых данных. Если бит Е = 0 и получены новые данные, то SMC-контроллер будет ждать установки бита Е = 1 и временно не бу­дет подтверждать прием данных из М-канала. Для подтверждения приема данных от отправителя используется А-канал.

Бит L (Last) устанавливается в «1» SMC-контроллером при приеме по Е-каналу сооб­щения (End of Message), которое распознается при приеме два раза в соседних кадрах неактивного бит в Е-канале. В этом случае данные, которые были приняты по М-каналу, игнорируются.

Если передатчик SMC-контроллера еще не успел подтвердить по А-каналу прием предыдущего полученного байта данных, а приемник уже принял следующий новый байт данных из М-канала, то регистрируется состояние ошибки и устанавливается бит ER = 1 в ячейке буфера приема M_RXBD.

Для повышения надежности передачи информации передача каждого нового байта данных по М-каналу производится два раза в двух соседних GCI-кадрах. При приеме информации обе копии сравниваются и при их совпадении байт записывается в биты DATA буфера приема и посылается подтверждение о приеме байта по А-каналу. Если же при приеме обнаружено несовпадение двух байтов в соседних кадрах, то они отбрасы­ваются и регистрируется ошибка сравнения с установкой бита ошибки MS = 1.

При заполнении буфера М-канала данными будет установлен бит MRXB в регистре событий SMC-канала.

 



-10251.php">14
  • 15
  • 16
  • Далее ⇒