Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 366

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 360 361 362 363 364 365 < 366 > 367 368 369 370 371 372 .. 528 >> Следующая

Минимальный интервал между пакетами по стандарту 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 из внешней памяти системы.
0 6 7 8 31
Все "0". X_DES_ACTIVE Все 0.
Рис. 5.131. Формат регистра X_DES_ACTIVE
640
ПОДДЕРЖКА ПРОТОКОЛОВ В КОММУНИКАЦИОННЫХ КОНТРОЛЛЕРАХ
Стартовый адрес таблицы буферных дескрипторов передачи, которые
расположены во внешней памяти, должен быть предварительно записан
пользователем в регистре X_DES_START памяти параметров. Младшие 31-й и
30-й биты регистра должны быть равны нулю, так как адрес должен быть
кратен четырем.
Если при завершении передачи очередного буфера данных контроллер
обнаружит в слове состояния буферного дескриптора установленный бит L = 1
(Last) и установленный бит ТС = 1 (Тх CRC), то контроллер добавит к
переданному кадру данных поле контрольной суммы FCS (32-битовое поле CRC)
и сбросит сигнал TX_EN в пассивное состояние. После завершения передачи
поля контрольной суммы контроллер заполняет в слове состояния дескриптора
переданного кадра данных биты статуса переданного кадра и сбрасывает бит
R := 0 (Ready). Если переданный буфер был не последним в кадре (бит L =
0), то контроллер сбрасывает только бит R:=0 в слове состояния
переданного буфера.
Если длина передаваемого кадра меньше минимально допустимой длины
Ethemet-кадра (64 байта), то кадр данных дополняется до необходимой длины
специальными символами-заполнителями (padds). Если же длина передаваемого
кадра больше максимально допустимой длины Ethernet-кадра (1518 байт), то
длинный кадр данных будет передан целиком, но будет выработано прерывание
ВАВТ.
При необходимости пользователь, программируя регистр l_MASK, может
определять, нужны ли ему прерывания после передачи отдельных буферов
данных или кадра данных целиком.
Пользователь может вмешиваться в процесс передачи Ethernet-кадров. Если
установить бит GTS := 1 (Graceful Тransmit Stop) в регистре X_CNTRL, то
FEC-контроллер завершит передачу текущего кадра данных (или прервет его
передачу из-за коллизии) и остановится. После остановки передатчика будет
выработано GRA-прерывание и установлен бит GRA := 1 в регистре прерываний
l_EVENT. Передача следующих кадров будет продолжена только после сброса
бита CTS := 0.
Основные ошибки, возникающие при работе передатчика Ethernet-контроллера,
регистрируются в слове состояния буферных дескрипторов и в регистре
прерываний l_EVENT.
• Переполнение передатчика (Transmitter Underrun, UN). При возникновении
этой ошибки FEC-контроллер передает в сеть 32 символа "единицы", которые
создадут ситуацию ошибки при проверке CRC суммы у приемника, и приемник
удалит принятый кадр. Передача текущего кадра прерывается, в слове
состояния всех не переданных буферов устанавливается бит ошибки UN := 1,
Предыдущая << 1 .. 360 361 362 363 364 365 < 366 > 367 368 369 370 371 372 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed