Перейти к содержанию
    

rx_clk короче чем rx_d

должно быть наоборот, см. аттач

 

tx_en в нуле а вот с tx_d самая проблема, эти сигналы всегда висят в нуле, это видно в сигналтабе, я их смотрю непосредственно как выход модуля tse.

в сигналтапе их вы напрямую не увидите - это шина ddr. компилятор их тупо выкинет с соответствующим ворнингом. посмотреть txd можно на входе ddr-регистра, либо осциллографом

RGMII_Timing_Solutions.pdf

Data_Skew_Information.7z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем доброго дня. Возникла проблема с эзернетом от opencores, раньше использовал это ядро- такого не было.

 

Инициализирую PHY, линк есть, инициализирую MAC теми же значениями что и в предыдущем проекте. Регистрирую прерывание на прием пакетов, завожу один дескриптор на прием, указываю там буфер.

В результате когда делаю пинг процессор попадает в прерывание по приему, читает источник IRQ и вместо бита RXC (принят пакет) или RXE (ошибка) вижу установленный бит BUSY :

 

This bit indicates that a buffer was received and discarded due to a lack of

buffers. It is cleared by writing 1 to it. This bit appears regardless to the

IRQ bits in the Receive or Transmit Buffer Descriptors.

 

Читаю регистр CTRL дескриптора функцией IORD_ETH_OCM_DESC_CTRL(ETH_OCM_0_BASE, 1) - получаю значение 0xe000, установленные биты означают:

 

- The data buffer is empty (and ready for receiving data) or currently

receiving data.

- When data is received (or error occurs), an RXF interrupt will be

asserted (See 3.2 INT_SOURCE (Interrupt Source Register) for more

details).

- This buffer descriptor is the last descriptor in the buffer descriptor table.

After this buffer descriptor is used, the first Rx buffer descriptor in the table

will be used again.

 

Указатель на буфер в регистре правильный.

 

Что смотреть и куда копать - думаю, а пока решил спросить...

 

Раньше это ядро запускал на Q9.1 - сходу заработало, никаких проблем не было. Сейчас запускаю в QSYS на Q13.1.

 

UPD: прочитал еще doc-файл по авалон-интерфейсу, там написано что бит BUSY ставится при переполнении фифо на RX. Похоже действительно фифо переполняется, а прерывания по приему пакета не идут, только по переполнению фифо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый вечер , никто на форуме не запускал аппаратно под новый Quartus 13.1 или 14 проект UDP offload example. http://www.alterawiki.com/wiki/Nios_II_UDP_Offload_Example

Плата основана на Cyclone 4 , имеет SDRAM , вместо DDR SDRAM 2. Я так понимаю на TSE также нужно покупать лицензию , ну или лечить.

Микросхема dp83640 с интерфейсом rmii. На форуме альтеры также нашёл переходник mii to rmii.

Qsys + переходник

TSE_Ethernet.rar

Изменено пользователем everest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый вечер , никто на форуме не запускал аппаратно под новый Quartus 13.1 или 14 проект UDP offload example. http://www.alterawiki.com/wiki/Nios_II_UDP_Offload_Example

Плата основана на Cyclone 4 , имеет SDRAM , вместо DDR SDRAM 2. Я так понимаю на TSE также нужно покупать лицензию , ну или лечить.

Микросхема dp83640 с интерфейсом rmii. На форуме альтеры также нашёл переходник mii to rmii.

Qsys + переходник

А какие у Вас вопросы? Я свой проект с TSE v14.0 запускал, счас уже всё работает. Основная проблема оказалась в неправильном подключении TSE. После изменения его интерфейса подключения неправильно понял назначение портов и не работало, пока не залез внутрь TSE и не разобрался - что и куда надо подключать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какие у Вас вопросы? Я свой проект с TSE v14.0 запускал, счас уже всё работает. Основная проблема оказалась в неправильном подключении TSE. После изменения его интерфейса подключения неправильно понял назначение портов и не работало, пока не залез внутрь TSE и не разобрался - что и куда надо подключать.

 

Взял готовый проект с сайта AlteraWiki.

Собрал все в qsys. При компиляции в Eclipse выдаёт следующие ошибки.

 

Description    Resource    Path    Location    Type
make: *** [tut_app.elf] Error 1    tut_app             C/C++ Problem
undefined reference to `install_menu'    demo_control.c    /tut_app    line 96    C/C++ Problem
undefined reference to `stooges'    tut_app        line 0    C/C++ Problem

 

http://www.alteraforum.com/forum/showthread.php?t=30536

http://www.alteraforum.com/forum/showthread.php?t=45601

 

В чём может быть проблема?

Изменено пользователем everest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Взял готовый проект с сайта AlteraWiki.

Уберите из проекта всё лишнее, оставте сам процессор, память, TSE, SgDMA TX, SgDMA RX, descriptor_memory. Разберитесь с работой SgDMA (выше в теме был пример) и конфигурацией TSE.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уберите из проекта всё лишнее, оставте сам процессор, память, TSE, SgDMA TX, SgDMA RX, descriptor_memory. Разберитесь с работой SgDMA (выше в теме был пример) и конфигурацией TSE.

 

Спасибо за ответ.

Как раз таки это все заработало на 11-ой версии Quartus на примере веб-сервера. (UCOS + NicheStack)

Затем и lwip прикрутил без ос. Правда lwip + FreeRTOS так и не запустился, но это уже другая история...

 

Интересовала именно аппаратная реализация UDP с кучей второстепенных блоков.

Не очень понятна разница между данной версией на сайте альтеры и реализацией UDP у уважаемого vadimuzz, ужатого в один блок.

Вроде бы и все ветки на форуме перечитал, посвящённые аппаратной реализацией udp протокола.

Видимо я не очень-то хорошо разобрался , пойду дальше изучать.

Изменено пользователем everest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересовала именно аппаратная реализация UDP с кучей второстепенных блоков.

Не очень понятна разница между данной версией на сайте альтеры и реализацией UDP у уважаемого vadimuzz, ужатого в один блок.

Формирование UDP-пакета (аппаратное) реализует один блок - udp_offload, всё остальное вспомогательные модули. На udp_offload подаются данные, он добавляет UDP-шапку и выдаёт на TSE, если работает несколько передатчиков - тогда на MAC заводятся через мультиплексор. Я его (udp_offload) допиливал под себя, чтобы была возможность посылать фрагментированный пакет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Формирование UDP-пакета (аппаратное) реализует один блок - udp_offload, всё остальное вспомогательные модули. На udp_offload подаются данные, он добавляет UDP-шапку и выдаёт на TSE, если работает несколько передатчиков - тогда на MAC заводятся через мультиплексор. Я его (udp_offload) допиливал под себя, чтобы была возможность посылать фрагментированный пакет.

 

Стало более яснее, то есть по идее можно сделать на примере alterawiki и примера vadimuzz такой же блок (например udp_rx_offload) , но для приёма и обработки UDP пакета и при необходимости добавить демультиплексор.

Естественно придётся писать драйвер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Стало более яснее, то есть по идее можно сделать на примере alterawiki и примера vadimuzz такой же блок (например udp_rx_offload) , но для приёма и обработки UDP пакета и при необходимости добавить демультиплексор.

Естественно придётся писать драйвер.

Пример vadimuzz достаточен, чтоб запустить аппаратное формирование UDP и выдачу в сеть. По поводу приёма не понял, Вам нужен приёмник на логике?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пример vadimuzz достаточен, чтоб запустить аппаратное формирование UDP и выдачу в сеть. По поводу приёма не понял, Вам нужен приёмник на логике?

 

Да именно, было бы интересно сделать(переделать) аппаратный приём и обработку UDP пакетов на основе того же примера с сайта альтеры_вики.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да именно, было бы интересно сделать(переделать) аппаратный приём и обработку UDP пакетов на основе того же примера с сайта альтеры_вики.

Но если нужен даже минимальный стек IP протоколов, то реализовать аппаратно будет непростая задача.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые гуру, помогите, пожалуйста, с проблемкой =)

 

Имеется кит на Stratix 3 с 88е1111.

В идеале нужно сделать UDP с обменом по SGMII.

 

Что получилось:

Конфиг через MDIO, связь через MII. Проблем нет, пакеты отправляются, принимаются.

 

Т. к. я раньше не имел дело с SGMII решил использовать TSE. В перспективе в Qsys, но т.к. с SGDMA опять же не встречался, решил сначала запустить TSE без NIOS.

И тут затык =(

TSE сконфигуринован на small 10/100MAC.

На входы вроде подаю правильно, а он молчит.

В какую сторону копать?

post-71932-1438944696_thumb.png

post-71932-1438944722_thumb.png

post-71932-1438944726_thumb.png

 

clock - 50 МГц

Изменено пользователем Unfog

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...