MAC Ethernet — контроллер доступа к среде
Сеть Ethernet на плате делится между двумя микросхемами или блоками: PHY отвечает за сигнал в кабеле, а MAC — за кадры. Именно MAC добавляет к данным преамбулу и контрольную сумму и решает, какие кадры из сети пропустить в память.
Обновлено Редакция GAW
Содержание
MAC Ethernet (media access control, управление доступом к среде) — блок, который формирует и принимает кадры Ethernet. При передаче он добавляет к данным преамбулу, разделитель начала кадра (SFD) и контрольную сумму, при приёме — проверяет её и решает по адресу назначения, нужен ли кадр. Сигнал на линии MAC не формирует: это делает PHY, с которым MAC соединён интерфейсом MII или RMII. MAC встроен во многие микроконтроллеры — STM32F407/F417, F42x/F43x, многие F7 и H7, ESP32 (но не, например, STM32F401 и F411), — и в SPI-контроллеры W5500 и ENC28J60; варианты разобраны в статье «Ethernet для микроконтроллера».
Что делает MAC
По справочному руководству STM32F4 (RM0090, разд. 33.2.1 и 33.5.2):
- Кадр. Перед данными — 7 байт преамбулы
10101010и байт SFD10101011, в конце — 32-битная CRC, которую MAC вычисляет и проверяет сам. Короткие кадры MAC дополняет до допустимой длины. - Фильтрация. До четырёх точных фильтров 48-битного адреса назначения и трёх — адреса источника, 64-битный хеш-фильтр для групповых адресов и режим без фильтрации для мониторинга сети.
- Доступ к среде. В полудуплексе — CSMA/CD: при коллизии MAC посылает 32-битный сигнал jam и повторяет передачу; окно коллизий — 512 битовых интервалов. В дуплексе — управление потоком кадрами паузы IEEE 802.3x.
- Управление PHY. Отдельный интерфейс MDIO для чтения и записи регистров PHY.
- Помощь стеку. Проверка контрольных сумм IPv4, TCP, UDP и ICMP и отметки времени IEEE 1588.
MAC и память
Между MAC и памятью у STM32F4 стоят FIFO по 2 Кбайт на приём и передачу, а кадры переносит собственный DMA по цепочке дескрипторов. У ESP32 — FIFO по 512 32-битных слов и тоже свой DMA (ESP32 Datasheet, разд. 4.8.13). Стек TCP/IP поверх такого MAC программный. В W5500, наоборот, за MAC стоит аппаратный стек TCP/IP, а сырые кадры доступны только в режиме MACRAW сокета 0.
Не путать
С MAC-адресом: это 48-битный адрес, который MAC вставляет в кадр и по которому фильтрует входящие. И с уровнем MAC других сетей, например радиопротоколов: название то же — управление доступом к среде, — но это часть другого стандарта со своими кадрами и правилами.
Частые вопросы
Во всех ли микроконтроллерах есть MAC Ethernet?
Нет. MAC есть, например, у STM32F407 (RM0090, гл. 33) и у ESP32 (даташит, разд. 4.8.13), а у многих микроконтроллеров его нет. Перечень серий STM32 с Ethernet — в статье «Ethernet для микроконтроллера». Микроконтроллеру без MAC сеть дают через SPI-контроллер вроде W5500 или ENC28J60, где MAC и PHY уже внутри.
MAC и MAC-адрес — одно и то же?
Нет. MAC — это блок, который принимает и передаёт кадры. MAC-адрес — 48-битный адрес устройства в сети, который этот блок вставляет в кадр как адрес источника и по которому фильтрует входящие кадры: у STM32F4 до четырёх точных фильтров адреса назначения и хеш-фильтр (RM0090, разд. 33.2.1).
Сколько процессорного времени занимает MAC?
Сам MAC — почти нисколько: кадры между ним и памятью переносит собственный DMA контроллера Ethernet по цепочке дескрипторов. Процессор работает со стеком TCP/IP — обычно lwIP — и с приложением.
Источники
- STMicroelectronics. RM0090 Reference manual: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439, Rev 21 — разд. 33.2.1 — возможности MAC: 10/100 Мбит/с с внешним PHY по MII/RMII, полудуплекс с CSMA/CD и дуплекс с управлением потоком IEEE 802.3x, вставка преамбулы и SFD, автоматическая генерация CRC и дополнения, до четырёх 48-битных фильтров адреса назначения и трёх — источника, хеш-фильтр 64 бита, режим без фильтрации, интерфейс MDIO, проверка контрольных сумм IPv4/TCP/UDP/ICMP, отметки времени IEEE 1588-2008; разд. 33.5 — преамбула 7 байт 0b10101010 и SFD 0b10101011, окно коллизий 512 битовых интервалов, сигнал jam 32 бита в полудуплексе, полином CRC-32; FIFO по 2 Кбайт и DMA
- Espressif. ESP32 Series Datasheet, Version 5.3 — разд. 4.8.13 — Ethernet MAC: 10 и 100 Мбит/с, MII (17 сигналов) и RMII (9 сигналов), отдельный DMA, FIFO по 512 32-битных слов, IEEE 1588
- WIZnet. W5500 Datasheet, Version 1.1.0 — гл. 1 — MAC и PHY 10/100 и аппаратный стек TCP/IP в одной микросхеме; режим MACRAW — сырые кадры только в сокете 0
Нашли ошибку?
Смотрите также
- Ethernet для микроконтроллераW5500, ENC28J60, MAC + PHY по RMII, LAN8720, DP83848, трансформатор и разводка
- PHY EthernetМикросхема физического уровня между MAC и кабелем
- MII и RMIIПараллельные интерфейсы между MAC и PHY Ethernet
- MDIO и MDCДвухпроводная шина регистров PHY Ethernet
- CRCЦиклический избыточный код для обнаружения ошибок
- DMAПрямой доступ к памяти без участия ядра