poehavshiy 0 27 февраля, 2021 Опубликовано 27 февраля, 2021 (изменено) · Жалоба Всем привет! Вашему вниманию и критике представляю стек TCP/IP (IPv4) стек с DHCP. Работает как на Intel, так и на Xilinx, на ПЛИС других производителей не тестировал. Описание будет дополняться. Ищу помощи в поиске багов, некорректного/неэффективного описания логики. Разработка в основном велась на Cyclone 10 LP Evaluation Kit. https://github.com/hypernyan/eth_vlg Изменено 27 февраля, 2021 пользователем poehavshiy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 27 февраля, 2021 Опубликовано 27 февраля, 2021 · Жалоба Добрый совет: не используйте инстанцирование компонентов через (.*). Это реальная обфускация кода. Тем, кто протащил эту шнягу в стандарт, 10 лет расстрела. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 28 февраля, 2021 Опубликовано 28 февраля, 2021 · Жалоба Можно расти дальше, делать поддержку VLAN в пакетах =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gin 0 28 февраля, 2021 Опубликовано 28 февраля, 2021 · Жалоба 27.02.2021 в 16:42, poehavshiy сказал: Всем привет! Вашему вниманию и критике представляю стек TCP/IP (IPv4) стек с DHCP. Работает как на Intel, так и на Xilinx, на ПЛИС других производителей не тестировал. Описание будет дополняться. Ищу помощи в поиске багов, некорректного/неэффективного описания логики. Разработка в основном велась на Cyclone 10 LP Evaluation Kit. https://github.com/hypernyan/eth_vlg Реализация TCP на FPGA - это, на мой скромный взгляд, очень достойный результат. Думаю, что многим эта вещь будет интересна. И если не секрет конечно, то какой литературой помимо стандарта по TCP вы пользовались? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 1 марта, 2021 Опубликовано 1 марта, 2021 (изменено) · Жалоба 13 hours ago, gin said: И если не секрет конечно, то какой литературой помимо стандарта по TCP вы пользовались? можно почитать азы, любые внятные статьи в инете. Потом посниффить трафик своих сокетов, воссоздать в fpga. Ну а потом уже можно и стандарт открыть, там уже нюансов много раскрывается. Изменено 1 марта, 2021 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 1 марта, 2021 Опубликовано 1 марта, 2021 · Жалоба Приветствую! On 2/27/2021 at 2:42 PM, poehavshiy said: Всем привет! Вашему вниманию и критике представляю стек TCP/IP (IPv4) стек с DHCP. Respect! Солидный объем работы. Основная сложность таких вещей это вычитка всех этих мозго-дробильных стандартов и тяжкий выбор что нужно реализовывать, а что нет. Чтобы быть хоть как то совместимым с внешним миром. Ну и 75% времени уходит на разработку проверок и тестов. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 4 марта, 2021 Опубликовано 4 марта, 2021 · Жалоба По названиям файлов трудно отследить структуру. Например, в папке ipv4 есть файл с названием ipv4_vlg_top.sv. Понятно, что это файл верхнего уровня для ipv4. А в папке arp файла с *top* нет, поэтому можно только догадываться, что для arp файл верхнего уровня - это arp_vlg.sv И по всему проекту - предположительно файл верхнего уровня это eth_vlg.sv. Но думаю, если бы там было дополнение *top*, было бы очевидней. На мой взгляд, ресетятся некоторые сигналы, которые можно не ресетить. Например, в модуле arp_vlg_tx: if (fsm_rst) begin fsm <= arp_idle_s; byte_cnt <= 0; mac.strm.val <= 0; done <= 0; busy <= 0; mac.strm.sof <= 0; mac.strm.eof <= 0; data <= 0; mac.meta <= 0; mac.rdy <= 0; end Такие регистры как "data" обязательно ресетить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
poehavshiy 0 5 марта, 2021 Опубликовано 5 марта, 2021 · Жалоба On 3/4/2021 at 12:12 PM, attaboy said: По названиям файлов трудно отследить структуру. Например, в папке ipv4 есть файл с названием ipv4_vlg_top.sv. Спасибо! Согласен, без описания сложно разобраться, но в данном проекте модуль верхнего уровня обработчика конкретно ipv4 проткола называется ipv4_vlg, по аналогии с другими обработчиками. ipv4_vlg_top содержит в себе все протоколы, работающие поверх ipv4, имеет тот же уровень в иерархии, как arp_vlg. On 3/4/2021 at 12:12 PM, attaboy said: Такие регистры как "data" обязательно ресетить? Действительно необязательно, в следующей ревизии уберу лишние линии сброса, посмотрю, как изменилась утилизация. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
attaboy 0 9 марта, 2021 Опубликовано 9 марта, 2021 · Жалоба On 3/5/2021 at 9:50 PM, poehavshiy said: Действительно необязательно, в следующей ревизии уберу лишние линии сброса, посмотрю, как изменилась утилизация. Измениться может не только и возможно не столько утилизация, но и максимальная частота проекта. В целом это такое хорошее правило - ресетить только то, что нужно. Может помочь при реализации сложных проектов, когда будет немного не хватать мегагерц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 9 марта, 2021 Опубликовано 9 марта, 2021 · Жалоба On 2/27/2021 at 3:42 PM, poehavshiy said: Всем привет! Вашему вниманию и критике представляю стек TCP/IP (IPv4) стек с DHCP. Работает как на Intel, так и на Xilinx, на ПЛИС других производителей не тестировал. Описание будет дополняться. Ищу помощи в поиске багов, некорректного/неэффективного описания логики. Разработка в основном велась на Cyclone 10 LP Evaluation Kit. https://github.com/hypernyan/eth_vlg Respect! возможно стоит выложить готовый Ваш проект для Cyclone 10 LP Evaluation Kit. - отдельно и дать к нему скрин по утилизвции логики и тому подобное возможно выложить отдельно варинт loopback для быстрой проверки описать порты вход/выход по возможности... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lexx 0 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба В дополнение: Мне кажется импорт структур лучше производить в заголовке модуля, что-то вроде: module arp_vlg_tx import arp_vlg_pkg::*; #(parameter ...) (input logic ... ); Причина: после импорта package будет проинициализирован во всех файлах после первого. В таком случае возможен вариант перезаписи уже существующих структур данных. Проще это делать внутри модуля, но тогда порты не смогут использовать готовые структуры. Решением как раз будет являться закидываением его в заголовок модуля, такти образом он будет существовать только внутри данного конкретного модуля. P.S. Добавьте assertion и формальной верификации. Это покажет работу с гораздо лучшей стороны и поможет самим верифицировать проект, без привлечения тестовых последовательностей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться