Подключение устройства к сети Ethernet

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

Система Краткие пояснения
Система микроконтроллер с ядром MAC + PHY-трансивер К числу таких микроконтроллеров относится  BF537. Общение с трансивером осуществляется по интерфейсу MII. Кроме того, надо будет реализовывать стек протоколов  TCP/IP. Есть  уже готовые варианты микроконтроллеров, имеющие в своем составе Ethernet-порты, например, MCF5282, MCF52232 фирмы Freescale. Но  это весьма дорогостоящий вариант.
Система ARM + PHY-трансивер Несомненным плюсом является возможность установки встроенной операционной системы. Обычно встроенные операционные системы уже умеют работать в сети и позволяют иметь различные сетевые сервисы. Далее, поскольку в этом варианте применяется более производительный процессор, то возможно использование данной системы для высокоскоростной передачи данных. К недостаткам относятся ее относительная дороговизна, а также нужно уметь устанавливать операционную систему на подобные модули, программировать под нее пользовательские задачи и уметь их отлаживать [1].
Система ПЛИС + Ethernet-контроллер Поскольку система будет иметь под собой аппаратную платформу, то это обеспечит высокие скорости обработки информации и следовательно высокоскоростную передачу. Но написание программы, особенно на языке высокого уровня, таком как Verilog,  представляется весьма неудобным.
Система MAC-ядро на основе ПЛИС + PHY-трансивер Такой вариант может дать значительный выигрыш по производительности  по сравнению с рассмотренными выше решениями, но также потребует от разработчика большого опыта.
Система Ethernet-контроллер (с MAC) + PHY-трансивер Существуют специальные сетевые  Ethernet-контроллеры, включающие в себя MAC-ядро. В таком случае возникает лишь необходимость добавления в схему трансивера физического уровня. Примерами таких микросхем могут служить котроллеры  корейской компании WIZnet W3100A и W3150A.
Система Ethernet-контроллер (с MAC и PHY) Ранее выпускались сетевые контроллеры, реализующие физический или физический плюс канальный уровень логической структуры OSI, а все вышележащие уровни реализовывались программно. Примеры: Realtek RTL8201BL и RTL8201CP, Davicom DM9616AE, Silabs CP2200 и CP2201, Microchip ENC28J60. Хотя драйверы обычно лежат в свободном доступе на сайтах производителей, данное направление возлагает на программиста сравнительно большую нагрузку по реализации стека протоколов TCP/IP.
Не так давно появились в производстве сетевые контроллеры, реализующие аппаратно четыре уровня модели OSI (физический, канальный, сетевой и транспортный) и имеющие в своем составе MAC и PHY подуровни. К подобным разработкам относятся Ethernet-контроллеры компании WIZnet, такие как W5100, W5300.

 

Почему именно микросхема компании WIZNET W5300?

Она имеет:
а) аппаратно реализованный стек протоколов TCP/IP,
б) параллельную 8/16-битную шину данных для обмена информацией с управляющим процессором (УП),
в) максимальная скорость обмена данными составляет почти 50 Мбит/с.
г) встроенный PHY-трансивер (трансивер физического уровня),
д) внутреннюю память приемопередатчика 128 Кбайт.

Аппаратно реализованный стек протоколов TCP/IP говорит нам о том, что не придется мучительно долго программировать нижние уровни модели OSI, т.е. заниматься формированием Ethernet-фрейма, ARP-, ICMP-, IP-, UDP-, TCP-пакетов, подсчетом контрольных сумм, что в значитльной степени не только упростит процесс разработки, но и ускорит его.
Параллельная шина данных значительно ускорит процесс начальной инициализации сетевого контроллера и передачи данных.
А благодаря встроенному трансиверу физического уровня не придется ставить отдельную микросхему трансивера PHY (Physical layer).
Часто при посылке информации возникает необходимость достаточного объема памяти для накапливания принятых пакетов, именно для этого в W5300 предусмотрены 128 кБайт.
Для совместимости с современными малопотребляющими микроконтроллерами напряжение питания W5300 сделано равным 3,3 В, но это не мешает ей работать с системами с напряжением питания 5 В, потому что ее подсистема ввода/вывода может корректно воспринимать такое напряжение.
Сейчас достаточно распространен контроллер ENC28J60, на него вы можете найти в интернете множество статей. НО, ENC28J60 реализует только физический уровень модели OSI. А W5300 аппаратно реализует четыре уровня OSI: физический, канальный, сетевой, транспортный. Обмен данными с МК в ENC28J60 происходит по SPI, а в W5300 по 8- или 16-разрядной шине данных, что дает возможность добиться более высоких скоростей. Ну кроме того, количество багов в контроллере ENC28J60 оставляет желать лучшего. Хотя для изготовления платы в домашних условиях ENC28J60 более удобен, ведь он имеет 28 ног, а W5300 – 100. В любом случае выбор за вами.

Ниже приведена структурная схема контроллера W5300:

Wiznet STM32

Кроме всего прочего у W5300 имеется возможность изменения разрядности шины данных. Она может быть 8 или 16 в зависимости от подключения ножки BIT16EN.

Также существуют два способа обращения к памяти контроллера: прямой и косвенный. При прямом способе используются 9 или 10 разрядов шины адреса, 9 — при 16-битной шине данных и 10 — при 8-битной. При косвенной адресации всего 2 или 3; 2 — при 16-битной шине данных и 3 — при 8-битной. Так что если мы хотим сэкономить линии, то нам необходима косвенная адресация, но при этом надо помнить, что скорость разумеется уменьшится.

Итак, прямая адресация, 16-битная шина данных:

Прямая адресация, 8-битная шина данных:

Косвенная адресация, 16-битная шина данных:

Косвенная адресация, 8-битная шина данных:

Да и еще, если кого интересует, существует возможность подключения внешнего PHY.
Фирма Wiznet выпускает готовые модули на основе разработанных ими контроллеров, процессоров. Одним из таких готовых решений является сетевой модуль WIZ830MJ. В своем составе WIZ830MJ уже имеет контроллер W5300, всю надлежащую обвязку и розетку MacJack, содержащую трансформаторы. Модуль удобно использовать как компонент для ускоренной разработки сетевых приложений. Он имеет разъемы для установки его на базовую плату. Принципиальную схему модуля можно найти на сайте производителя.
И вообще на этом сайте вы сможете скачать всю документацию по интересующим вас продуктам www.wiznet.co.kr.
На базе сетевого сетевой модуль WIZ830MJ и микроконтроллера фирмы Atmel Atmega128 сделана схема Ethernet-адаптера.

Wiznet и Atmega128

Wiznet и Atmega128

Плата для управления модулем:

Для осуществления более высокоскоростной передачи можно будет в дальнейшем заменить 8-битный микроконтроллер на ПЛИС (чем собственно говоря я сейчас и занимаюсь, но об этом я постараюсь рассказать попозже). А пока займемся подключением W5300 к Atmega128. В следующей статье будет рассказано о регистрах сетевого контроллера W5300.

Список литературы

  1. Иосиф Каршенбойм. Двухканальные Ethernet контроллеры-коммутаторы KSZ8842 и KSZ8862. Chip News. 2006, №8, С. 24
  2. Иосиф Каршенбойм. Контроллеры Fast Ethernet для встроенных применений. Компоненты и технологии, 2003, №5, С. 12