16‑портовый промышленный коммутатор Ethernet 10/100 на двух микросхемах Micrel KSZ8999
Введение
Основные преимущества микросхем Ethernet производства фирмы Micrel (www.micrel.com) — это доступность самих микросхем и документации по ним, а также простота использования. Российские производители аппаратуры с Ethernet неоднократно заявляли, что, используя изделия под маркой Micrel, они получают ожидаемый необходимый набор функций за небольшие деньги.
Отличие коммутаторов Micrel от микросхем конкурентов — это встроенные трансиверы физического уровня (PHY). Такие интегрированные коммутаторы упрощают разработку и экономят место на печатной плате, так как нет необходимости соединять каждый трансивер с коммутатором (8–15 линий) и проводить линии тактирования с внешнего генератора на трансивер. На рис. 1 показана блок-схема коммутатора KSZ8999, а на рис. 2 — внешний вид этой микросхемы.
О микросхеме KSZ8999I
Микросхема KSZ8999I представляет собой неуправляемый 9-портовый коммутатор Ethernet 10/100. В арсенале разработчика — 8 портов со встроенными трансиверами PHY и блоками MAC (Media Access Control) плюс дополнительный 9-й порт MAC для связи с внешним MAC-устройством или трансивером.
Коммутатор необходимо конфигурировать каждый раз после сброса питания. Это делается следующими способами. Конфигурация считывается из внешнего ПЗУ или записывается процессором по двум проводам (сигналы данных и тактирования). Также можно некоторые режимы работы задавать аппаратно, подключая соответствующие выводы микросхемы к «земле» или к плюсу через резисторы. При снятии сигнала «сброс» микросхема определит, как к ней подключены резисторы, и эти значения автоматически запишутся во внутренние регистры управления.
При конфигурировании разработчик может задать следующие параметры работы порта:
- Скорость каждого порта — 100 или 10 Мбит/с.
- Дуплексный или полудуплексный режим каждого порта.
- Число коллизий до отбраковки пакета.
А также:
- ограничить число широковещательных пакетов;
- отключить автоматическое согласование (Auto-negotiation) на каждом порту;
- отключить механизм обратного давления в полудуплексном режиме;
- отключить управление потоком данных;
- отключить обновление таблицы MAC-адресов.
После конфигурации неуправляемый коммутатор делает всю работу сам. Вначале, когда сервер опрашивает всех абонентов сети, адреса абонентов и номера портов фиксируются в таблице МАС-адресов коммутатора. Далее таблица адресов периодически обновляется.
Работающий коммутатор получает пакет и передает его на другие порты. Пакет отбрасывается, если адрес назначения пакета не совпадает с адресами абонентов на конкретном порту. Широковещательные пакеты пропускаются всеми портами, кроме порта, откуда пришел пакет. При этом коммутатор проверяет и отбрасывает все «битые» пакеты.
После обнаружения коллизии коммутатор прекращает передачу и ожидает в течение короткого случайного интервала времени, а затем делает попытку передачи кадра. Разработчик имеет возможность увеличить длительность этого интервала с помощью параметра “back-off aggressiveness”.
Кроме того, в полудуплексном режиме микросхема применяет механизм обратного давления: в линию отправляется преамбула кадра Ethernet, и тем самым коммутатор «арендует» линию для себя на некоторое время. Опционально KSZ8999I может отбрасывать пакет при обнаружении коллизии 16 раз подряд.
Для защиты от широковещательного «шторма» микросхема KSZ8999I временно перестает рассылать пакеты для всех, если их количество за определенный промежуток времени занимает 5% от выбранной пропускной способности.
В коммутатор заложен ряд дополнительных функций:
- генерация импульсов 125, 62,5, 25 или 10 МГц для стробирования данных;
- автоматическое отключение внутренней схемы отдельного порта при отсоединении кабеля;
- автоматическое согласование параметров сети (Auto-negotiation);
- автоматическое определение прямого или перекрестного кабеля.
Восемь портов коммутатора могут работать по медному кабелю (10BASE-T, 100BASE-TX) или по оптическому волокну (100BASE-FX).
KSZ8999I поддерживает три системы приоритетов для обеспечения качества обслуживания (QoS). К примеру, разработчик может задать более высокий приоритет для пакетов с определенным адресом отправителя или адресом назначения.
Еще одна «способность» коммутатора — поддержка виртуальных локальных сетей VLAN (802.1q). С помощью конфигурации можно назначить VLAN определенным портам KSZ8999I, назначить приоритет по стандарту 802.1p.
Микросхема KSZ8999 выпускается в корпусе PQFP-208. Доступна версия как с коммерческим температурным диапазоном от 0 до +70 °C, так и с расширенным — от –40 до +85 °C (наименование такой микросхемы — KSZ8999I).
Потребляемая мощность чипа в режиме 100BASE-TX — 1,8 Вт (удельная мощность — 0,2 Вт на порт), напряжение питания — от 2 до 2,3 В.
Два режима 9-го порта KSZ8999I
Объединение двух коммутаторов KSZ8999I осуществляется по их девятому порту через интерфейс MII (Media Independent Interface). Стоит напомнить, что MII состоит из интерфейса данных и интерфейса управления. Для приема и передачи данных предусмотрены отдельные параллельные 4-битные шины — RXD [3…0] и TXD [3…0]. Все операции выполняются в синхронном режиме: передача ведется под отрицательные фронты импульсов синхронизации, а прием — под положительные фронты. Тактируются они сигналами TXC и RXC соответственно. Частота синхронизации — 25 МГц для операций 100 Мбит/c [2, 5].
Девятый порт может работать в режиме MAC и в режиме PHY (соответственно режимы Forward MII и Reverse MII). В первом случае коммутатор предполагает присоединенное внешнее PHY-устройство (внешний трансивер), во втором — внешний MAC (например, процессор с MAC). Не лишним будет указать правильное подключение сигналов MII в этих двух режимах для нашего коммутатора и внешнего устройства. В таблице 1 приведены сигналы, когда девятый порт установлен в режим PHY, а в таблице 2 — когда девятый порт находится в MAC-режиме.
Таблица 1. Соединение 9-го порта PHY KSZ8999I и внешнего MAC
Сигналы MII 9-го порта KSZ8999I | Сигналы MII внешнего MAC | Описание |
MTXEN | MTXEN | Разрешение передачи |
MTXER | MTXER | Ошибка передачи |
MTXD[3] | MTXD3 | Передача бит 3 |
MTXD[2] | MTXD2 | Передача бит 2 |
MTXD[1] | MTXD1 | Передача бит 1 |
MTXD[0] | MTXD0 | Передача бит 0 |
MTXC | MTXC | Синхронизация передачи |
MCOL | MCOL | Обнаружение коллизии |
MCRS | MCRS | Опрос несущей |
MRXDV | MRXDV | Достоверный принятый пакет |
Не исп. | MRXER | Ошибка приема |
MRXD[3] | MRXD3 | Прием бит 3 |
MRXD[2] | MRXD2 | Прием бит 2 |
MRXD[1] | MRXD1 | Прием бит 1 |
MRXD[0] | MRXD0 | Прием бит 0 |
MRXC | MRXC | Синхронизация приема |
Таблица 2. Соединение 9-го порта MAC KSZ8999I и внешнего PHY
Сигналы MII 9-го порта KSZ8999I | Сигналы MII внешнего PHY | Описание |
MRXDV | MTXEN | Разрешение передачи |
Не исп. | MTXER | Ошибка передачи |
MRXD[3] | MTXD3 | Передача бит 3 |
MRXD[2] | MTXD2 | Передача бит 2 |
MRXD[1] | MTXD1 | Передача бит 1 |
MRXD[0] | MTXD0 | Передача бит 0 |
MTXC | MTXC | Синхронизация передачи |
MCOL | MCOL | Обнаружение коллизии |
MCRS | MCRS | Опрос несущей |
MTXEN | MRXDV | Достоверный принятый пакет |
MTXER | MRXER | Ошибка приема |
MTXD[3] | MRXD3 | Прием бит 3 |
MTXD[2] | MRXD2 | Прием бит 2 |
MTXD[1] | MRXD1 | Прием бит 1 |
MTXD[0] | MRXD0 | Прием бит 0 |
MRXC | MRXC | Синхронизация приема |
Стоит отметить следующие моменты относительно сигналов MII у коммутаторов:
- В режиме PHY сигналы MTXC и MRXC — выходные, а в режиме MAC они входные.
- Сигналы данных из одного коммутатора в другой передаются совместно с сигналами стробирования, поэтому не нужно тактировать прием и передачу.
- Выходной сигнал MRXER не используется, потому что коммутатор отбрасывает все «битые» пакеты.
- MTXC и MRXC, MCOL, MCRS — это всегда сигналы, поступающие от PHY к MAC.
Объединение двух KSZ8999I
Для объединения двух коммутаторов по MII рекомендуется задать одинаковую конфигурацию. Для удобства в таблице 3 указаны необходимые контакты микросхемы и уровни напряжения. На рис. 3 показана схема соединения по MII. Номера, названия, тип и назначение контактов перечислены в документации на KSZ8999I [8].
Таблица 3. Конфигурация контактов KSZ8999I для соединения по MII
Номер контакта | Название контакта | Тип контакта | Номер порта | Функция при программировании | Функция при работе |
120 | MRXD[3] | Opu | 9 | Задает скорость передачи 9-го порта: 1kpu = 100 Мбит/с | MII, прием бит 3 |
121 | MRXD[2] | Opu | 9 | Задает дуплексный режим 9-го порта: 1kpu = дуплексный | MII, прием бит 2 |
122 | MRXD[1] | Opu | 9 | Управление потоком: 1kpd = есть | MII, прием бит 1 |
123 | MRXD[0] | Opu | 9 | 1kpu = нормальный | MII, прием бит 0 |
141 | LED[6][3] | Ipu/O | 6 | Задает агрессивность обратного давления: 1kpd = менее агрессивное | LED индикатор 3 |
142 | LED[6][2] | Ipu/O | 6 | Задает число коллизий до отброса пакета: 1kpd = отбросить пакет после 16 коллизий | LED индикатор 2 |
162 | MIIS[1] | Ipd | 9 |
Выбор режима порта: MIIS [1:0] 0 1 = Reverse MII 1 0 = Forward MII |
Режим MII бит 1 |
163 | MIIS[0] | Ipd | 9 | Режим MII бит 0 |
Примечание. Opu — выходной контакт со встроенным притягиванием к высокому уровню. Ipu/O — входной контакт со встроенным притягиванием к высокому уровню во время сброса, иначе — выходной контакт. Ipd — входной контакт со встроенным притягиванием к низкому уровню. 1kpu — резистор 1 кОм, притягивающий к высокому уровню. 1kpd — резистор 1 кОм, притягивающий к низкому уровню.
Обратите внимание, что при подключении шины MRXD [3:0] с ее встроенными pull-up резисторами к шине MTXD [3:0] с pull-down резисторами получается неопределенный логический уровень (ближе к низкому уровню). В связи с этим нужно добавить внешние подтягивающие резисторы номиналом 1 кОм — по одному на каждую из четырех линий, итого — восемь резисторов (в обе стороны).
Как проверить? Испытать 16-портовый коммутатор на двух микросхемах KSZ8999I можно, например, соединив две отладочные платы KSZ8999-EVAL (рис. 4).
Необходимо задать одинаковую конфигурацию KSZ8999I на обеих платах, за исключением противоположных режимов девятого порта — Forward MII и Reverse MII. Затем нужно соединить контакты разъемов MII с учетом вышеуказанных рекомендаций. Далее разработчику остается обеспечить питание обеих плат и подключить абонентов. 16-портовый коммутатор 10/100 готов!
Заключение
В статье приведен пример несложной и недорогой разработки коммутатора Ethernet 10/100 на микросхемах KSZ8999I. Основные преимущества такой разработки — во-первых, доступность (как компонентов на складе российского дистрибьютора, так и документации по ним), а во-вторых, невысокая стоимость таких компонентов. Плюс ко всему встроенные трансиверы PHY упрощают разработку изделий и экономят место на плате.
Литература
- Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 3-е изд. СПб.: Питер, 2006.
- Каршенбойм И. Г. Внутриприборный интерфейс на микросхемах фирмы Micrel // Компоненты и технологии. 2009. № 5.
- Варианты организации Ethernet — http://www.eltech.spb.ru/micrel_ethernet.html
- Подключение трансивера Fast Ethernet к медному кабелю — http://www.eltech.spb.ru/micrel_ethernet.html?id=10
- Интерфейс MII — http://www.eltech.spb.ru/micrel_ethernet.html?id=11
- Общие рекомендации по размещению компонентов и дизайну PCB для устройств с Ethernet 10/100 PHY — http://www.eltech.spb.ru/micrel_ethernet.html?id=20
- Пример программирования контроллера, предоставленный фирмой «Метротек», — http://www.eltech.spb.ru/micrel_ethernet.html?id=19
- KS8999 Datasheet — http://www.micrel.com/_PDF/Ethernet/datasheets/ks8999.pdf