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

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

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

байт.
По окончании приема кадра, когда сигнал несущей станет пассивным,
подсчитывается контрольная сумма принятого кадра и кадр сохраняется в
буфере.
При приеме кадра Ethernet-контроллер постоянно проверяет длину кадра на
максимальное и минимальное значение. Максимальная длина кадра данных (или
число байт между начальным ограничителем и концом кадра) задается в
ячейке MFLR памяти параметров и по стандарту 802,3 она равна 1518 байт.
Если получен кадр, длина которого превышает значение MFLR, то излишек
кадра отбрасывается, а 1518 байт кадра записываются в буфер. В слове
состояния последнего буфера устанавливается бит LG := 1 (LonG). При этом
длина кадра, записанная в ячейку длины последнего буферного дескриптора,
является длиной реально принятого кадра. Специальный вычитающий счетчик
629
КОММУНИКАЦИОННЫЕ МИКРОКОНТРОЛЛЕРЫ И СИСТЕМЫ НА ИХ ОСНОВЕ
в ячейке 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 суммы, то регистрируется ошибка принятия
невыравненного кадра, устанавливается бит ошибки N0 := 1 в слове
состояния BD и увеличивается счетчик принятых, некратных 8, кадров в
ячейке ALEC памяти параметров. Если же ошибка проверки CRC не
регистрируется, то продолжается обычный прием кадров.
Если при приеме кадра данных контроллер обнаруживает ошибку проверки CRC
контрольной суммы, то текущий буфер закрывается, устанавливается бит
ошибки CRC := 1
630
ПОДДЕРЖКА ПРОТОКОЛОВ В КОММУНИКАЦИОННЫХ КОНТРОЛЛЕРАХ
в его слове состояния, устанавливается бит RXF-прерывания в регистре
Предыдущая << 1 .. 353 354 355 356 357 358 < 359 > 360 361 362 363 364 365 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed