Ethernet II или сырые Ethernet пакеты на Nios II Altera часть 4

Сырые Ethernet пакеты на Nios IIВ этом посте о том как запустить на железе проект Ethernet трансивера и пронаблюдать все в действии. Для этой цели понадобятся по крайней мере две программы. Одна из них это Packet/Traffic Generator and Analyzer Ostinato, другая - общеизвестный анализатор траффика Wireshark. С помощью первой программы можно создать малоформатный пакет и посылать его из компа на Ethernet трансивер на Nios II, а с помощью второй можно анализировать принятые на комп 'сырые' пакеты формата Ethernet II объемом 1168 байт.

Программы нужно установить и настроить для работы с Ethernet трансивером на Nios II. Если Wireshark особо настраивать не надо, то Ostinato нужно немного подстроить. В частности в Ostinato нужно создать малоформатный пакет на передачу. На картинке показано содержимое пакета.

Малоформатный Ethernet пакет на Ostinato

MAC адрес назначения 0х010101010101 приема 0х020202020202 и формат пакета - 0х2321 Ethernet II. Это понадобится для того, чтобы послав на наш Ethernet модуль на Nios II данный пакет убедиться, что модуль примет пакет и правильно на него отреагирует.

Итак запускаем Ostinato, создаем stream под Ethernet карту компа, включаем питание Ethernet модуля на Nios II и выполняем последовательно несколько операций:

Создание stream на Ostinato

1 - запустить Quartus и в нем проект NiosEthOcm.qpf; 2 - запустить SOPS Builder в главном меню Quartus Tools/SOPS Builder; 3 - запустить через SOPS Builder Nios II в главном меню Altera SOPS Builder Tools/Nios II IDE; 4 - Если в Nios II не создано Workspace c программой Ethernet трансивера то создать его выполнив из IDE Nios II команду File->Switch Workspase... указав в качестве дирктории рабочего пространства папку с проектом NiosEthOcm_Quartus90; 5 - далее настраиваем IDE Nios II для работы через JTAG, запускаем проект из среды Nios II как показано на картинке.

Запуск проекта на Nios II

В результате появится панель программатора где нужно выбрать файл конфигурации NiosEthOcm.sof, тоесть процессор Nios II с примочками, и загрузить его в DE0 Board;

Загрузка конфигурации Nios II в ПЛИС

6 - Далее нужно запустить программу Wireshark в режиме захвата пакетов формата Ethernet II на карту компа куда подключен модуль на DE0, и в IDE Nios II еще раз выполнить команду Run.

В результате в sdram DE0 будет загружена программа и запущена на выполнение. Вначале все будет находиться в заторможенном состоянии до тех пор пока Ostinato не пошлет на DE0 малоформатный пакет путем нажатия на кнопку Start

Старт передачи из Ostinato

Приняв пакет программа Ethernet модуля на DE0 установит признак разрешения передачи и начнет передавать на комп пакеты объемом 1168 бай, что и будет фиксировать Wireshark.

Регистрация Ethernet пакетов формата Ethernet II

Ну вот собственно и все, что хотелось бы сообщить уважаемому сообществу программистов и электронщиков по поводу 'сырых' Ethernet пакетов формата Ethernet II на базе ПЛИС Altera + Nios II.

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

При создании проекта встречались различного рода проблемы, преодолевать которые помогали Вадим Котельников и Иосиф Каршенбойм. Комменты и замечания по теме проекта принесут ему только пользу.


Как продолжение темы
Как продолжение темы FPGA + Nios II о том как запрограммировать последовательную конфигурационную ПЗУ аппаратным и программным кодом проекта http://acvarif.info/artplis/artplis3.html

2013 02 06 10:03:15  Добавил:   Admin


А что за адрес ETH_OCM_0_BASE
Здравствуйте. А что за адрес ETH_OCM_0_BASE? Никак откомпилировать проект не могу.

2013 04 23 10:56:53  Добавил:   Ал


ETH_OCM_0_BASE это базовый адрес
ETH_OCM_0_BASE это базовый адрес компонента ETH_OCM в SOPC системе. Название формируется автоматически (или вручную) при создании SOPC системы если в нее включен компонент Ethernet MAC под названием ETH_OCM.

2013 04 23 02:41:21  Добавил:   Admin


Подскажите люди добрые как реализовать
Подскажите люди добрые как реализовать то что описано в конце статьи: обработка данных на PC, основываясь на этом примере и не лазя в код IP ядра. В примере берутся рандомные данные в виде массива символов, сформированные в ниосе, а как организовать передачу данных из \"железа\"? Чем обрабатывать принятые пакеты на PC?
Еще в статье не очень понятно как анализировать принятые пакеты - в проекте только смотрится количество байт в пакете, а хотелось бы и сами данные извлечь :)
Кланяюсь за проделанную работу :)
Пару советов для новичков, с которыми мне было бы проще собрать все это. Ссылка на МАС ядро с оpencores в статье на оригинальное ядро для wishbone шины. В статье используется переделанное ядро для аvalon \"eth_ocm\": eth_ocm
Оригинальную тоже надо скачать - там полное описание ядра.
В статье нет прямой ссылки на файл eth_driver.h. Он нужен работы кода, приведенного (с одной ошибкой) в статье, так что сразу качайте проект целиком. По поводу схемы SOPC, если не очень много опыта, достаточно 4-х компонент: cpu, ddr, jtag-uart (uart), eth_ocm. В этом случае тактировать можно частотой от ddr - 125MHz (cpu, eth_ocm), uart я питал половинной - 62,5МГц.

2014 01 31 09:43:40  Добавил:   Andr


Автору огромное спасибо за статью!
Автору огромное спасибо за статью! Многое для себя прояснил. Но всё же осталось несколько не совсем прозрачных моментов:
1) как в Ostinato задать формат пакета? (прошу прощения за глупый вопрос, но вроде в настройках всё потрогал, а ожидаемого 0х2321 так и не получил)
2) не совсем всё ясно с соединением ног ПЛИС. У меня stratix III и просто передрать с готового проекта не могу, а если по аналогии для своей платы соединяю нужные ножки, которые создал Qsys, то \"махарайка\" не запускается...

2014 03 26 08:58:08  Добавил:   Muklyxa


   Всего комментариев: 5

* Заполните все поля
* Тема

* Ваше имя

* Ваш email: (нигде не публикуется)

*Новость (реплика)

Введите код подтверждения с картинки (проверка от автороботов):

 

email при указании не будет опубликован. Адреса с http:// преобразуются в ссылки автоматически. Теги запрещены.
Перейти и растаять в своей любимой социалке