Jump to content

    

Recommended Posts

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

Edited by poehavshiy

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
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 вы пользовались?

Share this post


Link to post
Share on other sites
13 hours ago, gin said:

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

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

Edited by new123

Share this post


Link to post
Share on other sites

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

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

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

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

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

 

Успехов!  Rob.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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" обязательно ресетить?

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

Share this post


Link to post
Share on other sites
On 3/5/2021 at 9:50 PM, poehavshiy said:

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

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

Share this post


Link to post
Share on other sites
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 для быстрой проверки

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

 

 

Share this post


Link to post
Share on other sites

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

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

module arp_vlg_tx

import arp_vlg_pkg::*;

#(parameter ...)

(input logic ...

);

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.