Как реализовать интерфейс ethernet

Обновлено: 07.07.2024

Днем рождения Ethernet считается 22 мая 1973 г. Именно тогда Роберт Меткалф и Дэвид Боггс опубликовали описание экспериментальной сети, построенной ими в Исследовательском центре Xerox. Базировалась она на толстом коаксиальном кабеле и обеспечивала скорость передачи данных 2,94 Мбит/с. Новая технология получила имя Ethernet (эфирная сеть), в честь радиосети Гавайского университета ALOHA, в которой был использован схожий механизм разделения среды передачи (радиоэфира).

К концу 70-х годов под Ethernet была подведена солидная теоретическая база. А в феврале 1980 года фирма Xerox, совместно с DEC и Intel, представила разработку IEEE, которая спустя три года утвердила ее в качестве стандарта IEEE 802.3.

Отличия промышленного Ethernet от обычного:

  • Стандарты на кабели и разъемы, удовлетворяющие специфическим требованиям промышленности: усиленное экранирование и стойкость к агрессивным средам;
  • Специальные стандарты и устройства для связи с подвижными объектами: гибкие кабели, устройства беспроводной связи;
  • Дополнение стека протоколов TCP/IP протоколом RFC1006 обеспечивает регулярную и частую передачу по сети небольших объемов информации, что характерно для обмена данными между промышленными контроллерами;
  • C помощью специальных коммутаторов можно организовать кольцевую топологию, которая при обрыве восстанавливает связь, то есть находит новый путь для передачи данных значительно быстрее, чем применяемый в обычных сетях «алгоритм избыточного дерева»;
  • Частое использование наряду со стеком протоколов TCP/IP специфического стека протоколов ISO Transport Protocol.

Основной причиной нарастающей популярности использования промышленного Ethernet-протокола является его повышенная скорость передачи данных (до 10 Гбит/с) в сравнении с протоколами RS-232 и RS-485, где это значение не превышает 10 Мбит/с. Также благодаря этому протоколу можно соединить множество устройств в одну сеть (возможность передачи данных по схеме peer-to-peer), что исключается в случае протоколов RS-232 и RS-485. Благодаря этим двум преимуществам можно получить значительное улучшение в производительности всей системы. Вдобавок, на рынке существует множество недорогих устройств, работающих на основе протокола Ethernet (роутеры, хабы, точки доступа, оптические провода и т.д.), тогда как стоимость и разнообразие устройств, работающих на основе серийных протоколов, оставляет желать лучшего.

В Ethernet-сетях непредсказуемые коллизии в процедуре CSMA/CD могут быть причиной того, что доставка пакета будет задержана, или пакет полностью исчезнет. По этой причине используют протоколы реального времени. Примером может служить стандарт IEEE 1588. Он определяет специальную процедуру «синхронизации часов».

Стандарт IEEE 1588 известен как «Precision Clock Synchronization Protocol for Networked Measurement and Control Systems» или, для краткости, «PTP». PTP определяет процедуру, позволяющую многим пространственно-распределенным часам реального времени синхронизироваться через сеть Ethernet. Технология, заложенная в стандарт, была первоначально разработана компанией Agilent и использовалась для распределенных измерений и контроля. Задача состояла в том, чтобы синхронизовать по времени сетевые измерительные устройства так, чтобы они могли записывать измеряемые значения с точным системным штампом времени. На основе этого штампа времени измеренные значения впоследствии могли быть соотнесены друг с другом.

Реализация Ethernet компанией STMicroelectronics

Типичная схема построения устройства с Ethernet-каналом представлена на рисунке 1.

Схема построения устройства с Ethernet-каналом

Рис. 1. Схема построения устройства с Ethernet-каналом

  • MCU/MPU- микроконтроллер с МАС (media access controller);
  • PHY- трансивер физического уровня;
  • Protection- защита Ethernet порта;
  • Transformer- изолирующий трансформатор;
  • PoE- микросхема подачи питания через Ethernet;
  • RJ45- разъем RJ45.

В статье мы попробуем выстроить эту схему, используя решения от компании STMicroelectronics, надежные в работе и, вместе с тем, более дешевые в закупке, чем изделия для Ethernet компаний Texas Instruments и Freescale.

Микроконтроллер с МАС

Для реализации Ethernet компания STMicroelectronics предлагает семейство контроллеров STM32F107 с Ethernet MAC-блоком, входящий в обширную линейку микроконтроллеров STM32, базирующееся на современном ядре ARM Cortex-M3. Модуль MAC обеспечивает адресацию и механизмы управления доступом к каналам, что позволяет нескольким терминалам или точкам доступа общаться между собой в многоточечной сети.

Микроконтроллеры реализованы на ядре ARM Cortex TM -M3, обладают развитыми системными ресурсами и имеют малое энергопотребление. Ядро ARM Cortex TM -M3 выполнено по Гарвардской архитектуре и имеет несколько шин, что позволяет распараллеливать операции обмена данными, тем самым достигая высокой производительности. Максимальная тактовая частота ядра микроконтроллеров STM32F107 составляет 72 МГц.

Микроконтроллеры STM32F107 имеют довольно широкий набор встроенной периферии: АЦП, датчик температуры, Ethernet, USART, I 2 C, SPI, CAN, USB, часы реального времени и многое другое. Также нельзя не отметить широкую программную поддержку семейства STM32 как компанией STMicroelectronics, так и сторонними производителями ПО. Например, это библиотека стандартной периферии, аудиобиблиотека, DSP-библиотека, библиотека управления двигателями, бесплатные TCP/IP стеки с руководством по использованию.

Для более эффективного использования ресурсов ядра микроконтроллера реализован 12 канальный контроллер прямого доступа к памяти (DMA), позволяющий осуществлять параллельный обмен данными между периферийными устройствами, не затрагивая ресурсов ядра.

Обобщенная функциональная схема микроконтроллера STM32F107 представлена на рисунке 2.

Обобщенная структурная схема микроконтроллеров STM32F107

Рис. 2. Обобщенная структурная схема микроконтроллеров STM32F107

Ethernet модуль микроконтроллеров STM32F107 имеет достаточно широкий набор функций, вот лишь некоторые из них:

  • Соответствует стандарту IEEE802.3;
  • Осуществляет передачу данных на скоростях 10 и 100Мбит/c;
  • Поддержка протокола IEEE1588 на аппаратном уровне;
  • Поддерживает VLAN (виртуальная локальная сеть);
  • Поддерживает Half-duplex (CSMA/CD) и Full-duplex режимы;
  • Поддержка MAC control sublayer (подуровень управления доступом к среде).

Для упрощения процесса разработки Ethernet-приложений компания STMicroelectronics представила на сайте несколько рекомендаций по применению. Например, описано применение lwIP TCP/IP- и NicheLite TM TCP/IP-стеков. Также имеется подробное руководство по внутрисхемному программированию через Ethernet.

Трансивер физического уровня

Следующим важным звеном при реализации Ethernet-интерфейса является трансивер физического уровня (PHY). Устройство физического уровня обеспечивает кодирование данных, поступающих от MAC-подуровня для передачи их по транспортной среде, синхронизацию передаваемых данных, а также прием и декодирование данных. Трансиверы могут подключаться как к медному проводу, так и к оптическому кабелю.

Трансивер ST802RT1A для работы с витой парой

Рис. 3. Трансивер ST802RT1A для работы с витой парой

Трансивер ST802RT1B для работы с оптическим приемопередатчиком

Рис. 4. Трансивер ST802RT1B для работы с оптическим приемопередатчиком

Основные возможности трансивера ST802RT1:

Рассмотрим подробнее подключение трансивера к микроконтроллеру. Для связи MAC с устройством физического уровня используется один из трех интерфейсов: MII, RMII или SMII.

Интерфейс MII (рисунок 5) состоит из двух частей: собственно канала приема-передачи данных (MII) и служебного канала управления (MDIO и MDC). Все операции интерфейса MII выполняются в синхронном режиме.

Структура интерфейса MII

Рис. 5. Структура интерфейса MII

Канал передачи данных MII содержит следующие сигналы:

  • MII_TXD (3..0)- группа параллельных сигналов данных, которые поступают в трансивер из MAC;
  • MII_TX_CLK- частота для тактирования передачи данных. Вырабатывается в трансивере и передается в МАС: 2,5МГц для операций 10Мбит/c, 25МГц для операций 100Мбит/c;
  • MII_TX_EN- разрешение передачи. MAC устанавливает этот сигнал, когда установлены достоверные данные на передачу;
  • MII_CRS- опрос несущей. В течение полудуплексной операции трансивер устанавливает этот вывод, когда передает или принимает пакеты данных. В течение дуплексной операции CRS устанавливается при приеме;
  • MII_COL- детектирование коллизии. Трансивер устанавливает этот вывод, когда обнаружено столкновение на линии. Этот вывод остается высоким во время столкновения на линии. Этот сигнал- асинхронный и неактивен в течение дуплексной операции;
  • MII_RXD (3..0)- группа параллельных сигналов данных, выдаются из трансивера в МАС-контроллер;
  • MII_RX_CLK- частота для тактирования приема данных. Вырабатывается в трансивере и передается в МАС: 2,5МГц для операций 10Мбит/c, 25МГц для операций 100Мбит/c;
  • MII_RX_DV- достоверность принятых данных. Трансивер устанавливает этот сигнал, когда он получает достоверный пакет данных и, соответственно, выдает достоверные данные на RXD;
  • MII_RX_ER- ошибка приема. Трансивер сообщает о том, что в приемном потоке данных произошла ошибка.

Служебный канал содержит следующие сигналы:

Наряду с программным конфигурированием, можно использовать аппаратное. Суть аппаратного конфигурирования заключается в том, что трансивер непосредственно после сброса считывает состояние нескольких выводов. Каждый из считываемых выводов отвечает за определенную функцию. Задание состояния вывода осуществляется его подтяжкой через резистор 2,2 кОм (такой номинал рекомендован производителем) на питание или ноль. Аппаратно можно задавать следующие функции:

  • Выбор MII/RMII интерфейса для связи с MAC-контроллером;
  • Задание скорости передачи: 10 или 100Мбит/c;
  • Задание режима: Half-duplex или Full-duplex;
  • Разрешение или запрещение Auto-negotiation;
  • Разрешение или запрещение Loop-back;
  • Задание адреса трансивера.

Интерфейс RMII имеет сокращенный набор сигналов и полностью совместим с IEEE 802.3u. Он позволяет работать в режимах 10 и 100 Мбит/c, имеет частоту синхронизации 50 МГц. Реализация представлена на рисунке 6.

Структура интерфейса RMII

Рис. 6. Структура интерфейса RMII

Компания STMicroelectronics предлагает разработчикам два отладочных набора на базе микроконтроллера STM32F107 и трансиверов серии ST802RT1.

Отладочный набор STEVAL-PCC010V1

Рис. 7. Отладочный набор STEVAL-PCC010V1

На первой плате расположен микроконтроллер STM32F107 c Ethernet MAC-блоком на борту. Имеется кнопка сброса микроконтроллера (Reset) , пара светодиодов (Led) и кнопка общего назначения (General purpose Button). На плате установлен стандартный 20-контактный разъем JTAG для отладки. Для тактирования микроконтроллера установлен кварцевый резонатор на 25 MГц. Питание осуществляется от USB через преобразователь 3,3 В LDO. Также на плате установлен дополнительный 20-контактный разъем для подключения к плате внешней периферии. На второй плате установлен трансивер ST802RT1A. Для тактирования микросхемы установлен кварцевый резонатор на 25 MГц. 12 перемычек позволяют аппаратно задавать начальную конфигурацию трансивера. Соединение двух плат осуществляется через 20-контактный разъем (MII/RMII connectors).

Отладочный набор STEVAL-PCC011V1

Рис. 8. Отладочный набор STEVAL-PCC011V1

Защита Ethernet-порта

Микросхема подачи питания через Ethernet

Данная технология предназначается для IP-телефонии, IP-камер, сетевых концентраторов и других устройств, к которым нежелательно или невозможно проводить отдельный электрический кабель.

Power-over-Ethernet стандартизирована по стандарту IEEE 802.3af. Существует несколько вариантов этой технологии, предшествующих данному стандарту, но они мало распространены.

Для подачи энергии используются, как правило, свободные витые пары 4/5 и 7/8. Предусмотрено и фантомное питание через передатчик по витым парам 1/2 и 3/6.

Компания STMicroelectronics предлагает несколько микросхем PoE (PM8800, PM8803). Остановимся подробнее на микросхеме PM8800 (рисунок 9).

Структура PM8800

Рис. 9. Структура PM8800

Основные возможности PM8800:

  • Поддерживает IEEE 802.3af;
  • Две схемы включения: с изоляцией по питанию и без изоляции;
  • Работает с двумя источниками питания: от Ethernet и от вспомогательного (локального);
  • Функция мягкого старта и другие функции защиты.

Подробное описание с примерами схем включения можно найти в техническом описании на микросхему.

Демоплата PM8800 demonstration kit

Рис. 10. Демоплата PM8800 demonstration kit

Изолирующий трансформатор и разъем RJ45

Рекомендации по выбору изолирующего трансформатора и разъема RJ45 приведены в описании трансивера. Можно использовать разъем со встроенным изолирующим трансформатором. В случае использования оптической линии связи вместо трансформатора и разъема устанавливается оптический приемопередатчик.

Заключение

Компания STMicroelectronics предоставляет пользователям все необходимые аппаратные средства для реализации Ethernet-канала в своих разработках: высокопроизводительные и недорогие микроконтроллеры на базе ядра ARM Cortex TM -M3, трансиверы физического уровня, защитные диодные сборки, линии передачи и микросхемы PoE.

Это является основным конкурентным преимуществом, т.к. производитель уже проработал все вопросы сопряжения микросхем цепи Ethernet. Разработчик может пользоваться готовыми наработками компании STMicroelectronics и сэкономить свое время.

Также для ускорения и упрощения процесса разработки компания предлагает широкий выбор отладочных плат. На сайте можно найти большое количество рекомендаций по применению и примеров программного кода.

В заключение хочется отметить, что использование элементной базы одного производителя позволяет уменьшить общую стоимость изделия, поскольку «пакетные» закупки комплектующих всегда более выгодны в финансовом плане.

Итак, если Вы заинтересовались, читайте далее…

1. Драйвер RNDIS


На этапе написания решалось две задачи: подписать наше устройство и поддержать стандарт RNDIS.
Подпись устройства сводится к составлению верных USB-дескрипторов. Значение VID выбрано 0x0483 (STMicroelectronics), значение PID — 0x0123 (произвольное). Само собой, в коммерческом применении так делать не следует.
Device Descriptor
Offset Field Size Value Description
0 bLength 1 12h
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0200h USB Spec 2.0
4 bDeviceClass 1 02h CDC Control
5 bDeviceSubClass 1 00h
6 bDeviceProtocol 1 00h
7 bMaxPacketSize0 1 40h 64 bytes
8 idVendor 2 0483h SGS Thomson Microelectronics
10 idProduct 2 0123h
12 bcdDevice 2 0001h 0.01
14 iManufacturer 1 01h «Fetisov Sergey»
15 iProduct 1 02h «STM32F4 RNDIS»
16 iSerialNumber 1 03h «00000000123C»
17 bNumConfigurations 1 01h
Configuration Descriptor 1
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 0043h
4 bNumInterfaces 1 02h
5 bConfigurationValue 1 01h
6 iConfiguration 1 00h
7 bmAttributes 1 40h Self Powered
8 bMaxPower 1 01h 2 mA
Interface Descriptor 0/0 CDC Control, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h
3 bAlternateSetting 1 00h
4 bNumEndpoints 1 01h
5 bInterfaceClass 1 02h CDC Control
6 bInterfaceSubClass 1 02h Abstract Control Model
7 bInterfaceProtocol 1 FFh Vendor-Specific
8 iInterface 1 00h
Header Functional Descriptor
Offset Field Size Value Description
0 bFunctionLength 1 05h
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 00h Header
3 bcdCDC 2 0110h 1.10
Call Management Functional Descriptor
Offset Field Size Value Description
0 bFunctionLength 1 05h
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 01h Call Management
3 bmCapabilities 1 00h
4 bDataInterface 1 01h
Abstract Control Management Functional Descriptor
Offset Field Size Value Description
0 bFunctionLength 1 04h
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 02h Abstract Control Management
3 bmCapabilities 1 00h Requests/notifications not supported
Union Functional Descriptor
Offset Field Size Value Description
0 bFunctionLength 1 05h
1 bDescriptorType 1 24h CS Interface
2 bDescriptorSubtype 1 06h Union
3 bControlInterface 1 00h
4 bSubordinateInterface0 1 01h CDC Data
Endpoint Descriptor 81 1 In, Interrupt, 80 ms
Offset Field Size Value Description
0 bLength 1 07h
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 50h 80 ms
Interface Descriptor 1/0 CDC Data, 2 Endpoints
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h
3 bAlternateSetting 1 00h
4 bNumEndpoints 1 02h
5 bInterfaceClass 1 0Ah CDC Data
6 bInterfaceSubClass 1 00h
7 bInterfaceProtocol 1 00h
8 iInterface 1 00h
Endpoint Descriptor 82 2 In, Bulk, 64 bytes
Offset Field Size Value Description
0 bLength 1 07h
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 02h Bulk
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h
Endpoint Descriptor 03 3 Out, Bulk, 64 bytes
Offset Field Size Value Description
0 bLength 1 07h
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 03h 3 Out
3 bmAttributes 1 02h Bulk
4 wMaxPacketSize 2 0040h 64 bytes
6 bInterval 1 00h

Поддержка стандарта осуществлена в соответствии с документацией.

Также в сети присутствует множество RNDIS-драйверов для других платформ (1, 2, 3), что существенно упростило разработку.
В части обмена драйвер повторяет особенность CDC-класса за исключением того, что передаваемые пакеты оборачиваются служебной информацией. Также существует специальный интерфейс для передачи запросов от usb-хоста с целью настройки устройства или получения его статуса. Детально код драйвера можно изучить в модуле usbd_rndis_core.c.
Минимальная настройка драйвера при встраивании заключается в изменении определений в файле usbd_rndis_core.h.
— MAC-адрес устройства (PERMANENT_HWADDR, STATION_HWADDR)
— Идентификатор производителя (RNDIS_VENDOR)
— Значение MTU (ETH_MTU):


Также в файле usbd_desc.h следует изменить название продукта (USBD_PRODUCT_STRING) и производителя (USBD_MANUFACTURER_STRING).

Процесс установки драйвера в ОС Windows:


1. Пункт меню «обновить драйвер»;
2. Выполнить поиск драйвера;
3. Выбрать драйвер из списка;
4. В списке классов устройств выбрать «Сетевые адаптеры»;
5. В списке производителе выбрать «Microsoft Corporation»;
6. И продукт «Remote NDIS based Internet Sharing Device».

Более подробно процесс установки стандартного RNDIS устройства описан по ссылке.

2. Прикручиваем LwIP


Драйвер RNDIS обеспечивает лишь транспортную функцию для кадров стандарта 802.3 (Ethernet). Очевидно, что поддержку всего многообразия пакетов и стандартов требуется возложить на сетевой стек. В его роли было принято решение использовать популярный стек для встраиваемых систем lwip последней (на текущий момент) версии 1.4.1. Надо отдать должное авторам стека, тот получился весьма просто интегрируемым. При всём при этом, код стека богат полезными комментариями и инструкциями.

Запуск стека под stm32 ограничился включением в процесс сборки конкретного набора исходных файлов и вводом определений в файле lwipopts.h:


Нужно отметить, работа по портированию стека на STM32F4 производилась и раньше фирмой STMicroelectronics (приложение STSW-STM32070).

Запускаем DHCP-сервер


Добавление DHCP-сервера в состав библиотеки связано с необходимостью инициализировать сетевой интерфейс на стороне host-а. По умолчанию, создаваемый при подключении устройства интерфейс настроен на автоматическое получение ip-адреса. Библиотека также успешно работает и при статической адресации, но это является не совсем удобным.

К сожалению, среди поставляемых lwip средств, DHCP-сервер отсутствует.

Однако, это не является существенной проблемой, т.к. в своей минимальной реализации DHCP-сервер весьма минималистичен.

В сети присутствует, пожалуй, единственный пример DHCP-сервера, работающего со стеком lwip. Данный источник оказался весьма полезным для изучения, хоть и не пригодным для встраивания по принципу «as-is» по причине отсутствия возможности конфигурирования и использования socket-api.

Поэтому было принято решение написать DHCP сервер.

И вот его скромные возможности:
— выдача адресов на произвольное время
— резервирование адресов по MAC адресу
— настройка DNS-сервера

Подключение сервера в тестовом проекте:

Запускаем DNS-сервер


Желаемый нами результат работы — отображение web-страницы при вводе в браузере некоторого имени ресурса. Однако, это возможно только при наличии DNS-сервера, который будет «знать» о нашем хосте. Конечно, этот результат доступен, если в адресной строке напрямую ввести ip-адрес: 192.168.7.1. Такой адрес имеет по умолчанию наше устройство. Однако, будем более искусны и запустим DNS-сервер.

В отличии от DHCP, текущая реализация DNS-сервера ещё «тоньше». На данный момент она позволяет обработать только стандартные DNS-запросы на одну запись.

Запуск сервера в проекте:

Долго и безрезультатно пришлось бороться с запуском известного сервера из пакета lwip «contrib-1.4.1». До сих пор для меня остаётся загадкой таинственный HardFault, возникающий на, казалось бы, ровном месте. Были проверены все настройки, адреса чтения и записи, глубина стека… Но, увы.

Многие специалисты знают, что топовое сетевое оборудование использует специальные чипы для обработки трафика. Я принимаю участие в разработке таких молотилок и хочу поделиться своим опытом в создании таких высокопроизводительных девайсов (со интерфейсами 10/40/100G Ethernet).

Для создания нового канала сетевики чаще всего берут оптику, пару SFP+ модулей, втыкают их в девайсы: лампочки радостно загораются, пакеты начинают приходить: чип начинает их передавать получателям. Но как чип получает пакеты из среды передачи? Если интересно, то добро пожаловать под кат.

IEEE 802.3

Ethernet — это стандарт, принятый ассоциацией IEEE. Стандарты 802.3 охватывают все возможные разновидности Ethernet (от 10M до 100G). Сконцентрируемся на конкретной реализации физического уровня: 10GBASE-R («обычный» 10G, без излишеств).



На этом рисунке показаны уровни модели OSI и то, как они отображаются на подуровни протокола Ethernet.

  • PHY — физический подуровень.
  • MAC — подуровень управления доступом к среде.
  • PMD — обеспечивает передачи и приема отдельных бит на физическом интерфейсе.
  • PMA — обеспечивает сериализацию/десериализацию данных, а так же выделение клока из последовательных данных (на приеме)
  • PCS — обеспечивает скремблирование/дескремблирование, а так же кодирование/декодирование (64b/66b) блоков данных
  • XGXS — XGMII расширитель: используется если PHY и MAC находится на расстоянии друг от друга (опционален).
  • RECONCILIATION — подуровень, транслирующий XGMII в сигналы MAC.
  • Medium — среда передачи.
  • MDI — интерфейс, зависимый от среды передачи данных.
  • XGMII — 10G интерфейс, независимый от среды передачи данных. Задача XGMII — обеспечить простое и дешевое соединение между PHY и MAC.
  • XAUI — 10G интерфейс подключения к трансиверу.

Для каждого типа физического уровня может быть своя реализация отдельных PHY-подуровней: применяется различное кодирование, различные частоты передачи (длины волн), но четкое разделение на уровни везде прослеживается. Наличие независимого от среды интерфейса (XGMII) упрощает разработку прикладной логики чипов, т.к. при любом подключении разработчик где-то получит XGMII. О том, что собой представляет XGMII мы поговорим позже.

Самым близким к среде расположен подуровень PMD: его задачи решают специальные модули, которые хорошо известны сетевым специалистам:

Тип модуля Интерфейс
XENPAK XAUI
X2 XAUI
XFP XFI
SFP+ SFI

В этой таблице уже есть знакомая аббревиатура: XAUI. Оставим рассмотрение XENPAK/X2 на середину статьи, и обратимся к наиболее популярным модулям: XFP и SFP+.

XFI/SFI

XFI и SFI фактически представляют собой один и тот же интерфейс: дифпара, работающая на скоростях от 9.95 до 11.10 гигабод. Набор скоростей обуславливается тем, что несколько стандартов могут использовать этот интерфейс: от 10GBASE-W WAN до 10GBASE-R over G.709. Нас интересует 10GBASE-R LAN с скоростью в 10.3125 гигабод. Одна дифпара используется для приема, другая — для передачи.

XFI/SFI подключается напрямую к ASIC/FPGA


Задачи подуровней PMA и PCS можно решить на чипе, где мы будем выполнять дальнейшую обработку Ethernet пакетов (после того, как выделим их из XGMII). Напомню, что в подуровне PMA необходимо на приеме выделить тактовую частоту и десериализовать входной сигнал. Такую работу могут выполнить специальные аппаратные блоки, которые для других задач нельзя использовать. Эти блоки называются трансиверами. На их подробное описание может уйти целая статья: кому интересно, могут посмотреть посмотреть блок-схему трансиверов в FPGA компании Altera.

После десериализации, данные попадают в подуровень PCS, где производится дескремблирование и декодирование (64b/66b) и отдаются данные в виде XGMII в сторону MAC'a. На передаче выполняются обратные действия.

PCS может быть реализован как с использованием специальных аппаратных блоков (Hard PCS), так и с помощью логики, доступной пользователю (Soft PCS). Разумеется, это утверждение справедливо только для FPGA: в ASIC'ах всё сделанно аппаратно. Производители FPGA закладывают аппаратные PCS блоки для стандартных протоколов, экономя разработчику время и ресурсы FPGA. Наличие таких блоков очень подкупает, т.к. многие стандартные протоколы по опыту работают из коробки, и для большинства из них код предоставляется бесплатно производителем FPGA.

Подключение через внешний чип-трансивер



Трансиверы в FPGA — вещь дорогая, дополнительный десяток трансиверов может значительно поднять цену на чип. Есть более дешевые чипы, с трансиверами, работающими на меньших скоростях (могут сериализовать/десериализовать данные на меньших частотах). Другим высокочастотным интерфейсом, который определен в секции 4 стандарта 802.3, является XAUI: 4 дифференциальные пары с скоростью передачи в 3.125 гигабод (для одной линии передачи).

При использовании XAUI возникает опциональный уровень XGXS, который позволяет отдалить PHY и MAC друг от друга на расстояние. Например, выполнять в разных чипах.

Задачу PMA и PCS в таком подключении могут выполнить специальные 10G трансиверы (Допускаю, что может возникнуть путаница, т.к. чуть ранее «трансиверы» вспыли в FPGA, и теперь тут возникает этот термин. Между прочим, модули XFP/SFP+ тоже называются трансиверами.)

  • Необходимо четыре трансивера (четыре аппаратных блока), т.к. используется 4 дифпары для этого интерфейса.
  • XAUI PCS использует кодирование 8b/10b. В 10G PCS применяется 64b/66b.


Некоторые PHY-трансиверы могут сразу выдавать на пины интерфейс XGMII и тогда трансиверы в ASIC/FPGA не надо использовать:

  • Большой расход пинов: в варианте XGMII у одного чипа используется минимум 78 ножек, против 16 в варианте с XAUI.
  • Параллельные интерфейсы могут требовать выравнивания дорожек по плате, что иногда бывает нетривиальным.

Подключение XENPAK/X2



Как я и обещал, мы добрались до этих типов модулей. Несложно увидеть, что их подключение сводится ко второму варианту, только без использования внешнего чипа-трансивера. Модуль возьмет на себя задачи подуровней PMD, PMA и PCS.

XGMII

XGMII определяется в clause 46 стандарта 802.3. Этот интерфейс состоит из независимого приема и передачи. Каждое из направлений имеет 32-битную шину данных (RXD/TXD [31:0]), четыре контрольных сигнала (RXC/TXC [3:0]) и клок, по которому работает направление (RX_CLK/TX_CLK). В стандарте определено, что шины данных и контрольных сигналов анализируются на каждый фронт клока (DDR). По шине данных идёт сам пакет, контрольные сигналы определяют начало помогают «выделять» начало и конец пакета, а так же сообщают об авариях.

  • Шина 36 бит (32 + 4) на частоте 312.5 МГц.
  • Шина 72 бит (32 * 2 + 4 * 2) на частоте 156.25 МГц.

300 МГц могут себе позволить только топовые (читай, дорогие) FPGA.

  • Пропреитарное. После покупки лицензии на такое IP-ядро, вы (чаще всего) получаете зашифрованные исходники (без возможности модификации) и нет особого ограничения на количество чипов, в которых можно использовать это ядро. Пример.
  • С открытым кодом. Такие ядра очень полезны для новичков, т.к. код открыт, и можно разобраться как работает. Лицензия на использование определяется отдельно. Пример.
  • Самописное.

Чаще всего такое ядро реализуется на логике, которая доступна для пользовательских задач. Однако, есть производитель FPGA, который MAC-ядра реализовал аппаратно, экономя ресуры пользователю.

MAC-ядро, выделив пакет из XGMII и разместив пакет во внутренней памяти чипа, «передает» контроль над пакетом прикладной логике чипа: парсерам, фильтрам, системам коммутации и пр. К примеру, если чип стоит на сетевой карте и будет принято решение о том, что надо пакет переслать на хост, то он может быть отправлен с помощью PCIe в оперативную память, подключенную к CPU.

Личный опыт

С L1 в большей степени приходится сталкиваться инженерам-схемотехникам, которые разводят платы для приборов. FPGA-программисты с этим работают только в начале подъема железа: когда заработал XGMII и все трансиверы прошли тесты, то мы концентрируемся на том, как сделать обработку трафика. В одном приборе сделано подключение по первому варианту: SFI напрямую заходит в FPGA. В двух других по второму варианту (с использованием трансивера и XAUI). Так же есть девайс у которого есть подключение как напрямую SFI, так и через XAUI, но без трансивера (FPGA подключается к другому чипу).

Для использования внешних трансиверов (да и вообще, большинства специализированных чипов) необходимо подписать NDA. С этим особых проблем чаще всего не возникает. Вместе с NDA выдаются различные доки, например, настройки регистров чипа. Из опыта работы с трансиверами от двух разных производителей замечу, что при подъеме железа в первой партии стабильно возникают какие-то проблемы с настройкой трансивера, которые относительно быстро решались: трансиверы многофункциональные и иногда для настройки на необходимый режим работы надо пошаманить. Иногда бывает, что документация на чипы бывает очень плохая, и приходиться перебирать разные варианты, а техподдержка не отвечает или открыто заявляет, что поддержку по этим чипам она не осуществляет.

Один из плюсов использования чипа-трансивера является то, что вместе с документацией может распространяться набор прошивок-настроек, которые необходимо загружать в трансивер при установке определенного типа модуля. На сколько я понимаю, эти прошивки производят хитрую настройку эквалайзеров, без которой определенный тип модулей будет работать с битовыми ошибками. Один из таких SFP+ модулей (с лимитирующим усилителем) лечился именно таким образом. Если подключаться без трансивера, то такие настройки надо готовить самим для ASIC/FPGA, что может быть нетривиальной задачей.

Наличие интерфейса, который независим от среды передачи, очень упрощает жизнь, т.к. код (application logic: парсеры, генераторы, анализаторы, фильтры, и пр.) очень легко портировать из старых проектов в новые, т.к. не важно, какой тип подключения использовался.

Подключение (и обработка) 40G/100G к ASIC/FPGA похожа на 10G, однако, там есть свои нюансы. Если будет интересно, этому можно будет посвятить отдельную статью, правда, большой она не будет.

Hello, habr!

Возьмем обычный UDP-пакет с строчкой «Hello, habr!» и отправим на прибор, что бы посмотреть, как он будет выглядеть на XGMII.


У меня на столе лежит разобранный девайс, на котором чаще всего происходит тестирование новых фич: используем его для наглядного примера. Для этого подготовим специальную прошивку и подключим отладчик, чтобы увидеть сигналы внутри чипа. Подключение 10G сделано по второму варианту: с помощью внешнего трансивера, который отдает данные по XAUI в сторону FPGA. Этот трансивер двухканальный: может работать с двумя SFP+.


Как выглядит XGMII (и наш пакет) внутри FPGA:


В этом приборе внутри FPGA используется 72 битная шина XGMII, работающая на по положительному фронту частоты 156.25 МГц.

Спасибо за уделенное время и внимание! Если появились вопросы, задавайте без сомнений.


Ethernet является одним из наиболее распространенных сетевых интерфейсов. Компания Miсrochip выпускает широкий спектр Ethernet-микросхем на все случаи жизни: микроконтроллеры, PHY, коммутаторы, мосты USB-Ethernet, контроллеры Ethernet. Практически для каждой микросхемы предлагается отладочный набор и программные средства разработки.

Ethernet является незаменимым инструментом для создания высоконадежных промышленных сетей и высокоскоростных каналов передачи данных. В данном случае слова «надежный» и «высокоскоростной» являются ключевыми. Ни один из беспроводных или проводных интерфейсов не сможет соперничать с Ethernet по этим показателям.

Если оценивать Ethernet с точки зрения стоимости реализации, то он, конечно, уступит более простым сетям, например, RS-422/RS-485. Однако для многих промышленных приложений обеспечение высокой скорости передачи данных оказывается более важным требованием.

Дальнейшее развитие Ethernet связано не только с ростом пропускной способности, но и с получением высокой временной детерминированности при передаче информации. Речь идет в первую очередь о такой технологии как EtherCAT.

Рис. 1. Ethernet-решения от Miсrochip

Рис. 1. Ethernet-решения от Miсrochip

К сожалению, расплатой за преимущества, которые дает Ethernet, становятся не только увеличение стоимости, но и высокая сложность реализации. Эти недостатки препятствуют массовому внедрению Ethernet в простые бюджетные устройства, которые должны стать основой Интернета вещей (IoT). Тем не менее, на рынке появляется все больше микросхем и решений, позволяющих при минимальных затратах времени и денег реализовать Ethernet-интерфейс. Например, номенклатура компании Miсrochip имеет множество Ethernet-решений: микроконтроллеры с Ethernet, микросхемы PHY, Ethernet-контроллеры, коммутаторы, законченные преобразователи интерфейсов USB-Ethernet (рисунок 1).

Многообразие компонентов и решений производства компании Microchip позволяет разработчикам очень гибко организовать Ethernet-соединение, исходя из возможностей и требований конкретного приложения, что значительно упрощает процесс разработки.

Организация Ethernet-соединения с помощью микросхем Microchip

Как известно, Ethernet работает на двух нижних уровнях модели OSI: физическом и канальном. В общем случае для реализации Ethernet потребуется стандартный набор функциональных компонентов: микроконтроллер (процессор), Ethernet-контроллер с MAC-адресом (Ethernet Controller), микросхема PHY, Ethernet-коммутатор (Ethernet Switch), элементы защиты (варисторы, TVS-диоды, защитные диоды), трансформатор, сетевой разъем. С помощью компонентов производства Microchip структуру Ethernet-интерфейса можно реализовать различными способами (рисунок 2).

Рис. 2. Варианты реализации аппаратной части Ethernet

Рис. 2. Варианты реализации аппаратной части Ethernet

Когда Ethernet только зарождался, уровень интеграции был достаточно скромным. По этой причине для создания Ethernet-интерфейса использовался набор отдельных микросхем (рисунок 2а). В этом случае микроконтроллер работает на верхних уровнях модели OSI и взаимодействует с Ethernet-контроллером с помощью одного из традиционных интерфейсов, например, по SPI. Ethernet-контроллер реализует канальный уровень OSI. Одна из главных его функций заключается в назначении уникального MAC-адреса устройства для работы в сети. За организацию физического канала отвечает микросхема Ethernet PHY. Она выполняет непосредственное кодирование и формирование выходных сигналов. Связь между Ethernet-контроллером и Ethernet PHY осуществляется с помощью интерфейса MII (Media Independent Interface) или его производных (RGMII/GMII и других). Если требуется на одном устройстве разместить несколько сетевых узлов, то для этих целей используется Ethernet-коммутатор.

С развитием технологических норм степень интеграции увеличивалась. Это позволяло разместить в одном корпусе не только процессорное ядро и стандартную периферию, но и «тяжелый» Ethernet-контроллер (рисунок 2б). В итоге для создания Ethernet-интерфейса требовалось подключить к такому микроконтроллеру только Ethernet PHY.

Стремление к созданию максимально простых решений привело к появлению микроконтроллеров и систем-на-кристалле (SOC), которые могут похвастаться не только встроенным Ethernet-контроллером, но и чипом Ethernet PHY (рисунок 2в). Для них подключение к сети оказывается максимально простым – остается только добавить элементы защиты и трансформатор.

В последнее время на рынке появляются и другие интересные решения. Например, компания Microchip предлагает широкий выбор различных мостовых схем USB-Ethernet (рисунок 2г). Их достоинствами являются универсальность, простота и низкая стоимость.

Компания Microchip выпускает весь спектр Ethernet-микросхем. Это дает пользователям возможность применять наиболее удобную структуру Ethernet-интерфейса, что в свою очередь значительно упрощает процесс разработки.

Обзор микроконтроллеров Microchip со встроенным Ethernet

Компания Microchip выпускает почти 200 моделей микроконтроллеров для Ethernet-приложений. Чтобы рассказать о них, потребуется не одна статья. По этой причине ограничимся кратким обзором основных семейств контроллеров с Ethernet.

Сейчас семейство PIC18 с Ethernet объединяет трех представителей – PIC18F66J60, PIC18F67J60 и PIC18F97J60, которые доступны в корпусных исполнениях 64/80/100 TQFP.

Производительность этих процессоров невелика – до 10,5 DMIPS. Если требуется более мощный процессор, стоит взглянуть на представителей семейства PIC32.

Семейство PIC32MX7 объединяет почти два десятка микроконтроллеров, построенных на базе процессорного ядра PIC32 с производительностью до 105 MIPS при рабочей частоте до 80 МГц. Максимальный объем Flash составляет до 512 кбайт, ОЗУ до 128 кбайт. Выпускаются эти микроконтроллеры в 64-выводном (TQFP, QFN) и 100-выводном (TQFP, BGA) исполнениях.

Данные семейства могут похвастаться развитой коммуникационной периферией, в том числе – CAN, USB, I²S и Ethernet. Интегрированный Ethernet-контроллер с MAC поддерживает 10/100 Мбит Ethernet.

Семейство PIC32MZ. По сравнению с предыдущими семействами эти микроконтроллеры отличаются повышенной производительностью до 415 DMIPS и рабочей частотой до 200 МГц. Также они могут похвастаться более развитым набором периферии и расширенным объемом памяти: Flash до 2 Мбайт и ОЗУ до 512 кбайт.

Микроконтроллеры выпускаются в различных корпусных исполнениях: 64-выводные (TQFP, QFN), 100-выодные (TQFP), 124-выводные (VTLA) и 144-выводные (TQFP, LQFP). Семейство включает почти 90 представителей.

Кроме собственных разработок компания Microchip продолжает выпускать микроконтроллеры с Ethernet, доставшиеся в наследство от Atmel – различные семейства SAM:

    /SAME70 – микроконтроллеры на базе ARM Cortex-M7, отличающиеся высокой производительностью до 600 DMIPS и значительным объемом Flash до 2 Мбайт; – семейство, основанное на ядре ARM® Cortex®-A5. Наиболее мощное семейство производства Microchip с производительностью до 841 DMIPS и самым развитым набором периферии. В отличие от остальных микроконтроллеров, представители SAM A5D3 могут похвастаться Ethernet-контроллером, работающим в том числе и с 1000Base-T Ethernet.

Все микроконтроллеры производства компании Microchip, за исключением PIC18, требуют внешней микросхемы Ethernet PHY. Компания Microchip выпускает микросхемы данного типа для 10/100/1000Base-T Ethernet.

Микросхемы Ethernet PHY от Microchip

Microchip предлагает недорогие, компактные, малопотребляющие приемопередатчики Ethernet PHY для создания 10/100/1000 Мбит Ethernet (таблица 1). Для их подключения к процессорам используются стандартные интерфейсы GMII, RMII, MII.

Таблица 1. Обзор микросхем Ethernet PHY производства компании Microchip

Большинство микросхем разработано в соответствии с IEEE 802.3az (Energy Efficient Ethernet, EEE) и используют функцию пробуждения по сети Wake-On-LAN. Ethernet PHY производства компании Microchip способны работать с широким диапазоном питающих напряжений. Все это позволяет снизить уровень потребления на 40% по сравнению с аналогами. Например, KSZ8081 имеет мощность потребления всего 155 мВт.

Отличительной чертой Ethernet PHY производства Microchip являются фирменные технологии. LinkMD®+ позволяет выполнять расширенную диагностику качества сигналов. Технология Quiet-WIRE обеспечивает минимизацию уровня собственных помех и повышение устойчивости к внешним шумам.

Обзор Ethernet-контроллеров Microchip

Если используемый процессор не имеет встроенного контроллера Ethernet, то необходимо использовать внешний контроллер.

Таблица 2. Обзор Ethernet-контроллеров от Microchip

Как и в случае с рассмотренными ранее микросхемами PHY от Microchip, часть представленных контроллеров также имеет поддержку с IEEE 802.3az, функции Wake-On-LAN и фирменных технологий.

Обзор мостов HSIC/USB-Ethernet Microchip

Кроме традиционных Ethernet-решений Microchip предлагает микросхемы преобразователей USB – Ethernet. Такие преобразователи могут использоваться как отдельные устройства и подключаться к уже разработанным приборам с USB.

В настоящий момент Microchip выпускает мостовые преобразователи для USB 2.0, USB 3.1 и HSIC (High-Speed Inter-Chip) (таблица 3). При этом наиболее современные микросхемы работают с 10/100/1000 Мбит Ethernet, например, LAN7500.

Таблица 3. Обзор мостов HSIC/USB-Ethernet Microchip

Среди отличительных особенностей мостов от Microchip стоит отметить наличие встроенных регуляторов напряжения, поддержку IEEE 802.3az и Wake-On-LAN.

Обзор микросхем коммутаторов Ethernet от Microchip

Microchip предлагает микросхемы коммутаторов трех групп: высокоскоростные коммутаторы Gigabit Ethernet (таблица 4), 3-портовые коммутаторы 10/100 Мбит Ethernet (таблица 5) и 4/5/7/9-портовые коммутаторы Ethernet (таблица 6). Для большинства коммутаторов все порты за исключением одного снабжены полным комплектом из MAC + PHY. Один из портов имеет только MAC, для его использования требуется внешняя микросхема PHY, которая подключается с помощью одного из стандартных интерфейсов SGMII/RGMII/GMII/RMII/MII.

Таблица 4. Обзор микросхем высокоскоростных коммутаторов Gigabit Ethernet производства Microchip

Таблица 5. Обзор 3-портовых коммутаторов Ethernet производства Microchip

Стоит отметить, что часть коммутаторов Microchip поддерживает протокол IEEE 1588 v2 Precision Time Protocol (PTP), что является обязательным условием при реализации EtherCAT.

Таблица 6. Обзор 5/7/9-портовых коммутаторов Ethernet производства Microchip

Обзор инструментов для разработки и отладки Ethernet-приложений

Создание устройств с Ethernet – сложная задача. Проблемы могут возникнуть как на этапе разработки принципиальной схемы и печатной платы, так и при написании программной части. Наиболее простым способом освоить Ethernet является использование готовых отладочных наборов и открытых программных библиотек и стеков протоколов.

Таблица 7. Отладочные платы микроконтроллеров Microchip со встроенным Ethernet

Компания Microchip предлагает огромное количество самых разнообразных отладочных наборов и оценочных плат (таблицы 7 и 8). В их число входят как оценочные платы для микроконтроллеров, например, PIC32 Ethernet Starter Kit II, так и законченные решения, например, преобразователь интерфейсов EVB-LAN7500 (рисунок 3).

Рис. 3. Примеры отладочных наборов для микросхем Ethernet от Microchip

Рис. 3. Примеры отладочных наборов для микросхем Ethernet от Microchip

Таблица 8. Отладочные платы для микросхем Ethernet от Microchip

Кроме аппаратных средств Microchip предоставляет пользователям доступ к бесплатным драйверам и библиотекам. С точки зрения Ethernet-приложений разработчикам будет особенно интересен открытый и бесплатный стек TCP/IP от Microchip, который поддерживает следующие протоколы:

Если говорить о конкретных примерах использования микросхем Microchip, то в первую очередь стоит упомянуть готовые решения для EtherCAT и Интернета вещей (IoT).

Готовые решения: IoT и EtherCAT

EtherCAT представляет собой наиболее перспективную технологию прецизионного обмена данными, построенную на базе Ethernet. Для создания EtherCAT-приложений необходима поддержка протокола IEEE 1588 v2 Precision Time Protocol (PTP), который позволяет формировать временные метки, тем самым обеспечивая временную детерминированность при обмене данными, в то время как обычный Ethernet не гарантирует время доставки кадров.

Как говорилось выше, Microchip выпускает целый ряд микросхем с поддержкой IEEE 1588. Для быстрого освоения EtherCAT пользователям предлагаются специализированные отладочные наборы (таблица 9).

Таблица 9. Отладочные платы EtherCAT

Рис. 4. Платформа IoT Ethernet Kit производства компании Microchip

Рис. 4. Платформа IoT Ethernet Kit производства компании Microchip

Заключение

Ethernet остается одним из наиболее распространенных проводных интерфейсов и является основой как для бытовых, так и для промышленных сетей. Он сочетает в себе высокую скорость передачи данных и умеренную стоимость реализации.

Компания Microchip выпускает широкий выбор микросхем для Ethernet-приложений: 8/16/32-битные микроконтроллеры, микросхемы PHY, Ethernet-контроллеры, коммутаторы, малобюджетные мосты USB-Ethernet.

Кроме самих микросхем Microchip предлагает множество разнообразных отладочных наборов и программных библиотек, в том числе – открытый стек TCP/IP. Также имеются специализированные решения для EtherCAT и IoT.

Читайте также: