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

Значения задержек при приеме кадра

Бит NIB

Задержка, бит

Бит NIB

Задержка, бит

000

13

100

21

001

14

101

22

010

15

110

23

011

16

111

24

628

Поддержка протоколов в коммуникационных контроллерах

При приеме нового кадра вначале проверяется бит 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.

Если сравнение адреса прошло успешно, то начинается прием кадра, независимо от значения сигнала на контакте RRJCT (Reject). Если это групповой, но не широковеща­тельный адрес, то производится сравнение адреса с использованием хэш-таблицы груп­повых адресов в ячейках GADDR1-GADDR4.

Если проверка адреса прошла неудачно и в регистре режима PSMR установлен бит PRO = 0, т. е. проверка адреса должна была выполняться для всех кадров, то кадр отбра­сывается. Если же бит PRO = 1, то кадры принимаются без проверки адреса, если сигнал на контакте RRJCT пассивный, и отбрасываются, если сигнал RRJCT активный. При этом в слове состояния последнего буфера приема кадра устанавливается бит признака М (Miss). Если бит М = 1, то кадр был принят без контроля адреса, а если бит М = 0, то кадр был принят после проверки совпадения поля адреса получателя и адреса станции.

Если внешняя САМ-память используется при сравнении адресов, то следует устано­вить режим без проверки совпадения адресов (promiscuous), установив бит PRO = 1, и тогда кадр может быть отброшен, если от САМ-памяти будет выставлен активный сигнал rrjct во время приема кадра. Если САМ-память используется для хранения адресов, которые должны быть отброшены, а не приняты, то сигнал на контакте rrjct для САМ-памяти должен быть инвертирован.

Если сравнение адресов закончилось успешно, то контроллер проверяет бит незаня­тости Е в слове состояния следующего буфера в таблице RxBD, и если буфер свободен (бит Е = 1), то прием данных производится в этот буфер. Если при приеме кадра обнару­жена коллизия, то текущий буфер может быть использован для приема нового кадра. Когда буфер заполнен, то контроллер сбрасывает бит Е := 0 и, если в слове состояния установлен бит прерывания 1 = 1, генерирует запрос на прерывание.

Если длина принимаемого кадра превышает размер буфера приема, то контроллер проверяет незанятость следующего буфера в таблице RxBD и, если буфер не занят, про­должает прием кадра в новый буфер. Максимальная длина приемного буфера задается пользователем в ячейке MRBLR протокол-независимой памяти параметров SCC-контрол-лера. При работе с Ethernet-протоколом рекомендуется в эту ячейку записывать значе­ние не меньше 64 байт.

По окончании приема кадра, когда сигнал несущей станет пассивным, подсчитывает­ся контрольная сумма принятого кадра и кадр сохраняется в буфере.

При приеме кадра 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 суммы, то регистрируется ошибка принятия невыравненного кадра, устанавливает­ся бит ошибки NO := 1 в слове состояния BD и увеличивается счетчик принятых, некрат­ных 8, кадров в ячейке ALEC памяти параметров. Если же ошибка проверки CRC не регистрируется, то продолжается обычный прием кадров.

Если при приеме кадра данных контроллер обнаруживает ошибку проверки CRC конт­рольной суммы, то текущий буфер закрывается, устанавливается бит ошибки CRC := 1

630

ПОДДЕРЖКА ПРОТОКОЛОВ В КОММУНИКАЦИОННЫХ КОНТРОЛЛЕРАХ

в его слове состояния, устанавливается бит RXF-прерывания в регистре событий и увели­чивается счетчик CRC ошибок в ячейке CRCEC памяти параметров. После приема кадра с ошибкой проверки CRC суммы приемник переходит в режим поиска нового кадра.

Пользователь может также управлять процессом приема кадра при помощи команд ENTER HUNT MODE и INIT RX PARAMETERS. Команда CLOSE RxBD при работе с Ethernet-контроллером не применяется.

Проверка адресов с помощью САМ-памяти. САМ-память (контекстно-адресуемая или ассоциативная память) предназначена для сравнения адресов станции и адреса полу­чателя в пакете. Ethernet-контроллер может подключаться к внешней контекстно-адресу­емой САМ-памяти двумя способами: через последовательный интерфейс и/или через системную шину. Для включения того или иного режима пользователь должен просто разрешить работу с определенными внешними контактами и аппаратно подключить вне­шние схемы блока памяти. Если при работе пользователь отключит выбранные контакты контроллера, то текущи^ кадр может быть потерян.

При работе с внешней САМ-памятью можно также использовать внутреннюю логику выработки сигналов CS блока системной интеграции.

При работе с последовательным интерфейсом после распознавания начального ог­ раничителя контроллер выставляет сигнал начала приема rstrt = 0 (receive start). Этот сигнал выставляется только на один битовый интервал во время приема второго бита адреса назначения.

Логические схемы САМ-памяти используют комбинацию сигналов RSTRT , RXD, RCLK для записи в память полей кадра и для генерации сигнала «записи» к микросхеме САМ-памяти для начала сравнения адреса. Сигнал RENA от микросхемы EEST может быть использован для прекращения сравнения адресов, если при приеме кадра обнаружено состояние коллизии.

После окончания сравнения адреса кадра и, если текущий кадр должен быть отбро-шен, логика САМ-памяти вырабатывает активный сигнал «отмена приема» RRJC = О (receive reject). Получив этот сигнал, контроллер прекращает прием кадра в системную память, и текущий буфер будет подготовлен для приема нового кадра данных. Поэтому сигнал rrjc должен быть выставлен до момента завершения приема кадра. Если срав­нение адресов прошло успешно, то сигнал RRJC не выставляется.

Дополнительно логика САМ-памяти может выставлять дополнительную служебную информацию на линии РВ23-РВ16 параллельного порта В. Этот tag-байт выставляется на линии РВ23-РВ16 не раньше, чем закончится прием кадра без коллизий, и будет сбро­шен сигнал RENA. Если в регистре режима PSMR Ethernet-контроллера установлен бит SIP = 1, то этот дополнительный байт данных (tag-байт) контроллер сохранит в после­днем буфере памяти принятого кадра данных. Tag-байт удерживается на линиях порта В, пока коммуникационный контроллер сигналом на линиях SDACK2 -SDACK1 не подтвер­дит, что tag-байт записан в память. Длина tag-байта не включается в общую длину приня­того кадра, которую контроллер записывает в поле длины последнего буферного деск­риптора RxBD.

В режиме параллельного интерфейса во время записи кадра данных в память, т. е. каждый цикл шины данных коммуникационный контроллер выставляет сигналы подтверж­дения SDMA-доступа SDACK2 -SDACK1 . Отметим, что эти сигналы не используются при работе контроллера канала с другими коммуникационными протоколами. САМ-логика ис­пользует эти сигналы для разрешения записи данных в САМ-память одновременно с запи­сью их в системную память контроллера. Преимущество этого способа состоит в том, что запись в САМ-память данных производится по системной шине в параллельном виде.

Сигналы SDACK2 -SDACK1 выставляются в течение всех циклов шины при записи кадра данных в буфер памяти. Одна комбинация сигналов SDACK2 -SDACK1 определя-

631