- •Глава 5 коммуникационные микроконтроллеры и системы на их основе
- •5.1. Общие понятия
- •5.1.1. Семиуровневая модель управления в сетях
- •5.1.2. Функции, реализуемые коммуникационным контроллером
- •5.1.3. Семейство коммуникационных микроконтроллеров мрс860
- •5.2. Организация коммуникационных процессорных модулей в кмк
- •5.2.1. Структура коммуникационного процессорного модуля
- •5.2.2. Контроллеры коммуникационных каналов scc
- •5.2.3. Контроллеры управления smc
- •5.2.4. Контроллеры дополнительных коммуникационных каналов
- •5.3. Поддержка протоколов в коммуникационных
- •5.3.1. Доступ к линиям т1/серт. Поддержка basic isdn
- •5.3.2. Виртуальные каналы и поддержка primary isdn
- •5.3.3. Работа в асинхронных каналах связи
- •5.3.4. Доступ к сетям с пакетной передачей (с протоколами х.25)
- •Алгоритмы работы сети. Процесс установления соединения
- •Процесс разъединения
- •Процесс передачи сообщения
- •5.3.5. Доступ к сетям ethernet
- •5.3.6. Протоколы, поддерживаемые на уровне загружаемого микрокода
5.3.5. Доступ к сетям ethernet
Ethernet-контроллер. Протокол Ethernet/IEEE 802.3 широко распространен в современных локальных сетях. Протокол предлагает множественный доступ станций к сети с обнаружением сигнала несущей частоты (метод CSMA/CD). Ethernet-версии - это расширение базовых версий контроллера МРС860, в которых к имеющимся коммуникационным протоколам добавлена поддержка Ethernet-протокола и реализованы функции МАС-уровня в соответствии с требованиями стандарта IEEE 802.3. Настройка SCC-канала на работу с Ethernet-протоколом (10 Мбит/с) производится в битах MODE (MODE = 1100) регистра GSMR. Рекомендуется для работы с Ethernet-протоколом использовать SCC1-контроллер, так как он имеет буферы FIFO, размер которых больше в два раза аналогичных буферов FIFO других SCC-каналов.
Для подключения Ethernet-контроллера к сети Ethernet требуется дополнительный внешний передатчик. Фирма «Motorola» выпускает специализированный модуль МС68160 EEST (Enhanced Ethernet Serial Transceiver) для подключения к реальной сети. QUICC-контроллер подготавливает кадры данных, а EEST-передатчик выполняет манчестерское кодирование/декодирование сигналов, автоматическое определение типа разъема и типа сетевого кабеля (AUI или 10Base-T) и выполняет преобразование логических сигналов в электрические импульсы, которые используются при передаче сигналов по выбранному кабелю. Следует обратить внимание, что встроенный блок DPLL не используется для манчестерского кодирования/декодирования сигналов, так как не обеспечивает требуемой скорости передачи данных в 10 Мбит/с. Поэтому при работе с Ethernet-протоколом DPLL-блок должен быть выключен, а все функции кодирования и декодирования данных возлагаются на внешний передатчик EEST. Подключение контроллера к микросхеме EEST показано на рис. 5.118.
Перечислим правила подключения PowerQUICC-контроллера к микросхеме EEST.
Тактовая частота приемника RCLK и передатчика TCLK поступает на QUICC через внешние контакты CLK1, CLK2, CLK3, CLK4 от выводов RCLK и TCLK микросхемы EEST.
Для передачи данных вывод TXD контроллера соединяется со входом ТХ передатчи- ка, а для приема данных вход RXD контроллера соединен с выходом RX передатчика.
При работе с Ethernet-протоколом вывод контроллера становится выводом сиг- нала разрешения передачи TENA (Transmit Enable), который поступает на вход ТЕМА пе- редатчика. Активное состояние сигнала - «1».
5. При работе с Ethernet-протоколом вход CTS контроллера становится входом сигнала обнаружения коллизий CLSN (Collision), который поступает с выхода CLSN передатчика. Активное состояние сигнала - «1».
Сигнал обнаружения несущей частоты формируется как комбинация сигналов RENA или CLSN. Дополнительно передатчик EEST имеет вход LOOP, на который пользователь может программно подать сигнал с выхода параллельного порта ввода/вывода для циклического тестирования работы передатчика.
Коммуникационный контроллер сохраняет в буферах памяти каждый принятый байт кадра данных после получения начального ограничителя, используя каналы SDMA. При передаче пользователь должен подготовить в памяти данные, адрес приемника и передатчика и данные поля «тип кадра». При передаче этих данных в сеть QUICC-контроллер автоматически добавит поле контрольной суммы и заполнит поле данных, если его длина меньше 46 байт, специальными символами-заполнителями до заданного минимума.
Для тестирования работы аппаратуры приемника, передатчика и буферов FIFO Ethernet-контроллера пользователь может включить петлевой (loopback) тестовый режим. Этот режим включается при установке бита LPB := 1 в регистре режима PSMR Ethernet-контроллера. Если используется режим внешнего loopback, то биты DIAG в регистре общих режимов работы должны быть настроены для работы в нормальном режиме. Если установлен режим внутреннего loopback, то биты DIAG в регистре GSMR должны быть настроены для работы в петлевом режиме (loopback). В режиме внутренней петли схемы SCC-контроллера отключаются от схем последовательного интерфейса, выход передатчика внутри подключается ко входу приемника SCC-контроллера, тактирование приемника и передатчика производится от одного источника. В режиме внешней петли Ethernet-контроллер одновременно передает и принимает данные от микросхемы EEST.
В контроллере МРС860 пользователь имеет дополнительную возможность для настройки работы Ethernet-контроллера в полнодуплексном режиме обмена. Для этого требуется установить бит FDE := 1 в регистре режима PSMR (см. рис. 5.119).
Два 48-битных поля адресов предназначкны для указания адреса станции отправителя и адреса станции получателя информации.Адрес станции отправителя(48 бит) пользователь может задать в ячейках памяти параметров PADDR1_H,PADDR1_M,PADDR1_L(табл.5.78).Двухбайтное поле «тип/длина» предназначено для задания длины поля данных или,в некоторых версиях протокола Ethernet,для задания типа кадра.
13
Два 48-битных поля адресов предназначены для указания адреса станции отправителя и адреса станции получателя информации. Адрес станции отправителя (48 бит) пользователь может задать в ячейках памяти параметров PADDR1_H, PADDR1_M, PADDR1J. (табл. 5.78). Двухбайтное поле «тип/длина» предназначено для задания длины поля данных или, в некоторых версиях протокола Ethernet, для задания типа кадра.
Для контроля правильности передачи данных в состав кадра данных введено поле контрольной суммы, в которое записывается 32-разрядная контрольная сумма кадра данных. Для настройки режима работы с 32-битной CCITT-CRC контрольной суммой с образующим полиномом Х^32+Х^26+Х^23+Х^22+Х^16+Х^12+Х^11+Х^10+Х^8+Х^7+Х^5++Х^4+Х^2+Х^1+1 в биты CRC регистра режима PSMR требуется записать код 10. В ячейке C_MASK пользователь перед началом работы с Ethernet-контроллером должен задать константу образующего полинома 0xDEBB20E3, а в ячейке C_PRES - начальное значение счетчика контрольной суммы 0xFFFFFFFF.
Передача данных. После включения передатчика канала в работу Ethernet-контроллер начинает периодически раз в 128 тактов опрашивать готовность первого буфера в таблице буферов для передачи TxBD. Если пользователь подготовил данные для передачи и не желает ждать 128 тактов, то он может установить бит TOD := 1 в регистре TODR, чтобы вызвать принудительное начало опроса буферов для передачи данных.
Если данные для передачи подготовлены, то контроллер начинает загружать кадр по SDMA-каналам из буфера данных в буфер FIFO, выставляет сигнал ТЕМА к микросхеме EEST и начинает передавать преамбулу, начальный ограничитель и далее сам кадр данных. При передаче Ethernet-контроллер передает LSB-бит первым. Перед началом передачи контроллер проверяет наличие сигнала несущей частоты в канале; после того как в канале будет обнаружен пассивный сигнал несущей частоты, контроллер проверяет, чтобы этот сигнал был пассивным в течение 6,4 мкс. Далее передача будет начата после ожидания 3,2 мкс. Таким образом, сигнал несущей должен быть пассивным в течение 9,6 мкс, перед началом передачи кадра. Поэтому минимальный межкадровый интервал (interpacket gap) для передачи кадров back-to-back установлен равным 9,6 мкс, и при возникновении коллизии повторная передача начинается через 9,6 мкс после того, как сигнал несущей в канале станет пассивным, при условии что он оставался пассивным в течение 6,4 мкс.
После окончания передачи кадра данных, когда в слове состояния последнего буфера кадра обнаружен бит L = 1 (Last) и установлен бит ТС = 1, контроллер начинает передавать кон-трольную сумму кадра и по окончании передачи сбрасывает сигнал ТЕМА в пассивное состояние. Сброс этого сигнала заставляет микросхему EEST начать передачу специального некорректного символа, закодированного манчестерским кодом, уведомляющего о конце Ethernet-кадра.
Далее контроллер заполняет биты статуса переданного кадра в слове состояния последнего буфера и сбрасывает бит готовности буфера к передаче (бит R := 0). Если же текущий буфер кадра передан, но бит L = 0, то для данного буфера только сбрасывается бит R := 0, и контроллер переходит к обработке следующего буфера в таблице TxBD. Если в слове состояния переданного буфера установлен бит прерывания I = 1, то будет выработан запрос на прерывание.
Если во время передачи кадра данных обнаруживается коллизия, то контроллер выполняет специальную процедуру остановки, возвращается к первому буферу кадра и через некоторый интервал времени делает попытку повторной передачи. Для каждого переданного кадра данных в слове состояния последнего буфера кадра устанавливаются биты RC, значения которых определяют, сколько повторных попыток потребовалось, чтобы успешно закончить передачу текущего кадра. Общее число повторных попыток передачи задается в ячейке RET_LIM (стандартное значение 15). При начале передачи контроллер сохраняет первые 5-8 байт передаваемого кадра во внутренней памяти в ячейках TBUFx_xxx, поэтому при повторной передаче не требуется дополнительная загрузка этих данных из буферов данных. Единственное ограничение состоит в том, что первый буфер кадра должен иметь длину не менее 9 байт. Текущее значение числа повторных передач подсчитывается в ячейке RET_CNT, и если число повторов превысило значение RETJJM, то генерируется ТХЕ-запрос на прерывание в регистре событий, устанавливается бит ошибки RL := 1 в слове состояния буферного дескриптора, передача данных из буфера останавливается и буфер закрывается. Продолжение передачи возможно после получения контроллером команды RESTART TRANSMIT.
Ячейка Р_Рег памяти параметров предназначена для определения «степени активности» станции после обнаружения состояния коллизии. В нормальном режиме в эту ячейку заносится код 0x0000 и выполняется стандартный алгоритм расчета следующего момента выхода станции в сеть для повторной передачи. Если же в эту ячейку записан код от 1 до 9, то данный код будет добавлен к счетчику тайм-аута ожидания, и станция выйдет в сеть через большее время. Таким образом, значение «9» предназначено для менее активных станций. Пользователю также предоставляется возможность управлять временем выхода станции в сеть для повторной передачи через бит STB (Stop Backoff Timer) в регистре режима Ethernet-контроллера. Если бит STB = 0, то счетчик времени работает в обычном режиме. Если же бит STB = 1, то счетчик будет останавливаться всякий раз, когда в канале будет активным сигнал несущей частоты.
Если во время передачи обнаруживается ошибка незаполнения буфера underrun, которая возникает, если при передаче мультибуферных кадров данный центральный процессор не успел подготовить для передачи новые буферы, содержащие данные текущего кадра, а данные из последнего подготовленного буфера уже переданы в сеть, то Ethernet-контроллер прерывает текущую передачу, передает 32 «1» бита, которые позволят определить другим станциям CRC ошибку, закрывает буфер, устанавливает бит ошибки UN := 1 в слове состояния BD и генерирует, если разрешено, ТХЕ-прерывание через регистр событий SCC-канала. После получения команды возобновления передачи RESTART TRANSMIT контроллер продолжает дальнейшую передачу.
При передаче Ethernet-контроллер постоянно контролирует наличие сигнала несущей частоты. Если этот сигнал будет сброшен, но состояние коллизии не будет зафиксировано, то генерируется ошибка потери несущей частоты. Признаком этой ошибки будет установка бита CSL = 1 в слове состояния текущего BD. Передача кадра будет продолжена в нормальном режиме.
Для тестирования своей работоспособности некоторые передатчики могут регистрировать ошибку Heartbeat. Если установлен бит НВС = 1 в регистре режима PSMR, то передатчик через 20 битовых интервалов (2 мкс) после завершения передачи кадра данных зарегистрирует внутреннее возникновение коллизии, которая не связана с реальной коллизией в сети и предназначена для проверки работы передатчика. Если бит НВС = 1, но через 2 мкс состояние heartbeat не зарегистрировано, то это значит, что контроллер работает некорректно, поэтому регистрируется ошибка, текущий буфер данных закрывается, в слове состояния буфера устанавливается бит ошибки НВ := 1 и генерируется запрос на прерывание ТХЕ через регистр событий канала, конечно, если это прерывание не замаскировано.
Пользователь может управлять передачей при помощи команд STOP TRANSMIT, RESTART TRANSMIT, INIT TX PARAMETERS. Специальная команда GRACEFUL STOP TRANSMIT позволяет изменить порядок передачи содержимого буферов или кадров или при возникновении ошибки. При получении этой команды Ethernet-контроллер немедленно останавливается, если не было передачи, или если была передача кадра, то продолжает передачу текущего кадра либо до ее успешного завершения, либо до возникновения ошибки коллизии.
Прием данных. При приеме кадров Ethernet-контроллер работает независимо и автономно от центрального процессора и выполняет распознавание адреса станции, проверку контрольной суммы кадра, контроль длины кадра на предельное максимальное и минимальное значение, контролирует максимальное значение размера данных, передаваемых по DMA-каналам.
После включения приемника в работу, если нет коллизий в канале и выставлен активный сигнал RENA, контроллер переходит в режим «охоты» или поиска кадра данных во входном потоке, ожидая получения символа SYN1, формат которого задан в регистре синхронизации DSR. Для Ethernet-контроллера в этот регистр записываются стандартные значения SYN1 = 0x55 и SYN2 = 0x05. Биты NIB в регистре режима PSMR определяют, через сколько битов после установки активного сигнала RENA контроллер будет искать стартовый ограничитель во входном потоке. Обычно устанавливается значение задержки, равное 22 битам. Начальный ограничитель имеет размер 1 байт фиксированного формата OxD5. Значения задержек при приеме кадра приведены в табл. 5.79.
Формат начального ограничителя и преамбулы включает повторяющиеся комбинации 1 и 0. Если при начале приема кадра между 14-м и 21-м битами обнаруживается комбинация 11 или 00, то текущий кадр отвергается. Если комбинация 11 или 00 встречается после приема 21-го бита, но до начала приема начального ограничителя, то кадр тоже отбрасывается. Если принятый набор битов совпадает с содержимым регистра синхронизации, то режим «охоты» выключается и начинается прием кадра данных. При приеме кадра первым принимается LSB-бит.
Первыми принимаются и распознаются 48 бит адреса получателя. Приемник может распознавать индивидуальный физический адрес станции, групповой (multicast) адрес и широковещательный (broadcast) адрес. Пока контроллер не проведет сравнение адреса, полученного в пакете, со своим адресом, заданным в ячейках памяти параметров, никакие данные не записываются в буферы данных.
Если это групповой адрес (бит I/G = 1), то вначале контроллер проверяет, является ли адрес широковещательным. Широковещательный адрес представляет собой код, состоящий только из единицы. Если прием широковещательных адресов разрешен (бит BRO = О в регистре PSMR), то кадр принимается. Если же бит BRO = 1, то все кадры с широковещательными адресами отбрасываются, даже если установлен бит PRO = 1.
Если сравнение адреса прошло успешно, то начинается прием кадра, независимо от значения сигнала на контакте (Reject). Если это групповой, но не широковещательный адрес, то производится сравнение адреса с использованием хэш-таблицы групповых адресов в ячейках GADDR1-GADDR4.
Если проверка адреса прошла неудачно и в регистре режима PSMR установлен бит PRO = 0, т. е. проверка адреса должна была выполняться для всех кадров, то кадр отбрасывается. Если же бит PRO = 1, то кадры принимаются без проверки адреса, если сигнал на контакте пассивный, и отбрасываются, если сигнал активный. При этом в слове состояния последнего буфера приема кадра устанавливается бит признака М (Miss). Если бит М = 1, то кадр был принят без контроля адреса, а если бит М = 0, то кадр был принят после проверки совпадения поля адреса получателя и адреса станции.
Если внешняя САМ-память используется при сравнении адресов, то следует установить режим без проверки совпадения адресов (promiscuous), установив бит PRO = 1, и тогда кадр может быть отброшен, если от САМ-памяти будет выставлен активный сигнал во время приема кадра. Если САМ-память используется для хранения адресов, которые должны быть отброшены, а не приняты, то сигнал на контакте rrjct для САМ-памяти должен быть инвертирован.
Если сравнение адресов закончилось успешно, то контроллер проверяет бит незанятости Е в слове состояния следующего буфера в таблице RxBD, и если буфер свободен (бит Е = 1), то прием данных производится в этот буфер. Если при приеме кадра обнаружена коллизия, то текущий буфер может быть использован для приема нового кадра. Когда буфер заполнен, то контроллер сбрасывает бит Е := 0 и, если в слове состояния установлен бит прерывания 1 = 1, генерирует запрос на прерывание.
Если длина принимаемого кадра превышает размер буфера приема, то контроллер проверяет незанятость следующего буфера в таблице RxBD и, если буфер не занят, продолжает прием кадра в новый буфер. Максимальная длина приемного буфера задается пользователем в ячейке MRBLR протокол-независимой памяти параметров SCC-контрол-лера. При работе с Ethernet-протоколом рекомендуется в эту ячейку записывать значение не меньше 64 байт.
По окончании приема кадра, когда сигнал несущей станет пассивным, подсчитывается контрольная сумма принятого кадра и кадр сохраняется в буфере.
При приеме кадра Ethernet-контроллер постоянно проверяет длину кадра на максимальное и минимальное значение. Максимальная длина кадра данных (или число байт между начальным ограничителем и концом кадра) задается в ячейке MFLR памяти параметров и по стандарту 802,3 она равна 1518 байт. Если получен кадр, длина которого превышает значение MFLR, то излишек кадра отбрасывается, а 1518 байт кадра записываются в буфер. В слове состояния последнего буфера устанавливается бит LG := 1 (LonG). При этом длина кадра, записанная в ячейку длины последнего буферного дескриптора, является длиной реально принятого кадра. Специальный вычитающий счетчик в ячейке DMA_CNT контролирует, сколько байт кадра передано в буфер памяти. Минимальная длина кадра данных задается в ячейке MINFLR памяти параметров, и по стандарту 802,3 она равна 64 байтам. Если получен кадр, длина которого меньше значения MINFLR и бит RCH = 0 в регистре режима PSMR, то этот кадр отбрасывается и в слове состояния последнего буферного дескриптора текущего кадра устанавливается бит SH := 1 (SHort), если же бит RCH = 1, то кадр будет принят.
Пользователь может управлять процессом записи байтов кадра в буферы памяти по системной шине. Для этого предназначены ячейки MAXD1, MAXD2. Ячейка MAXD1 используется, если сравнение адресов прошло успешно, а ячейка MAXD2 - в режиме без проверки совпадения адресов (promiscuous mode). Пользователь имеет возможность остановить запись данных в память при передаче установленного в этих ячейках числа байт, и остаток кадра будет отброшен. Затем контроллер дождется окончания приема всего кадра, или пока не будет принято MFLR байт кадра, и заполнит в слове состояния буфера биты статуса принятого кадра и длину реально принятого кадра. Если такая остановка не требуется, то при инициализации в эти ячейки заносится значение 1518 байт. Эти ячейки могут быть использованы для контроля состояния сети, например, для приема только заголовков пакета, содержащих адресное поле, для проверки работающих в сети станций.
После завершения приема кадра, и если бит SIP в регистре PSMR установлен в «1», то байт информации (этот байт называется tag-байт) с контактов 23-16 параллельного порта В будет добавлен в последний буфер кадра. Если эти контакты настроены как выходы, то байт данных читается из регистра PBDAT. Если кадр данных отбрасывается, то и tag-байт тоже отбрасывается. Далее контроллер устанавливает в слове состояния буфера бит последнего буфера L := 1, заполняет биты состояния принятого кадра и сбрасывает бит незанятости Е := 0. Затем контроллер генерирует маскируемое прерывание, которое сообщает процессору, что кадр данных принят и находится в памяти, и переходит к ожиданию приема следующего кадра данных.
Для временного хранения принятой информации каждый Ethernet-контроллер имеет внутренние буферы FIFO. Данные из FIFO по SDMA-каналам под управлением RISC-контроллера начинают передаваться в соответствующие буферы памяти. Если RISC-контроллер не успевает очищать ячейки FIFO для приема новой информации из сети, и в момент прихода новой порции данных все ячейки FIFO окажутся занятыми, то возникает ошибка переполнения буферов overrun. При этом контроллер будет вынужден записать новые данные поверх старых, что приведет к потере информации. Далее текущий буфер закрывается, в его слове состояния устанавливается бит ошибки переполнения OV := 1 и через регистр событий генерируется, если оно разрешено, RXF-прерывание к центральному процессору и увеличивается счетчик потерянных кадров в ячейке DISFC памяти параметров. После вышеуказанных действий контроллер переходит в режим «охоты» и ожидает новый кадр данных.
Если при приеме правильного кадра данных нет свободных буферов в памяти для сохранения информации, то кадр будет потерян. Признаком этой ошибки является установка бита ошибки занятости BSY := 1 в регистре событий Ethernet-контроллера и увеличение счетчика потерянных кадров в ячейке DISFC памяти параметров.
Если Ethernet-контроллер принял кадр данных с длиной, не кратной 8 битам, то вначале он проверяет контрольную сумму кадра, и если будет обнаружена ошибка проверки CRC суммы, то регистрируется ошибка принятия невыравненного кадра, устанавливается бит ошибки NO := 1 в слове состояния BD и увеличивается счетчик принятых, некратных 8, кадров в ячейке ALEC памяти параметров. Если же ошибка проверки CRC не регистрируется, то продолжается обычный прием кадров.
Если при приеме кадра данных контроллер обнаруживает ошибку проверки CRC контрольной суммы, то текущий буфер закрывается, устанавливается бит ошибки CRC := 1 в его слове состояния, устанавливается бит RXF-прерывания в регистре событий и увеличивается счетчик CRC ошибок в ячейке CRCEC памяти параметров. После приема кадра с ошибкой проверки CRC суммы приемник переходит в режим поиска нового кадра.
Пользователь может также управлять процессом приема кадра при помощи команд ENTER HUNT MODE и INIT RX PARAMETERS. Команда CLOSE RxBD при работе с Ethernet-контроллером не применяется.
Проверка адресов с помощью САМ-памяти. САМ-память (контекстно-адресуемая или ассоциативная память) предназначена для сравнения адресов станции и адреса получателя в пакете. Ethernet-контроллер может подключаться к внешней контекстно-адресуемой САМ-памяти двумя способами: через последовательный интерфейс и/или через системную шину. Для включения того или иного режима пользователь должен просто разрешить работу с определенными внешними контактами и аппаратно подключить внешние схемы блока памяти. Если при работе пользователь отключит выбранные контакты контроллера, то текущий кадр может быть потерян.
При работе с внешней САМ-памятью можно также использовать внутреннюю логику выработки сигналов блока системной интеграции.
При работе с последовательным интерфейсом после распознавания начального ог- раничителя контроллер выставляет сигнал начала приема = 0 (receive start). Этот сигнал выставляется только на один битовый интервал во время приема второго бита адреса назначения.
Логические схемы САМ-памяти используют комбинацию сигналов , RXD, RCLK для записи в память полей кадра и для генерации сигнала «записи» к микросхеме САМ-памяти для начала сравнения адреса. Сигнал RENA от микросхемы EEST может быть использован для прекращения сравнения адресов, если при приеме кадра обнаружено состояние коллизии.
После окончания сравнения адреса кадра и, если текущий кадр должен быть отбро-шен, логика САМ-памяти вырабатывает активный сигнал «отмена приема» = О (receive reject). Получив этот сигнал, контроллер прекращает прием кадра в системную память, и текущий буфер будет подготовлен для приема нового кадра данных. Поэтому сигнал должен быть выставлен до момента завершения приема кадра. Если сравнение адресов прошло успешно, то сигнал не выставляется.
Дополнительно логика САМ-памяти может выставлять дополнительную служебную информацию на линии РВ23-РВ16 параллельного порта В. Этот tag-байт выставляется на линии РВ23-РВ16 не раньше, чем закончится прием кадра без коллизий, и будет сброшен сигнал RENA. Если в регистре режима PSMR Ethernet-контроллера установлен бит SIP = 1, то этот дополнительный байт данных (tag-байт) контроллер сохранит в последнем буфере памяти принятого кадра данных. Tag-байт удерживается на линиях порта В, пока коммуникационный контроллер сигналом на линиях - не подтвердит , что tag-байт записан в память. Длина tag-байта не включается в общую длину принятого кадра, которую контроллер записывает в поле длины последнего буферного дескриптора RxBD.
В режиме параллельного интерфейса во время записи кадра данных в память, т. е. каждый цикл шины данных коммуникационный контроллер выставляет сигналы подтверждения SDMA-доступа - . Отметим, что эти сигналы не используются при работе контроллера канала с другими коммуникационными протоколами. САМ-логика использует эти сигналы для разрешения записи данных в САМ-память одновременно с записью их в системную память контроллера. Преимущество этого способа состоит в том, что запись в САМ-память данных производится по системной шине в параллельном виде.
Сигналы - выставляются в течение всех циклов шины при записи кадра данных в буфер памяти. Одна комбинация сигналов - определяет,что
по шине передаются первые 32 бита кадра ( =1 , = 0)другая комбинация определяет, что передаются данные из середины кадра ( = 0, = 1), и третья комбинация определяет, что в память записываются последние 32 бита кадра (SDACK2 = 0, SDACK1 = 0), но только если к данным кадра добавлен tag-байт. Tag-байт должен быть включен в три байта последней 32-битной пересылки по шинам контроллера.
Если контроллер использует 32-битную шину данных, то 32 бита данных кадра записываются в память за один цикл шины. Если используется 16- или 8-битная шина, то для записи 32 бит данных требуется два или четыре цикла шины. В этом случае сигналы - выставляются в течение всех циклов шины, которые требуются для передачи всех 32 бит данных.
Алгоритм проверки адреса при работе с таблицей адресов. Специальная команда SET GROUP ADDRESS используется для установки в «1» одного из 64 бит четырех индивидуальных/групповых регистров фильтров GADDR1-GADDR4 или IADDR1-IADDR4. Для того чтобы индивидуальный или групповой адрес был занесен в хэш-таблицу, пользователь перед передачей контроллеру этой команды должен записать требуемый адрес в ячейку TADDR (TADDR_H, TADDR_M, TADDR_L) памяти параметров. При выполнении команды SET GROUP ADDRESS RISC-контроллер проверяет в ячейке TADDR значение бита I/G и определяет, в какую хэш-таблицу - индивидуальную или групповую - будет занесен адрес. Далее 48-битный адрес преобразуется в один из 64 бит. Для этого он пропускается через 32-разрядную контрольную сумму CRC32. В результате получается 6-битная контрольная сумма, двоичный код которой представляет число от 1 до 64. Два старших бита контрольной суммы определяют номер одного из четырех регистров xADDR1-xADDR4, а оставшиеся четыре бита - номер бита в регистре, который будет установлен в «1».
Если требуется удалить адрес из хэш-таблицы, то Ethernet-контроллер должен быть выключен и хэш-таблица должна быть очищена. Пользователь может записать код «все 0» в регистры IADDR1-IADDR4 и GADDR1-GADDR4 для сброса хэш-таблиц и всех адресов после системного сброса и при включении Ethernet-контроллера. После этого следует восстановить адреса, которые надо сохранить, так как на один бит в хэш-таблице может быть назначено несколько адресов.
При приеме кадра содержимое поле адреса приемника по этому же алгоритму пропускается через CRC32 контрольную сумму. И если бит с вычисленным номером в ячейке хеш-таблицы равен единице, то кадр данных принимается. Если же бит равен нулю, то кадр отбрасывается. Эффективность хэш-таблиц возрастает с увеличением числа используемых адресов.
Обработка коллизий. Если при передаче кадра контроллер регистрирует состояние коллизии, то он в течение 32 битовых интервалов продолжает передачу «1» битов (JAM pattern). Если коллизия обнаруживается во время передачи преамбулы, то контроллер завершает передачу преамбулы, а затем передает 32 «1».
Если коллизия обнаруживается в течение 64 битовых интервалов после начала передачи кадра, то передача кадра останавливается, передатчик ожидает случайное количество заданных временных интервалов и делает попытку повторного выхода в сеть. Этот интервал называется Slot time и равен 512-битовым интервалам или 52 мкс.
Если коллизия обнаруживается после передачи или 64 битовых интервалов (если бит LCW = 0 в регистре режима) или после 56 битовых интервалов (если бит LCW = 1), то повторная передача кадра не производится, буфер закрывается, устанавливается бит ошибки LC := 1 в слове состояния буферного дескриптора и генерируется запрос на прерывание ТХЕ через регистр событий. Этот случай носит название «поздняя коллизия» (Late Collision).
Если коллизия обнаружена при приеме кадра, то прием останавливается. Бит ошибки LC := 1 в слове состояния буфера устанавливается, только если длина принятой части кадра не менее значения параметра MINFLR, или если разрешен прием коротких кадров (бит RSH = 1 в регистре режима), или если зарегистрирована поздняя коллизия.
При работе в петлевом режиме для тестирования работы обнаружения коллизий приемника и передатчика пользователь может запрограммировать принудительную выработку состояния коллизии после передачи каждого кадра данных. Для включения этого режима необходимо установить бит FC := 1 в регистре режима Ethernet-контроллера. Если же бит FC = 0, то схемы контроллера работают в обычном режиме.
Fast Ethernet-контроллер. Fast Ethernet-контроллер является дальнейшим расширением Ethernet-контроллера и реализует сетевой протокол стандарта IEEE 802.3u. Так же как и просто Ethernet, контроллер Fast Ethernet поддерживает метод доступа «множественный доступ с прослушиванием несущей и обнаружением коллизий» CSMA/CD (Carrier-Sense Multiple Access/Collision Detect) и использует кадр данных стандартного формата. Ethernet Fast Ethernet-протокол реализуется через Mil-интерфейс (media-independent interface). Формат кадра протокола Fast Ethernet представлен на рис. 5.121.
Применение во всех версиях Ethernet-сетей одного типа кадра данных значительно облегчает совместную работу оборудования 10/100 Мбит/с и упрощает соединение раз-носкоростных Ethernet-сегментов. Кадр начинается со стандартной 7-байтовой преамбулы, которая представляет собой чередование «1» и «0», затем идет 1-байтовое поле начального ограничителя кадра (Start Frame Delimiter, SFD). При передаче преамбула и поле SFD автоматически вставляются, а при приеме автоматически удаляются самим контроллером.
Поля адреса получателя и отправителя занимают 48 бит. 10/100 МАС-подуровень (Media Access Control) реализует функции обработки адресов в принимаемых пакетах (широковещательного, одиночного, группового), обеспечивает полную поддержку интерфейса МИ, позволяя регистрировать прерывания после обработки полного кадра и каждого отдельного буфера кадра. Анализ поля адреса принимаемых кадров выполняется контроллером тремя способами. Способ Promiscuous - принимаются все кадры, независимо от их адреса, а для фильтрации адресов используется внешняя контекстная САМ-память. Способ Logical - прием кадров выполняется на основе анализа групповых и широковещательных адресов. Способ Physical - анализируется уникальный 48-битный адрес станции. Анализ совпадения адресов станции и в поле принятого кадра обычно производится с использованием механизма хэш-таблицы.
Двухбайтовое поле «Длина/Тип» для локальных сетей, без выхода на другие сети, обычно используется для указания типа кадра.
Поле данных должно быть кратно 8 битам, а его длина может составлять от 48 до 1500 байт. Время передачи самого короткого кадра данных (64 байта) называется slot time. При передаче происходит автоматическое дополнение поля данных служебными символами, если его длина меньше 48 байт.
Для контроля правильности передачи используется 4-байтовое поле контрольной суммы, которое строится по правилу 32-bit CCITT-CRC циклического полинома. Подавление контрольной суммы при передаче и контроль ее при приеме выполняются автоматически.
Отличия между Fast Ethernet и Ethernet-протоколами в основном заключаются в изменении временных параметров, которые произошли вследствие увеличения скорости передачи с 10 до 100 Мбит/с (табл. 5.80).
Контроллер МРС860Т. Контроллер МРС860Т является дальнейшим расширением семейства МРС860, в дополнение к возможностям контроллера МРС860МН в него добавлен 10/100 Ethernet-контроллер. Таким образом, МРС860Т состоит из трех основных блоков обработки: ядра PowerPC, которое предназначено для выполнения задач общего класса, встроенного в коммуникационный СРМ-модуль RISC-процессора, который выполняет реализацию стандартных коммуникационных протоколов (тех же, что и в МРС860МН), и 10/100 Fast Ethernet-контроллера, который предназначен для реализации 10/100 Мбит/с Ethernet-протокола. Поскольку блок Fast Ethernet реализован как отдельный модуль, имеет свои буферы FIFO и использует для передач данных по внутренней шине режим bursting DMA, то высокоскоростной обмен через сети Ethernet реализуется независимо от СРМ-модуля. Все другие функции СРМ-модуля сохранены в полном объеме. Так, МРС860Т-контроллер поддерживает протокол QMC с 64 временными каналами в режимах HDLC или Transparent.
В отличие от основных SCC-каналов FEC-контроллер не поддерживает набор команд управления от коммуникационного процессора и функционирует полностью автономно.
Контроллер может работать с полудуплексным 100 Мбит/с каналом или полнодуплексным каналом 10 Мбит/с в версиях с тактовыми частотами больше 25 МГц и полнодуплексным 100 Мбит/с каналом в версиях с тактовыми частотами больше 40 МГц. Fast Ethernet-контроллер (Fast Ethernet Controller, FEC) поддерживает три способа подключения к различным внешним трансиверам, выбор режима работы интерфейса производится битом MII_MODE в регистре R_CNTRL:
100 Мбит/с 802.3 Media-Independent Interface (Mil);
10 Мбит/с 802.3 МП;
10 Мбит/с 7-wire interface (7-проводной последовательный интерфейс для обычного 1 0 Мбит/с Ethernet).
Пример подключения контроллера MPC860 показан на рис.5.122
Рис.5.122 Пример подключения контроллера МРС860 к 10 Мбит/с внешнему трансиверу.
Если контроллер МРС860Т работает в режиме Fast Ethernet-протокола, то для реализации интерфейса Mil (Media Independent 1п1е1тасе)функциональное назначение некоторых внешних контактов будет изменено. Большинство сигналов Mil-интерфейса реализуется через контакты 13-разрядного параллельного порта D. Каждый разряд порта D может быть настроен или на работу как независимый разряд параллельного порта вво-ла/вывода (соответствующий бит в регистре PDPAR = 0), или как функциональный вывод < эммуникационного контроллера (соответствующий бит в регистре PDPAR = 1). Биты в регистре PDDIR определяют направление передачи через выбранную линию порта D РDDIR = 0-BXOfl, PDDIR = 1 -выход). Для включения режима МП-интерфейса требуется записать код 0x1 FFF в регистр PDPAR, код 0x1 С58 в регистр PDDIR.
Подключение Fast Ethernet-контроллера к внешнему устройству PHY интерфейса производится с использованием следующих 18 сигналов МП-интерфейса (табл. 5.81).
Таблица 5.81 Дополнения в структуре внешних контактов контроллера
Ниже перечислены новые контакты, которые используются при работе МП-интерфейса:
MII_TX_EN - Transmit Enable. Разрешение передачи. Сигнал выставляется, когда на МП выставлены корректные данные, т. е. при начале передачи преамбулы контроллером, и сбрасывается по перепаду TX_CLK для последнего бита кадра.
MII_TX_Clk (Старое назначение контакта - IRQ7) - Transmit Clock. Внешняя тактовая частота для схем передат-чика TX_EN, TXD, TX_ER.
MIICRS - Carrier Receive Sense. Если входной сигнал CRS активен, то в сети присутствуе* какой-то обмен данными.
MII_COL - Collision Detect. Если в сети обнаружена коллизия, то выставляется этот сигнал, ко-с-рый остается активным в течение все- го времени обработки коллизии. Этот сигнал не определе-для полнодуплексного обмена.
MIIJVOO - Management Data I/O. Двунаправленная линия. Используется для обмена служебное информацией между блоками PHY и MAC. Обмен обычно синхронизируется сигналом на линии MDC
Настройка FEC-контроллера производится с помощью программирования регистров памяти параметров и буферных дескрипторов. Доступ к регистрам, которые расположены во внутренней двухпортовой памяти (табл. 5.82), и к буферным дескрипторам производится в режиме big-endian.
Регистр контроля ECNTRL (рис. 5.123) предназначен для включения/выключения FEC-контроллера пользователем. При установке бита ETHER__NET = 1 FEC-контроллер начинает работать. При сбросе этого бита контроллер немедленно прекращает прием кадра, а передача будет остановлена только после передачи неправильной CRC контрольной суммы в конце текущего кадра. При выключении контроллера указатели FIFO, буферные дескрипторы и схемы DMA сбрасываются.
При установке бита RESET := 1 производится сброс FEC-контроллера, аналогичный аппаратному сбросу или сбросу по команде процессора, все операции приема и передачи немедленно прекращаются.
В регистре R_HASH (рис. 5.124) пользователь может установить максимальную длину используемых кадров в байтах. Напомним, что при приеме/передаче кадра с длиной более указанной будет выработаны прерывания BABR/BABT. Стандарт 802.3 рекомендует устанавливать параметр MAX_FRAME_LENGTH равным 0х5ЕЕ, что соответствует 1518байтам
.
При возникновении определенных событий в канале связи происходит их регистрация в регистре прерываний MEVENT (рис. 5.125). Сброс бита события производится записью в выбранный разряд кода «1». Регистрация прерывания, связанного с любым из событий, может быть замаскирована пользователем при программировании регистра маски I_MASK. Форматы регистров прерываний и маски совпадают. Прерывание разрешено, если соответствующий бит в регистре маски установлен в «1».
Бит HBERR (Heartbeat Error) регистрируется, когда в слове состояния буферного дескриптора передачи был установлен бит ошибки НВС = 1, т. е. была обнаружена ошибка проверки аппаратуры.
Если был принят кадр длиной более 1518 байт, будет зарегистрирована ошибка Babbling Receive Error, которая фиксируется установкой бита ошибки BABR := 1.
Если из-за ошибок пользователя при программировании контроллер передал кадр длиной более 1518 байт, то будет зарегистрирована ошибка Babbling Transmit Error, которая фиксируется установкой бита ошибки ВАВТ := 1.
После завершения передачи полного кадра и заполнения слова состояния последнего буферного дескриптора регистрируется прерывание и устанавливается 6htTFINT :- 1 (Transmit Frame Interrupt). После передачи каждого отдельного буфера текущего кадра регистрируется прерывание и устанавливается бит ТХВ := 1 (Transmit Buffer Interrupt).
После завершения приема полного кадра и заполнения слова состояния последнего: буферного дескриптора регистрируется прерывание и устанавливается бит RFINT := 1 (Receive Frame Interrupt). После приема каждого отдельного буфера текущего кадра регистрируется прерывание и устанавливается бит RXB := 1 (Receive Buffer Interrupt), но только если в слове состояния этого дескриптора установлен бит разрешения прерывания при приеме данных I = 1 (Interrupt).
После завершения МП-интерфейсом очередной порции обмена данными регистрируется прерывание Mil Interrupt и устанавливается бит МΙ Ι := 1.
Если при обмене FEC-контроллером по системной шине произошла ошибка, то регистрируется прерывание Ethernet Bus Error и устанавливается бит EBERR := 1.
В регистре IVEC (Interrupt Vector Register, рис. 5.126) хранится информация об уровне прерывания 0-7 (биты 1LEVEL), который будет связан с FEC-контроллером, и вектор прерывания (биты IVEC). Установка битов IVEC назначает для блоков FEC-контроллера на»«-высший уровень приоритета прерываний (IVEC = 00 - не рассматривать FEC-прерывания, 01 -для некритичных ко времени прерываний, 10-для передатчика, 11 -для приемника
Внутренний буфер FIFO модуля Fast Ethernet, который имеет размер 448 байт (размер одной ячейки 32 бита), может динамически распределяться между приемником и передатчиком, например 32x56 RX и 32x56 ТХ. Увеличенный размер буфера позволяет контроллеру иметь переменное время доступа к внутренней шине для передачи данны» в память. В случае коллизии в сети повторная передача кадра начинается автоматически из внутренних FIFO-буферов контроллера и не требует повторного чтения данных из памяти по системной шине. Для хранения буферов принятых данных и данных для передачи всегда требуется внешняя память. Буферы данных во внешней памяти организованы по кольцевой структуре (аналогично всем другим коммуникационным контроллерам фирмы «Motorola»), и их общее количество зависит только от размера памяти и требований к быстродействию канала связи.
Восьмибитный, только для чтения, регистр R_BOUND (рис. 5.127) определяет вери-ний адрес блока буфера FIFO приема в памяти. Содержимое регистров R_BOUND, R_FSTART, и X_START используется RISC-процессором, чтобы рассчитать доступное пространство между областями памяти для приема и передачи. В поле R_BOUND указан самый большой доступный для FIFO адрес в памяти.
Восьмибитный регистр R_FSTART (рис. 5.128) программируется пользователем и определяет адрес начала блока FIFO приема в памяти контроллера. Блок FIFO приема занимает область от R_FSTART до R_BOUND.
Восьмибитный регистр X_FSTART (рис. 5.129) программируется пользователем и определяет адрес начала блока FIFO передачи в памяти контроллера Блох FJFO передачи занимает область от X_FSTART до R_FSTART-4. Значение по умолчанию (значение, которое будет записано в регистр при сбросе) запрограммировано в микрокоде, и пользователю нет необходимости самостоятельно программировать этот регистр
Обработка коллизий. При передаче станция постоянно контролирует состояние коллизии, которое возникает, если еще одна станция начала вести передачу и произошло наложение кадров данных. При обнаружении коллизии станция начинает передавать в сеть сигнал «мусор» (jam signal), состоящий из одних «единиц», и прекращает передачу своего кадра данных. Далее станция замолкает на интервал (backoff), а затем автоматически делает попытку повторного доступа к сети. В контроллере поддерживаются два алгоритма вычисления интервала backoff. Число повторных попыток доступа к сети из-за коллизии ограничено 15, далее будет генерироваться ошибка.
При обнаружении коллизии FEC-контроллер продолжает передавать в сеть в течение 32 битовых интервалов специальные символы «мусор» (JAM pattern), в результате в сеть передается 32 «единицы». Если коллизия обнаружена во время передачи преамбулы, то контроллер заканчивает передачу преамбулы, а затем начинает передавать JAM-символы.
Если коллизия обнаружена во время передачи первых 64 байт (это размер окна коллизии и длина минимального пакета), то контроллер запускает процедуру повторной передачи. Для этого он замолкает на N х 512 битовых интервалов (512 бит = 64 байта, а N -:лучайное число). Поскольку N - случайное число, то две станции, вышедшие одновременно в сеть и создавшие коллизию, повторят процедуру выхода в сеть через разное зремя. Теоретически окно коллизии определяет время, необходимое для доставки сигнала по сети до всех станций, т. е. если одна станция выйдет в сеть, то все другие станции увидят, что канал занят в течение 512 битовых интервалов.
Если же коллизия произошла после передачи 64 байт пакета (поздняя коллизия, обычно регистрируется в протяженных сетях и сетях с несколькими повторителями), то повторная передача не производится, и после передачи последнего буфера данных кадра s его слове состояния устанавливается бит ошибки передачи LC := 1 (Late Collision).
Передача кадров FEC-контроллером. Пользователь может также настраивать режимы работы и блока передатчика FEC-контроллера при программировании регистра X_CNTRL (рис. 5.130). Пользователь может изменять значение бит в регистре только при выключенном контроллере (бит ETHER_EN = 0).
Бит FDEN (Full Duplex Enable) определяет включение режима полнодуплексной передачи для передатчика. Если бит равен 1, то передача начнется независимо от наличия сигналов «наличие несущей частоты в канале» и «коллизия».
При установленном бите НВС = 1 (Heartbeat) будет включен режим тестирования аппаратуры. В этом режиме в течение некоторого интервала (heartbeat window) после завершения корректной передачи кадра аппаратура дает сигнал о коллизии, которой на
С помощью программирования бита GTS (Graceful Transmit Stop) пользователь может управлять порядком передачи кадров данных в сеть. Если установить этот бит в «1», то после окончания передачи текущего кадра или если при его передаче обнаружена коллизия, передатчик остановится. Продолжение передачи возможно только после сброса бита GTS = 0.
Когда у станции есть данные для передачи, она проверяет, свободен канал или нет. Если канал свободен, то станция сразу же начинает вести передачу. Если канал занят, то станция после его освобождения ожидает дополнительно некоторый интервал времени, равный интервалу между кадрами данных (interframe gap), а затем начинает передавать свои данные.
Минимальный интервал между пакетами по стандарту Ethernet составляет 96 битовых интервалов. Этот тайм-аут запускается передатчиком, после того как в канале исчезнет несущая частота от предыдущей передачи. Для новой передачи достаточно, чтобы несущая частота отсутствовала в канале не менее 60 битовых интервалов. Если несущая появится в течение 36 битовых интервалов, она будет игнорироваться передатчиком, но будет зафиксирована коллизия.
Регистр X_DES_ACTIVE (рис. 5.131) используется для индикации состояния обработки таблицы дескрипторов передачи. Этот регистр сбрасывается при системном сбросе и при сбросе бита готовности FEC-контроллера ETHER_EN = 0. После того как программное обеспечение пользователя обработало очередной буферный дескриптор, т. е. записало в него данные для передачи и установило бит R := 1 (Ready) в его слове состояния, необходимо записать в данный регистр любое значение. Бит X_DES_ACTIVE будет установлен в «1», когда в этот регистр было записано какое-либо значение. Если биты X_DES_ACTIVE = 1 и ETHER_EN = 1, то контроллер будет искать в таблице дескрипторов передачи заполненный буфер, чтобы передать его по сети. Этот бит сбрасывается контроллером, когда в таблице буферов приема нет готовых к передаче буферов.
Окно коллизий для всех протоколов Ethernet составляет 512 бит, поэтому передача начнется только тогда, когда FEC-контроллер загрузит в буфер FIFO передатчика не менее 512 байт данных. Затем контроллер анализирует незанятость канала связи. Для этого он проверяет наличие несущей частоты (carrier sense) в канале. Передача начнется, когда несущая частота будет оставаться неактивной в течение 60 битовых интервалов. Дополнительно контроллер ожидает еще 36 битовых интервалов, и только после этого, если канал никто не займет, блок MAC выставляет сигнал TX_EN, и контроллер начинает передавать в сеть преамбулу, начальный ограничитель кадра и затем сам кадр данных. При передаче первым в сеть поступает LSB-бит байта.
Первые 64 байта данных контроллер сохраняет в своей внутренней памяти, поэтому если при передаче кадра обнаруживается коллизия, то FEC-контроллер начинает процедуру повторного доступа в сеть независимо от других схем и каналов сетевого контроллера и не требуя дополнительной подкачки данных в буферы FIFO из внешней памяти системы.
Стартовый адрес таблицы буферных дескрипторов передачи, которые расположены во внешней памяти, должен быть предварительно записан пользователем в регистре X_DES_START памяти параметров. Младшие 31-й и 30-й биты регистра должны быть равны нулю, так как адрес должен быть кратен четырем.
Если при завершении передачи очередного буфера данных контроллер обнаружит в слове состояния буферного дескриптора установленный бит L = 1 (Last) и установленный бит ТС = 1 (Тх CRC), то контроллер добавит к переданному кадру данных поле контрольной суммы FCS (32-битовое поле CRC) и сбросит сигнал TX_EN в пассивное состояние. После завершения передачи поля контрольной суммы контроллер заполняет в слове состояния дескриптора переданного кадра данных биты статуса переданного кадра и сбрасывает бит R := 0 (Ready). Если переданный буфер был не последним в кадре (бит L = 0), то контроллер сбрасывает только бит R:=0 в слове состояния переданного буфера.
Если длина передаваемого кадра меньше минимально допустимой длины Ethernet-кадра (64 байта), то кадр данных дополняется до необходимой длины специальными символами-заполнителями (padds). Если же длина передаваемого кадра больше максимально допустимой длины Ethernet-кадра (1518 байт), то длинный кадр данных будет передан целиком, но будет выработано прерывание ВАВТ.
При необходимости пользователь, программируя регистр I_MASK, может определять нужны ли ему прерывания после передачи отдельных буферов данных или кадра данных целиком.
Пользователь может вмешиваться в процесс передачи Ethernet-кадров. Если установить бит GTS := 1 (Graceful Transmit Stop) в регистре X_CNTRL, то FEC-контроллер завершит передачу текущего кадра данных (или прервет его передачу из-за коллизии) ^ остановится. После остановки передатчика будет выработано GRA-прерывание и установлен бит GRA := 1 в регистре прерываний I_EVENT. Передача следующих кадров бу дет продолжена только после сброса бита CTS := 0.
Основные ошибки, возникающие при работе передатчика Ethernet-контроллера, регис трируются в слове состояния буферных дескрипторов и в регистре прерываний IJEVENT
•Переполнение передатчика (Transmitter Underrun, UN). При возникновении этой ошибки FEC-контроллер передает в сеть 32 символа «единицы», которые создадут ситуа цию ошибки при проверке CRC суммы у приемника, и приемник удалит принять» кадр. Передача текущего кадра прерывается, в слове состояния всех не переданны: буферов устанавливается бит ошибки UN := 1, и они закрываются. Далее контроллер переходит к передаче следующего кадра.
Потеря несущей при передаче кадра (Carrier Sense Lost, CSL). Если при передач! кадра не обнаружено коллизий, но исчезла несущая частота в канале, то кадр пере дается до конца, повторных передач не будет, но в слове состояния последнего бу ферного дескриптора кадра устанавливается бит ошибки CSL := 1.
Превышен предел повторных попыток передач (Retransmission Limits, RL). При возникновении коллизии FEC-контроллер делает попытку автоматического повторного дос тупа к сети. Число таких попыток ограничено. При превышении установленного числ, попыток передача текущего кадра прерывается, все не переданные буферы закрыва ются, в слове состояния последнего не переданного буфера устанавливается би ошибки RL := 1. Далее контроллер переходит к передаче следующего кадра.
Поздняя коллизия (Late Collision, LC). Передача текущего кадра прерывается, все н переданные буферы закрываются, в слове состояния последнего не переданног буфера устанавливается бит ошибки LC:=1. Далее контроллер переходит к передач следующего кадра.
Ошибка из-за самотестирования аппаратуры (Heartbeat, HBC). Через 20 битовых интервалов после успешного завершения передачи кадра передатчик для проверки системы
регистрирует коллизию (которой на самом деле нет). Этот режим проверки включается установкой бита НВС := 1 в регистре X_CNTRL. При возникновении этой ошибки FEC закрывает буферы текущего передаваемого кадра (на самом деле, если 20 интервалов назад был успешно передан кадр, то в данный момент передатчик должен ожидать 96 интервалов до начала передачи следующего кадра, и открытых буферов не должно быть), в слове состояния текущего буферного дескриптора устанавливается бит ошибки НВ := 1 и генерируется прерывание HBEER, если оно разрешено.
Прием кадра FEC-контроллером. Пользователь может настраивать режимы работы блока приемника FEC-контроллера при программировании регистра R_CNTRL (рис. 5.132).
Если установлен бит PROM = 1 (Promiscuous), то сетевой контроллер будет принимать все кадры, не проверяя совпадения адреса станции и адреса в поле «получатель».
Бит MII_MODE определяет используемый режим внешнего интерфейса как для приемника, так и для передатчика (0 - «7-проводной» режим, используется только для режима 10 Мбит/с; 1 -режим МП-интерфейса).
FEC-контроллер поддерживает тестовые режимы внутренней и внешней петли. Эти режимы программируются битами LOOP и DRT в регистре R_CNTRL (LOOP = 1, DRT = 0 -внутренняя петля, LOOP = 0 и DRT = 0 - внешняя петля). В режимах петли FEC-контроллер работает в полнодуплексном режиме.
Бит DRT (Disable Receive on Transmit) определяет включение режима полнодуплексной передачи. Если бит DRT = 0, то приемник и передатчик работают независимо (полнодуплексный режим). Если же бит DRT = 1, то во время передачи кадров приемник временно отключается (полудуплексный режим).
Бит LOOP используется для тестирования аппаратуры. Если бит равен единице, то будет включен режим внутренней петли и выход передатчика внутри будет замкнут на вход приемника. Сигналы на внешние контакты передатчика не поступают. Обратите внимание, что в режиме внутренней петли бит DRT должен быть равен нулю.
Регистр R_DES_ACTIVE используется для индикации состояния обработки таблицы дескрипторов приема. Регистр R_DES_ACTIVE (рис. 5.133) сбрасывается при системном сбросе и при сбросе бита готовности FEC-контроллера ETHER_EN = 0. После того как программное обеспечение пользователя обработало очередной буферный дескриптор, т. е. считало из него данные и установило бит Е := 1 (Empty) в его слове состояния, необходимо записать в этот регистр любое значение. Бит R_DES_ACTIVE будет установлен в «1», когда в этот регистр было записано какое-либо значение. Если биты R_DES_ACTIVE = 1 и ETHER_EN = 1, то контроллер будет искать в таблице дескрипторов приема незанятый буфер, чтобы принять в него данные из сети. Этот бит сбрасывается контроллером, когда в таблице буферов приема нет готовых свободных буферов.
Первым в байте принимаемых последовательных данных принимается LSB-бит. Когда выставлен активный сигнал RX_DV, приемник вначале проверяет корректность РА/ SFD-заголовка. Если заголовок правильный, то он будет удален, а последующие данные
будут обрабатываться приемником. Если же заголовок некорректный, то следующий за ним кадр данных будет игнорирован.
При приеме кадры, которые не удовлетворяют по формату требованиям стандарта 802.3, автоматически удаляются, но при этом регистрируются соответствующие ошибки, например прием слишком длинного кадра.
При работе в последовательном режиме (данные поступают по линии RX_D0) после появления активного сигнала RX_DV приемник первые 16 битовых интервалов игнорирует поступающие данные. Следующие 16 битовых интервалов приемник анализирует принимаемые данные на 1/0, подстраиваясь под частоту передаваемого сигнала. Поскольку формат преамбулы и начального ограничителя кадра состоит из повторяющихся комбинаций «1» и «0», то при появлении комбинаций «11» или «00» на участке от 17-го до 21-го битовых интервалов будет зафиксирована ошибка, и кадр будет игнорирован. После 21-го битового интервала приемник контролирует наличие в канале связи комбинации «11» (конец приема поля начального ограничителя PA/SFD и начало полей кадра). Если после 21-го битового интервала до приема комбинации «11» обнаружена комбинация «00», то кадр будет отброшен.
При работе в режиме М ΙΙприемник побайтно контролирует совпадение формата преамбулы и начального ограничителя. Но если в байте обнаруживается комбинация «00», то кадр будет отброшен.
После завершения приема первых 8 байт преамбулы и начального ограничителя следующие принятые данные начинают записываться в буфер FIFO и приемник начинает процедуру распознавания адреса принятого кадра. Если при приеме произошла коллизия, то проверка адреса прекращается и принятые данные отбрасываются. Если успешно принято 64 байта кадра (64 байта - это размер окна коллизий для сетей Ethernet) и адрес получателя в пакете совпал с адресом станции приемника, то FEC-контроллер начинает перезаписывать принятые кадры в буферы во внешней памяти, адреса которых указаны в дескрипторах RxBD. Таким образом, контроллер автоматически отслеживает и обрабатывает все коллизии в сети без вмешательства пользователя (единственное, что следует отслеживать пользователю, - это поздние коллизии).
Стартовый адрес таблицы буферных дескрипторов приема, которые расположены во внешней памяти, должен быть предварительно записан пользователем в регистре R_DES_START памяти параметров (см. табл. 5.82). Младшие 31-й и 30-й биты регистра должны быть равны нулю, так как адрес должен быть кратен четырем.
После заполнения очередного буфера данных в памяти FEC-контроллер сбрасывает бит Е := 0 (Empty) и генерирует RXB-прерывание (если, конечно, установлен бит разрешения прерывания RBIEN в регистре IJVIASK). Если длина принимаемого кадра превышает длину буфера данных, то контроллер выбирает следующий буфер из таблицы дескрипторов, и если он пустой, то продолжает записывать в него последующие данные.
Максимальная длина буфера приема указывается пользователем в регистре R_BUFF_SIZE (рис. 5.134) в памяти параметров FEC-контроллера и должна быть кратна 16 байтам и не меньше 128 байт (R_BUFF_SIZE = 0x000005F0). Поскольку максимальная длина кадра не должна превышать 1518 байт, то в регистре R_BUFF_SIZE используются только биты 21-27. Обычно максимальную длину буфера приема устанавливают равной максимальной длине кадра.
При приеме кадра контроллер контролирует длину принятого кадра на максимальное и минимальное значения. Кадры длиной меньше 64 байт автоматически отбрасываются. Кадры длиной больше 1518 байт сохраняются полностью, но генерируется прерывание BABR и устанавливается бит LG := 1 в слове состояния буферного дескриптора последнего буфера кадра (на практике длинный кадр все-таки усекается, если его длина больше 2047 байт, так как это связано с ограничением разрядности внутренних контрольных счетчиков). После завершения приема кадра (несущая частота в канале становится пассивной) производится проверка контрольной суммы принятого кадра, и она тоже записывается в буфер. Длина реально принятого кадра также записывается в буфер данных в памяти.
После завершения приема всего кадра FEC-контроллер устанавливает бит L := 1 (Last) в слове состояния последнего буферного дескриптора. Также устанавливаются биты статуса принятого кадра и сбрасывается бит Е := 0 (Empty). Затем FEC-контроллер генерирует прерывание (если, конечно, установлен бит разрешения прерывания RFINT в регистре I_EVENT и бит разрешения прерывания RFIEN в регистре I_MASK).
Ошибки, возникающие при работе приемника Ethernet-контроллера, регистрируются в слове состояния буферных дескрипторов и в регистре прерываний I_EVENT и перечислены ниже.
Переполнение приемника (Overrun, OV). Ошибка регистрируется при переполнении внутреннего буфера FIFO приемника. Текущий буфер приема закрывается, и в его слове состояния устанавливается бит ошибки OV := 1.
Кадр, не кратный 8 битам (Non-Octet, NO). Кадр с длиной, не кратной 8 битам, обычно обнаруживается по нарушению CRC контрольной суммы. В слове состояния последнего буферного дескриптора принятого кадра устанавливается бит ошибки N0 := 1.Обратите внимание, что если кадр имеет длину, не кратную 8 битам, но проверка кон трольной суммы не выявила ошибку, то ошибка N0 не регистрируется.
Ошибка проверки контрольной суммы (CRC Error, CR). При обнаружении ошибки при проверке контрольной суммы принятого кадра FEC-контроллер закрывает все буферы данного кадра и устанавливает в слове состояния последнего буферного дескриптора приема бит ошибки CR := 1. При необходимости пользователь может игнорировать результаты проверки контрольной суммы.
Нарушение длины кадра (Frame Length Violation, LG). Если длина принятого кадра превышает 1518 байт, то генерируется прерывание BABR и в слове состояния последнего буферного дескриптора принятого кадра устанавливается бит ошибки LG := 1.
Алгоритмы распознавания адреса. FEC-контроллер в каждом принятом пакете производит анализ поля «адрес получателям фильтрует пакеты по индивидуальному (unicast), групповому (multicast) и широковещательному (broadcast) адресам. Отличие между индивидуальным и групповым адресом заключается в значении бита I/G (individual/ group 0/1) в соответствующей позиции поля «адрес получателя».
Если принят пакет с индивидуальным адресом, то контроллер сравнивает его значение с 48-битным значением, которое пользователь определил в ячейках ADDR_LOW и ADDRJHIGH памяти параметров FEC-контроллера. В регистр ADDRJ-OW пользователь должен предварительно записать младшие 32 бита 48-битного адреса станции, в регистр ADDRJH1GH - старшие 3 байта адреса. Байт 0 (биты 0-7 регистра ADDRJ-OW) передается по сети первым.
Если принят пакет с групповым адресом (бит I/G = 1), то контроллер проверяет, не является ли этот адрес широковещательным. Если это широковещательный адрес, то пакет принимается без всяких условий. Если же это просто групповой адрес, то для его проверки будет использована 64-битная хэш-таблица, содержимое которой заполняется пользователем в ячейках HASH_TABLE_LOW и HASH_TABLE_HIGH памяти параметров.
Если же пользователь установил режим прозрачного приема пакетов (бит PROM = 1 в регистре R_CNTRL), то все пакеты принимаются независимо от их адреса, но в слове состояния буферного дескриптора принятого пакета в бите MISS отмечается, произошло ли совпадение адреса в принятом пакете с адресом станции. Если бит MISS = 1, то пакет принят без совпадения адресов.
При работе с хэш-таблицей 48-битный адрес приемника из пакета преобразуется в код, который определяет адрес некоторой ячейки в хэш-таблице. Для этого 48-битный адрес пропускается через 32-битный CRC-генератор (используется полином Х^32+ Х^26+ + Х^23+ Х^22+ Х^16+ Х^12+ Х^11+ +Х^10+ Х^8+ Х^7+ Х^5+ Х^4+ Х^2+ Х+1). 31-й бит результата определяет выбор ячейки таблицы HASH_TABLE_LOW (бит 31 = 0) или HASH_TABLE_HIGH (бит 31 = 1). Биты с 30-го по 26-й определяют номер бита внутри выбранной ячейки. Если этот бит равен 1, то кадр принимается. Если бит равен 0 - игнорируется. Бит О HASH_TABLE_LOW содержит бит индекса 31, а бит 31 регистра HASH_TABLE_LOW соответствует индексному биту 0.
Настройка SDMA-каналов. В контроллере МРС80Т при доступе к внутренним источникам реализованы два уровня арбитража среди коммуникационных модулей. Первый уровень - это доступ к SDMA-каналам, а второй - доступ к PowerPC-ядру. При одновременном доступе к SDMA-каналам от СРМ-модуля и модуля 100BaseT, первым получит доступ коммуникационный СРМ-процессор и все его коммуникационные каналы (SCC,
SMC и др.). Далее, при доступе от SDMA-каналов к ядру, уже не рассматривается отдельно, кто запрашивает доступ: СРМ или модуль 100BaseT, и приоритет доступа SDMA к шине PowerPC определяется битами RAID и FAID в регистре SDCR (табл. 5.83). Все SDMA-каналы имеют одно значение ID приоритета, которое устанавливается пользователем в регистре конфигурации SDMA-канала (SDCR, рис. 5.135) и которое позволяет SDMA-каналам соперничать за право передачи по внутренней шине данных с другими источниками внутренних и внешних запросов на арбитраж.
Биты FRZ определяют реакцию SDMA-канапов на выставление сигналов контроля: 00 - SDMA-канал игнорирует FREEZE-сигнал, 10 - SDMA-канал сбрасывает сигнал BR и останавливает (замораживает) передачу, пока выставлен сигнал FREEZE или пока не произойдет сброс системы.
Биты RAID устанавливают уровень приоритета запросов SDMA-каналов по доступу к внутренней шине среди других внутренних источников запросов. Арбитраж запросов от внутренних источников выполняет RISC-контроллер. Обычно устанавливается значение «5» (код 01).
Биты FAID определяют значение ID приоритета арбитража для FEC-контроллера. Обычно устанавливается значение «0».
Программируя биты FAM (FEC Aggressive Mode), пользователь может устанавливать для FEC-контроллера наивысший приоритет доступа к внутренней шине. Если бит FAM = 1, то агрессивный режим доступа разрешен, и биты FAID и RAID должны быть равны нулю (наивысший приоритет). Если же бит FAM = 0, то агрессивный режим выключен и приоритет доступа определяется битами FAID.
В регистре FUN_CODE (рис. 5.136) содержится информация, которая используется при обменах между системным DMA-контроллером и SDMA-контроллером коммуникационных каналов. В битах FC1-FC3 хранятся функциональные коды, которые используются при обменах по системной шине во всех контроллерах «Motorola» и которые будут выдаваться при обмене на одноименные контакты.
В битах DATA_BO[0-1] определяется порядок передачи байт (byte-ordering), который будет использовать SDMA-интерфейс при DMA-обмене (00 - резервировано; 01 - PowerPC Little-endian byte-ordering (64-разрядное слово передается побайтно, начиная с адреса байта 0b111 и до адреса 0b000); 1X - Big-endian byte-ordering (64-разрядное слово передается частями по 16 бит, начиная с ячейки с адресом 0b00 и до 0b 11)).
В битах DESC_BO[0-1] определяется порядок передачи байт (byte-ordering), который будет использовать SDMA-интерфейс при DMA-обмене для открытия и закрытия буферных дескрипторов (00 - резервировано; 01 - PowerPC Little-endian, 1X - Big-endian).
Настройка режимов работы МП-интерфейса FEC-контроллера. Для взаимодействия с внешним PHY-устройством, которое совместимо с MΙΙ-интерфейсом, используются специальные регистры MII_DATA и MII_SPEED. Запись информации в регистр MII_DATA вызывает передачу кадра управления от одного устройства к другому, но только если в регистр MII_SPEED занесено число, отличное от нуля. Логика управления начинает передавать преамбулу, а затем сразу же содержимое регистра MII_DATA при выдаче данных во внешнее устройство и принимать данные в регистр при чтении данных. Поэтому рекомендуется записывать данные в регистр MII_DATA при MII_SPEED = 0.
В ходе обмена данными регистр MII_DATA представляет собой последовательный сдвиговый регистр, поэтому чтение его содержимого до завершения процесса обмена не рекомендуется. При завершении передачи или приема данных будет выработано прерывание MII_DATAIO_COMPL. Если во время обмена записать в регистр MII_DATA новое число, то его содержимое изменится, и станут возможными сбои в алгоритмах работы PHY-устройств.
При выдаче данных из регистра MII_DATA (рис. 5.137) в сеть в битах MII_DATAIO_STATE в регистре MII_STATUS отображается текущее состояние процесса обмена кадрами управления.
Содержимое регистра данных MII_DATA представляет собой кадр управления МП-интерфейса. В битах ST (Start of Frame Delimiter) указывается начальный ограничитель кадра управления (для корректного кадра указывается формат заполнителя ST := 01). В битах OP (Operation Code) указывается направление передачи данных (ОР = 10 чтение, ОР = 01 запись).Биты РА содержат адрес внешнего PHY-устройства, с которым производится обмен данными.
Контроллер МРС860Т может поддерживать до 32 внешних подключенных PHY-устройств. Биты RA определяют один из 32 регистров внутри PHY-устройства, с содержимым которого будут производиться действия. Биты ТА (Turn Around) задают режим инвертирования информации, для нормальной работы требуется записать в эти биты ТА := 10. Поле DATA содержит сами данные, которые необходимо записать или прочитать в/из указанного регистра. Все рекомендованные значения полей ST, ОР и ТА соответствуют требованиям стандарта 802.3.
Регистр MII_SPEED (рис. 5.138) используется для контроля тактовой частоты, которая поступает на вывод MDC (МИ Clock). Появление тактовой частоты на этом выводе позволяет начать передачу/прием преамбулы и остального кадра данных.
Стандарт МИ позволяет «опускать» передачу преамбулы, если PHY-устройство этого не требует. Если установлен бит DIS_PREAMBLE = 1, то при обмене будет выдаваться преамбула из 32 «единиц». Если бит равен нулю, то преамбула не выдается.
Содержимое поля MII_SPEED определяет частоту тактового сигнала на контакте MDC. MDC-частота вычисляется как [(системная 4acTOTa)/(MII_SPEEDx2)]. Если в поле MII_SPEED = 0, то на контакте MDC будет «логический нуль». Программируемая частота должна быть не более 2,5 МГц, как определено Mil-спецификацией IEEE.
Формат буферного дескриптора FEC-контроллера. Для обеспечения более гибкого управления буферы данных FEC-контроллера и связанные с ними буферные дескрипторы расположены во внешней памяти. Буферные дескрипторы FEC-контроллера так же, как и буферные дескрипторы других коммуникационных каналов, организованы в таблицу и имеют аналогичный формат, который состоит из четырех слов. Последний дескриптор в таблице имеет в слове состояния установленный бит W = 1 (Wrap).
Готовность буфера передачи и приема к обмену контролируется по состоянию бита готовности R = 1 (Ready) и бита незанятости Е = 1 (Empty) в слове состояния дескриптора. Дополнительно программное обеспечение устанавливает биты X_DES_ACTIVE и R_DES_ACTIVE в одноименных регистрах, чтобы уведомить FEC-контроллер, что данные для передачи в буферах подготовлены или буферы для приема освобождены. После окончания работы с буфером аппаратное обеспечение сбрасывает биты R и Е, чтобы пользователь мог начать обработку их содержимого.
Буферный дескриптор приема. Формат слова состояния дескриптора приема приведен на рис. 5.139.
Бит пустого буфера Е (Empty) устанавливается в «1» пользователем после того, как он обработал данные из этого буфера, и буфер можно использовать для приема новых данных. Бит Е := 0 записывает слово состояния FEC-контроллера после заполнения буфера данными из сети.
Биты RO1 и RO2 (Receive Software Ownership) предназначены только для программного обеспечения пользователя и не взаимодействуют с аппаратурой.
Бит последнего буфера W (Wrap), равный единице, сообщает FEC-контроллеру, что текущий буфер - это последний буфер в таблице и после его обработки необходимо переходить для работы к первому буферу BD в таблице буферных дескрипторов
Бит последнего буфера L (Last) используется в протоколах, где кадр данных может занимать несколько буферов, для указания последнего буфера кадра (если бит L = 1). Указание последнего буфера в кадре обычно применяется для организации прерываний в конце обработки всего кадра данных.
Бит М (Miss) устанавливается в «1» FEC-контроллером, если кадр данных был принят без проверки совпадения адреса (режим promiscuous). Если бит М = 0, то кадр принят, так как адресован именно этой станции.
Бит ВС устанавливается в «1», если принятый кадр данных имеет широковещательный адрес получателя (broadcast).
Бит МС устанавливается в «1», если принятый кадр данных имеет групповой (но не широковещательный) адрес получателя (multicast).
Если бит LG (Lenght Violation) равен «1», то принят кадр данных, длина которого превышает максимально допустимую, запрограммированную для FEC-контроллера длину принимаемых кадров. При этом в буфер будет записана только часть кадра, размер которой не превышает 2047 байт.
Бит TR устанавливается, если длина принятого кадра больше 2047 байт, и кадр был обрезан при приеме.
Если бит NO (Nonoctet Aligned Frame) равен «1», то принят кадр данных, длина которого не кратна 8 битам, и обнаружена ошибка проверки контрольной суммы CRC.
Если бит SH (Short Frame) равен «1», то принят кадр данных, длина которого меньше минимально допустимой для FEC-контроллера длины принимаемых кадров.
Бит CR (CRC Error) устанавливается, если обнаружена ошибка при проверке контрольной суммы, но длина кадра кратна 8 битам.
Бит переполнения буфера OV (Overrun), равный «1», регистрирует ошибку, связанную с переполнением буфера FIFO приемника. Если установлен бит OV = 1, другие ошибки приема не регистрируются.
Буферный дескриптор передачи. Формат слова состояния дескриптора передачи приведен на рис. 5.140.
Бит заполненного буфера R (Ready) устанавливается пользователем после того, как он закончит подготовку в буфере данных для передачи по сети. Этот бит постоянно анализируется FEC-контроллером для начала передачи новых данных и сбрасывается (R := 0) после передачи всех данных из этого буфера.
Биты ТО1 и ТО2 (Transmit Software Ownership) предназначены только для программного обеспечения пользователя и не взаимодействуют с аппаратурой.
Бит последнего буфера W (Wrap), равный «1», сообщает FEC-контроллеру, что текущий буфер -это последний буфер в таблице и после его обработки необходимо переходить для работы к первому буферу BD в таблице буферных дескрипторов.
Бит последнего буфера L (Last) используется в протоколах, где кадр данных может занимать несколько буферов, для указания последнего буфера кадра (если бит L = 1).
Если в слове состояния последнего буфера кадра (бит L = 1) установлен бит ТС=1 (Тх CRC), то при передаче вычисляется контрольная сумма содержимого кадра и она передается после последнего байта кадра. Если бит ТС = 0, то передача заканчивается сразу после передачи последнего байта кадра.
Если в слове состояния последнего буфера кадра (бит L = 1) установлен бит DEF = 1 (Defer Indication), то контроллер должен задержаться перед передачей кадра. Этот бит не устанавливается, если при передаче обнаружена коллизия.
Если в слове состояния последнего буфера кадра (бит L = 1) установлен бит НВ = 1 (Heartbeat Error), то при процедуре тестирования аппаратура не выставила активный сигнал на линию «коллизия», т. е. произошел сбой в работе аппаратуры. Этот бит устанавливается, только если в регистре состояния X_CNTRL установлен бит НВС = 1.
Если в слове состояния последнего буфера кадра (бит L = 1) установлен бит LC = 1 (Lata Collision), то обнаружена ошибка «поздняя коллизия», которая регистрируется после корректной передачи более чем 56 байт кадра (размер окна коллизий), и контроллер прервал передачу.
Если в слове состояния последнего буфера кадра (бит L = 1) установлен бит RL = 1 (Retransmission Limit), то контроллер превысил установленный предел числа повторных попыток выхода в сеть из-за коллизий. Текущее число повторных попыток выхода в сеть регистрируется в битах RC (Retry Count).
Если в слове состояния последнего буфера кадра (бит L = 1) установлен бит незаполнения буфера UN (Underrun), равный «1», то регистрируется ошибка, которая возникает при передаче кадра данных, занимающего несколько буферов, когда передатчик передал всю информацию из буфера FIFO, а новые данные для передачи еще не поступили по каналамSDMA. Передача кадра останавливается, и к нему добавляется некорректная контрольная сумма.
Если в слове состояния последнего буфера кадра (бит L = 1) установлен бит CSL (Carrier Sence Lost), то при передаче кадра была обнаружена потеря несущей частоты, т. е. нарушена кодировка данных (например, манчестерское кодирование), но коллизия не обнаружена.