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

5.2.3. Контроллеры управления 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. Прием будет немедленно прерван, и приемник будет установлен в нор­мальное состояние.

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

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

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

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

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

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

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

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

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

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

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

исключен бит адреса;

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

чения частоты 1х;

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

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

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

не поддерживается режим передачи более приоритетного кадра, использующий механизм регистра 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-контроллер может использовать вход cd для автоматического контроля наличия передачи в сети. Если сигнал со равен 1 при приеме символа, то возникает ошибка (CD lost) потери CD-сигнала. Прием символа прекращается, буфер закрывается, устанавливается бит CD = 1 в слове состояния BD и генерируется преры­вание RX через регистр событий (если оно разрешено).

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

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

Передача символов SMC U ART-контроллером. При передаче 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. При этом сигналы RTS, CTS, CD не используются. После включения передатчика (бит TEN = 1) или приемника (бит REN = 1) в работу по первому положительному перепаду тактового сигнала SMCLK контроллер анализирует значение сигнала на внешнем контакте SMSYN. Если сигнал SMSYN = 0, то синхронизация счита­ется установленной. Таким образом, в NMSI-режиме работы последовательного интер­фейса приемник и передатчик тактируются от одного тактового сигнала SMCLK и синхро­низируются одним сигналом SMSYNC. Ресинхронизация производится только при вык­лючении SMC-контроллера.

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

Передатчик начинает выдавать первый символ данных, состоящих из одних единиц, асинхронно от тактового сигнала SMCLK, как только обнаружит отрицательный перепад сигнала на линии SMSYN. Далее, если данные для передачи готовы, то их передача начнется по следующему отрицательному перепаду тактового сигнала SMCLK после окон­чания передачи первого служебного символа. Если данные для передачи будут подго­товлены позднее, то их передача начнется после передачи нескольких символов, состо­ящих только из единиц. Передатчик не производит повторную синхронизацию, даже если

в дальнейшем сигнал SMSYNC изменит свое состояние, пока пользователь не выключит передатчик из работы, т. е. не сбросит 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 = 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-контроллеров может управлять работой любого О или 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 определяют в битах размеры каналов С/1 и Monitor для SCIT-каналов О и 1. Длина каналов вычисляется как CLEN = длина канала C/I + бит А + бит Е + длина канала Monitor - 1.

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

Бит С# определяет, с каким из SCIT-каналов будет работать выбранный SMC-кон­троллер. Если бит равен 0, то используется SCIT-канал О. Если бит равен 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-кадра.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5.2.4. КОНТРОЛЛЕРЫ ДОПОЛНИТЕЛЬНЫХ КОММУНИКАЦИОННЫХ

КАНАЛОВ

Контроллер 12С. Контроллер I2C введен в состав СРМ-модуля коммуникационного контроллера МРС860 и позволяет ему обмениваться данными с другими 12С-устройствами, такими как микроконтроллеры, EEPROM, устройства реального времени, аналого-циф­ровые преобразователи.

I2C - это синхронный, двунаправленный интерфейс (линия данных SDA и линия так­товых сигналов SCL), который может работать в режимах master-slave и multimaster. Вы­бор режима выполняется в регистре команд I2COM (рис. 5.56). Если бит M/S = 0, то контроллер работает как slave-устройство, если M/S = 1, то - как master.

Оба вывода SCL и SDA являются двунаправленными и подсоединяются через резис­тор к положительному напряжению. Таким образом, поскольку контроллер имеет выво­ды типа «открытый исток» (open drain), то они могут быть объединены в единую шину для работы в конфигурации multimaster. Когда на 12С-шине нет передачи, то линии SCL и SDA находятся в пассивном «1» состоянии.

Настройка режимов работы !2С-контроллера производится в регистре режима I2MOD (рис. 5.57).

Включение контроллера в работу производится установкой бита EN := 1. В выключен­ном режиме (бит EN = 0) контроллер работает в режиме пониженного энергопотребления.

Тактирование приемника и передатчика PC-контроллера выполняется одной часто­той. Если устройство работает в режиме slave, то тактовые сигналы поступают от внеш­него источника по линии SCL. Источником тактового сигнала для master-устройства яв­ляется собственный внутренний генератор BRG. Тактовый сигнал BRGCLK для работы BRG-генератора поступает от системного синтезатора частоты и может быть предвари­тельно изменен. Биты PDIV определяют коэффициент предварительного деления вход­ной частоты (табл. 5.36).

BRG-генератор !2С-контроллера может также изменять входную частоту генератора. Коэффициент деления частоты задается пользователем в режиме I2BRG и рассчитыва­ется как 2х (I2BRG+3). На выходе BRG-генератора тактовый сигнал представляет собой меандр. При системной частоте 25 МГц максимальная скорость передачи данных может достигать 520 КГц (BRGCLK/(4x2x(0+3)= BRGCLK/48),

Поскольку 12С-интерфейс используется для связи устройств на одной плате, в одном приборе, то на линии тактового сигнала может оказывать влияние посторонний шум. Ус­тановка бита FLT := 1 позволяет пропустить тактовый сигнал через цифровой фильтр, чтобы убрать возможные наводки из-за шумов.

Бит REVD задает порядок передачи битов при обмене символами. Если бит REVD = О, то первым передается SLB. Если REVD = 1, то первым передается MSB, этот режим явля­ется рабочим для контроллеров фирмы «Motorola».

Бит GCD в регистре I2MOD определяет, как должен вести себя приемник при получе­нии общего запроса от master-станции. Если бит GCD = 1, то никакие действия не произ­водятся. Если бит GCD = 0, то приемник посылает подтверждение на адрес общего вызо­ва (general call address).

В контроллере МРС860 параметры !2С-контроллера хранятся на 1 -и странице памя­ти параметров (parameter RAM) со смещением + 0x1 С80 от начала двухпортовой памя­ти. Структура и состав памяти параметров !2С-контроллера совпадают со структурой таблицы протокол-независимых параметров (см. табл. 5.30). Отличие заключается толь­ко в том, что отсутствуют две последние ячейки таблицы со смещениями I2C base+28 и I2C base+2C.

Данные для PC-канала хранятся в буферах памяти, которые организованы в таблицу TxBD (передачи) и RxBD (приема). Принцип организации таблицы аналогичен таблицам буферов для SCC-каналов ввода/вывода. Стартовый адрес таблиц в памяти контролле­ра хранится в ячейках RBASE и TBASE памяти параметров !2С-контроллера. Пользова­тель может ограничить число буферов в таблице, установив бит W := 1 в слове состоя­ния последнего необходимого буферного дескриптора. При подготовке обмена данными центральный процессор готовит данные для передачи в буферах памяти, заполняет со­ответствующие буферные дескрипторы и устанавливает в их слове состояния бит готов­ности к передаче R := 1, а также заранее подготавливает буферы для приема данных.

Режимы работы FC-контроллера. В режиме master !2С-контроллер управляет обме­ном данными со slave-устройствами. Для этого он передает slave-устройству специаль­ное сообщение, которое определяет режим работы (чтение или запись). Если это опера­ция чтения, то после передачи первого сообщения направление передачи по линии SDA меняется, и передавать будет slave-устройство.

Для начала обмена сообщениями master-устройство должно подготовить данные для передачи в буферах TxBD, установив бит готовности R := 1 в слове состояния бу­ферного дескриптора, а также подготовить буферы приема RxBD. Затем центральный процессор должен установить бит STR := 1 в регистре команд I2COM. Данные будут передаваться после того, как они будут загружены в буфер FIFO передатчика по SDMA-каналам из памяти, и после того, как !2С-шина будет свободна. Размер буфера FIFO приемника и передатчика установлен равным двум символам. При передаче MSB пе­редается первым.

При начале передачи !2С-контроллер выставляет start-условия (адрес slave-устрой­ства) на линии SDA и тактовые импульсы , число которых соответствует числу передава­емых битов, на линию SCL. Для каждого переданного бита на линию SDA контроллер производит его повторное чтение (контроль), чтобы обнаружить состояние коллизии (collision) с другим master-устройством. Поскольку выводы контроллера объединены по схеме «монтажное ИЛИ» в единую шину, то коллизии обнаруживаются, если была выставлена «1», а обнаружен «О». При этом передача прерывается и канал переводится в режим slave и генерируется маскируемое прерывание к центральному процессору.

После передачи каждого байта данных устройство master контролирует индикацию подтверждения от slave-станции. Если подтверждение не пришло, передача прерывает­ся и условие «остановки» генерируется master-станцией. Регистрация stop- и start-усло­вий всегда приводит к закрытию текущего буфера приемника.

Для передачи данных slave-устройству master-станция подготавливает в буфере п+1 байт данных, где первый байт содержит адрес slave-устройства и бит, определяющий режим чтение/запись. Остальные п байт - это данные, которые передаются slave-уст­ройству. Если R/W = 1, то будет производиться чтение с устройства slave.

Если 12С-контроллер работает в режиме slave, то его адрес задается пользователем в регистре I2ADD (рис. 5.58) и имеет 7 разрядов, таким образом, в сети может быть до 128 slave-устройств. Если slave-устройство распознало свой адрес, то данные принимаются во внутренние буферы RxBD, на них передаются подтверждения, и так продолжается, пока по линии SDA не придет от master-станции новое start/stop-условие. Если совпаде­ния адреса не произошло, slave-устройство ожидает следующего start-условия. Slave-контроллер подтверждает прием каждого байта, пока не обнаружит ошибку переполне­ния overrun своего буфера FIFO.

Если данные для передачи от master-устройства занимают несколько буферов ТхЕШ, то они будут передаваться байт за байтом, пока не будет достигнут последний буфер (бит L = 1 в его слове состояния), при этом бит STR = 1 повторно для каждого нового байта не устанавливается. Бит STR будет автоматически сбрасываться после передачи первого бита байта данных.

Если контроллер работает в режиме slave, то для начала обмена данными он ожида­ет команды и тактового сигнала SCL от master-устройства. Все принятые от master-стан­ции сообщения тут же посылаются обратно, таким образом, обеспечивается подтверж­дение их приема.

Перед началом обмена центральный процессор slave-станции должен подготовить буферы данных для передачи (TxBD) и для приема данных (RxBD), затем установить бит STR := 1 в регистре команд I2COM. Установка бита STR в slave-устройстве не начинает передачу, а только подготавливает схемы контроллера и данные для передачи. Переда­ча начнется только после прихода команды от master-станции.

Если при начале передачи start-условия slave-станция в первом передаваемом байте распознала свой адрес (биты с 7-го по 1-й), то проверяется бит 0 -это бит команды R/W. Если R/W = 0, то происходит прием данных от master-станции, и эти данные принимают­ся в RxBD-буферы, пока не будут получены новые start- или stop-условия. Если R/W = 1, то данные из буфера FIFO передатчика slave-станции будут переданы master-станции. Если данные готовы, то они будут переданы по следующему импульсу тактового сигнала после передачи подтверждения на предыдущее сообщение. Если данные не готовы, то передача прерывается и генерируется маскируемое прерывание ТхЕ, которое уведом­ляет центральный процессор, что надо подготовить данные для передачи.

После передачи каждого байта передатчик проверяет бит подтверждения от master-станции. Если подтверждение не получено, то передача прерывается и генерируется прерывание центрального процессора. Прерывание также может генерироваться после передачи полного буфера, если возникла ошибка или произошло незаполнение underrun буфера FIFO передатчика. Если произошла ошибка незаполнения (underrun), то пере­датчик slave-станции будет передавать «1» биты, пока не получит stop-условие от master-станции.

Пользователь может управлять работой !2С-контроллера, передавая RISC-контрол­леру команды INITTX PARAMETERS, CLOSE RX, INIT RX PARAMETERS, INITTX and RX PARAMETERS.