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

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

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

после появления активного сигнала RX_DV приемник первые 16 битовых
интервалов игнорирует поступающие данные. Следующие 16 битовых интервалов
приемник анализирует принимаемые данные на 1/0, подстраиваясь под частоту
передаваемого сигнала. Поскольку формат преамбулы и начального
ограничителя кадра состоит из повторяющихся комбинаций "1" и "0", то при
появлении комбинаций "11" или "00" на участке от 17-го до 21-го битовых
интервалов будет зафиксирована ошибка, и кадр будет игнорирован. После
21-го битового интервала приемник контролирует наличие в канале связи
комбинации "11" (конец приема поля начального ограничителя РА/SFD и
начало полей кадра). Если после 21-го битового интервала до приема
комбинации "11" обнаружена комбинация "00", то кадр будет отброшен.
При работе в режиме МИ приемник побайтно контролирует совпадение формата
преамбулы и начального ограничителя. Но если в байте обнаруживается
комбинация "00", то кадр будет отброшен.
После завершения приема первых 8 байт преамбулы и начального ограничителя
следующие принятые данные начинают записываться в буфер FIFO и приемник
начинает процедуру распознавания адреса принятого кадра. Если при приеме
произошла коллизия, то проверка адреса прекращается и принятые данные
отбрасываются. Если успешно принято 64 байта кадра (64 байта - это размер
окна коллизий для сетей Ethernet) и адрес получателя в пакете совпал с
адресом станции приемника, то FEC-контроллер начинает перезаписывать
принятые кадры в буферы во внешней памяти, адреса которых указаны в
дескрипторах RxBD. Таким образом, контроллер автоматически отслеживает и
обрабатывает все коллизии в сети без вмешательства пользователя
(единственное, что следует отслеживать пользователю, - это поздние
коллизии).
Стартовый адрес таблицы буферных дескрипторов приема, которые расположены
во внешней памяти, должен быть предварительно записан пользователем в
регистре R_DES_START памяти параметров (см. табл. 5.82). Младшие 31-й и
30-й биты регистра должны быть равны нулю, так как адрес должен быть
кратен четырем.
После заполнения очередного буфера данных в памяти FEC-контроллер
сбрасывает бит Е := 0 (Empty) и генерирует RXB-прерывание (если, конечно,
установлен бит разрешения прерывания RBIEN в регистре l_MASK). Если длина
принимаемого кадра превышает длину буфера данных, то контроллер выбирает
следующий буфер из таблицы дескрипторов, и если он пустой, то продолжает
записывать в него последующие данные.
Максимальная длина буфера приема указывается пользователем в регистре
R_BUFF_SIZE (рис. 5.134) в памяти параметров FEC-контроллера и должна
быть кратна 16 байтам и не меньше 128 байт (R_BUFF_SIZE = 0x000005F0).
Поскольку максимальная длина кадра не должна превышать 1518 байт, то в
регистре R_BUFF_SIZE используются только биты 21-27. Обычно максимальную
длину буфера приема устанавливают равной максимальной длине кадра.
О 20 21 27 28 31
Резервировано. Все "О".
R BUF SIZE
Резервировано. Все <
Рис. 5.134. Формат регистра R_BUFF_SIZE в контроллере МРС860Т
КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ
При приеме кадра контроллер контролирует длину принятого кадра на
максимальное и минимальное значения. Кадры длиной меньше 64 байт
автоматически отбрасываются. Кадры длиной больше 1518 байт сохраняются
полностью, но генерируется прерывание BABR и устанавливается бит LG := 1
в слове состояния буферного дескриптора последнего буфера кадра (на
практике длинный кадр все-таки усекается, если его длина больше 2047
байт, так как это связано с ограничением разрядности внутренних
контрольных счетчиков). После завершения приема кадра (несущая частота в
канале становится пассивной) производится проверка контрольной суммы
принятого кадра, и она тоже записывается в буфер. Длина реально принятого
кадра также записывается в буфер данных в памяти.
После завершения приема всего кадра FEC-контроллер устанавливает бит L :=
1 (Last) в слове состояния последнего буферного дескриптора. Также
устанавливаются биты статуса принятого кадра и сбрасывается бит Е := 0
(Empty). Затем FEC-контроллер генерирует прерывание (если, конечно,
установлен бит разрешения прерывания RFINT в регистре l_EVENT и бит
разрешения прерывания RFIEN в регистре l_MASK).
Ошибки, возникающие при работе приемника Ethernet-контроллера,
регистрируются в слове состояния буферных дескрипторов и в регистре
прерываний l_EVENT и перечислены ниже.
• Переполнение приемника (Overrun, OV). Ошибка регистрируется при
переполнении внутреннего буфера FIFO приемника. Текущий буфер приема
закрывается, и в его слове состояния устанавливается бит ошибки OV := 1.
• Кадр, не кратный 8 битам (Non-Octet, NO). Кадр с длиной, не кратной 8
битам, обычно обнаруживается по нарушению CRC контрольной суммы. В слове
состояния последнего буферного дескриптора принятого кадра
устанавливается бит ошибки N0 := 1. Обратите внимание, что если кадр
имеет длину, не кратную 8 битам, но проверка контрольной суммы не выявила
Предыдущая << 1 .. 362 363 364 365 366 367 < 368 > 369 370 371 372 373 374 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed