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

Реализация TCP/IP с DHCP на SV

Всем привет! Вашему вниманию и критике представляю стек TCP/IP (IPv4) стек с DHCP. Работает как на Intel, так и на Xilinx, на ПЛИС других производителей не тестировал. Описание будет дополняться. Ищу помощи в поиске багов, некорректного/неэффективного описания логики. Разработка в основном велась на Cyclone 10 LP Evaluation Kit. https://github.com/hypernyan/eth_vlg

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

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


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

Добрый совет: не используйте инстанцирование компонентов через (.*). Это реальная обфускация кода.

Тем, кто протащил эту шнягу в стандарт, 10 лет расстрела.

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


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

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 вы пользовались?

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


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

13 hours ago, gin said:

И если не секрет конечно, то какой литературой помимо стандарта по TCP вы пользовались?

можно почитать азы, любые внятные статьи в инете. Потом посниффить трафик своих сокетов, воссоздать в fpga. Ну а потом уже можно и стандарт открыть, там уже нюансов много раскрывается.

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

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


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

Приветствую!

On 2/27/2021 at 2:42 PM, poehavshiy said:

Всем привет! Вашему вниманию и критике представляю стек TCP/IP (IPv4) стек с DHCP.

Respect! Солидный объем работы.   

Основная сложность  таких вещей это вычитка всех этих мозго-дробильных стандартов и тяжкий выбор что нужно реализовывать, а что нет. Чтобы быть хоть как то совместимым с внешним миром. Ну и 75%  времени уходит на разработку проверок и тестов. 

 

Успехов!  Rob.

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


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

По названиям файлов трудно отследить структуру. Например, в папке 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" обязательно ресетить?

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


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

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" обязательно ресетить?

Действительно необязательно, в следующей ревизии уберу лишние линии сброса, посмотрю, как изменилась утилизация.

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


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

On 3/5/2021 at 9:50 PM, poehavshiy said:

Действительно необязательно, в следующей ревизии уберу лишние линии сброса, посмотрю, как изменилась утилизация.

Измениться может не только и возможно не столько утилизация, но и максимальная частота проекта. В целом это такое хорошее правило - ресетить только то, что нужно. Может помочь при реализации сложных проектов, когда будет немного не хватать мегагерц.

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


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

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 для быстрой проверки

описать порты вход/выход по возможности...

 

 

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


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

В дополнение:

Мне кажется импорт  структур лучше производить в заголовке модуля, что-то вроде:

module arp_vlg_tx

import arp_vlg_pkg::*;

#(parameter ...)

(input logic ...

);

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

P.S. Добавьте  assertion и формальной верификации. Это покажет работу с гораздо лучшей стороны и поможет самим верифицировать проект, без привлечения тестовых последовательностей.

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


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

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

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

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

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

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

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

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

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

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