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

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.

  1. Тактовая частота приемника RCLK и передатчика TCLK поступает на QUICC через внешние контакты CLK1, CLK2, CLK3, CLK4 от выводов RCLK и TCLK микросхемы EEST.

  2. Для передачи данных вывод TXD контроллера соединяется со входом ТХ передатчи­- ка, а для приема данных вход RXD контроллера соединен с выходом RX передатчика.

  3. При работе с Ethernet-протоколом вывод контроллера становится выводом сиг-­ нала разрешения передачи TENA (Transmit Enable), который поступает на вход ТЕМА пе­- редатчика. Активное состояние сигнала - «1».

  4. При работе с Ethernet-протоколом вход контроллера становится входом сигнала разрешения приема RENA (Receive Enable), который поступает с выхода RENA передат­- чика. Активное состояние сигнала - «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).

Формат Ethernet-кадра. Кадр начинается с 7-байтного поля преамбулы, которое со­стоит из повторяющихся «1» и «О» и которое необходимо для подстройки генераторов станции приемника на частоту передатчика. Формат поля преамбулы фиксирован и из­вестен всем станциям в сети, поэтому данное поле может быть использовано для регис­трации начала нового кадра данных и обнаружения состояния коллизии, которое возни­кает, когда две или более станций пытаются одновременно выйти в сеть. Контроллер обеспечивает автоматическую вставку преамбулы при передаче кадра и ее удаление при приеме кадра. Далее следует поле «начального ограничителя», которое извещает приемник о начале нового кадра данных. Формат кадра представлен на рис. 5.120.

Два 48-битных поля адресов предназначкны для указания адреса станции отправителя и адреса станции получателя информации.Адрес станции отправителя(48 бит) пользователь может задать в ячейках памяти параметров PADDR1_H,PADDR1_M,PADDR1_L(табл.5.78).Двухбайтное поле «тип/длина» предназначено для задания длины поля данных или,в некоторых версиях протокола Ethernet,для задания типа кадра.

13

Два 48-битных поля адресов предназначены для указания адреса станции отправи­теля и адреса станции получателя информации. Адрес станции отправителя (48 бит) пользователь может задать в ячейках памяти параметров PADDR1_H, PADDR1_M, PADDR1J. (табл. 5.78). Двухбайтное поле «тип/длина» предназначено для задания дли­ны поля данных или, в некоторых версиях протокола Ethernet, для задания типа кадра.

Поле данных может иметь размер от 46 до 1500 байт. В ячейке MINFLR пользователь должен задать минимальный размер кадра (>64 байт), а в ячейке MFLR - максимальный размер кадра (<1518 байт). Если длина кадра меньше установленного минимума, то при передаче поле данных кадра будет дополнено специальными символами-заполнителя­ми, формат которых указывается в ячейке PADS памяти параметров, но только если в слове состояния буферного дескриптора установлен бит PAD = 1. Если же бит PAD = О, то символы PAD не добавляются к короткому кадру.

Для контроля правильности передачи данных в состав кадра данных введено поле контрольной суммы, в которое записывается 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 (Individual/Group) в поле ад­реса приемника. Если это индивидуальный адрес (бит I/G = 0), то, проверяя физический адрес, контроллер сравнивает его с единственным адресом, указанным в 48-битной ячейке PADDR1 памяти параметров, если бит IAM = 0 в регистре PSMR. Если же бит IAM = 1, то специальная хэш-таблица индивидуальных адресов в ячейках IADDR1-IADDR4 исполь­зуется для сравнения и распознавания группового адреса.

Если это групповой адрес (бит 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) после за­вершения корректной передачи кадра аппаратура дает сигнал о коллизии, которой на

самом деле в сети нет, и смотрит, как схемы контроллера отработают процедуру регист­рации и обработки этой ситуации. Если коллизия не обнаружена (на контакте MII_COL не появился активный сигнал), то будет установлен бит НВ в регистре статуса и выработано соответствующее прерывание.

С помощью программирования бита 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), то при передаче кадра была обнаружена потеря несущей частоты, т. е. нарушена кодировка данных (например, манчестерское кодирование), но коллизия не обнаружена.