Ethernet - пример стандартной технологии коммутации пакетов, страница 5

Примечание. Все переменные в таблице, кроме ячеек RET_cnt, MAXD, DMA_ cnt, MAX_b, TBUF0.data0. TBUF0.data1, TBUF0.rba0, TBUF0.crc0, TBUF0.bcnt, RBFD_ptr, TBFD_ptr, TBLD_ptr, TBUF1.data0. TBUF1.data1, TBUF1.rba0, TBUF1I.crc0, TBUF1.bcnt, TX_LEN и BOFF_CNT, инициализи­руются пользователем до начала работы с Ethernet-контроллером.

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

Для контроля правильности передачи данных в состав кадра данных введено поле контрольной суммы, в которое записывается 32-разрядная контрольная сумма кадра данных. Для настройки режима работы с 32-битной CCITT-CRC контрольной суммой с образующим полиномом

X^32+X^26+X^23+X^22+X^16+ X^12+X^11+X^10+X^8+X^7+X^5+ X^4+X^2+X^1+1

в биты CRC регистра режима PSMR требуется записать код 10. В ячейке C_MASK пользователь перед началом работы с Ethernet-контроллером дол­жен задать константу образующего полинома 0xDEBB20E3, а в ячейке C_PRES - начальное значение счетчика контрольной суммы 0xFFFFFFFF.

3.5.1.2. Передача данных.

После включения передатчика канала в работу, Ethernet-контроллер начина­ет периодически раз в 128 тактов опрашивать готовность первого буфера в таблице буферов для передачи TxBD. Если пользователь подготовил данные для передачи и не желает ждать 128 тактов, то он может установить бит TOD:=1 в регистре TODR, чтобы вызвать принудительное начало опроса буферов для передачи данных.

Если данные для передачи подготовлены, то контроллер начинает загружать кадр по SDMA-каналам из буфера данных в буфер FIFO, выставляет сигнал TENA к микросхеме EEST и начинает передавать преамбулу, начальный ограничитель и далее сам кадр данных. При передаче bthernet-контроллер пе­редает LSB-бит первым. Перед началом передачи контроллер проверяет на­личие сигнала несущей частоты в канале; после того как в канале будет обнаружен пассивный сигнал несущей, контроллер проверяет, чтобы этот сиг­нал был пассивным в течение 6,4 мкс. Далее передача будет начата после ожидания 3,2 мкс. Таким образом, сигнал несущей должен быть пассивным в течение 9,6 мкс, перед началом передачи кадра. Поэтому минимальный межкадровый интервал (interpacket gap) для передачи кадров back-to-back установлен равным 9,6 мкс, и при возникновении коллизии повторная пе­редача начинается через 9,6 мкс после того, как сигнал несущей в канале станет пассивным, при условии, что он оставался пассивным в течение 6,4 мкс.

Если в слове состояния буфера установлен, бит PAD=1, то контроллер при передаче добавляет специальные символы-заполнители PAD, формат кото­рых задан в ячейке PADS памяти параметров, в поле данных короткого кад­ра, доведя длину кадра до значения, указанного в ячейке MINFLR.

После окончания передачи кадра данных, когда в слове состояния послед­него буфера кадра обнаружен, бит L=l (Last) и установлен, бит ТС=1, кон­троллер начинает передавать контрольную сумму кадра и по окончании передачи сбрасывает сигнал TENA в пассивное состояние. Сброс этого сиг­нала заставляет микросхему EEST начать передачу специального некор­ректного символа, закодированного манчестерским кодом, уведомляющего о конце Ethernet-кадра.