Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ETH1000MAC
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
BSACPLD
Написал тут недавно Ethernet MAC. Теперь хочу провести небольшое тестирование. Приглашаю всех желающих.
Характеристики проекта:
1. Поддержка 10/100/1000 Full-Duplex.
2. Автоматическое определение типа пакета: broadcast, multicast, unicast.
3. Аппаратная проверка IP заголовка и контрольных сумм для IPv4 (ICMP, UDP).
4. Аппаратная генерация контрольных сумм для ICMP и UDP.
5. Отдельный контроллер MDIO с поддержкой автоматического определения скорости подключения (10/100 или 1000) для M88E1111.
Во вложении исходные коды и краткое описание портов и регистров.
Koluchiy
А Jumbo оно у Вас поддерживает?
BSACPLD
Цитата(Koluchiy @ Oct 8 2011, 10:44) *
А Jumbo оно у Вас поддерживает?

Да. Я не ставил ограничение на размер пакета.
Размер приёмного буфера задаётся здесь:
Код
ETH1000RXFIFO            #(
                        .WIDTH (10),
                        .SIZE (8192),
                        .DEVICE_FAMILY (DEVICE_FAMILY),
                        .RAM_TYPE (RAM_TYPE),
                        .NUM_SYNC (3)
                        )
x736C
Здравствуйте.
Поддерживает ли ядро pause или backpressure? И вообще что произойдет в случае переполнения буфера?
BSACPLD
Цитата(x736C @ Oct 11 2011, 10:07) *
Поддерживает ли ядро pause или backpressure?

А что это такое?
Цитата(x736C @ Oct 11 2011, 10:07) *
И вообще что произойдет в случае переполнения буфера?

Если свободного места в буфере недостаточно для хранения принимаемого пакета, то данный пакет выкидывается, а указатель приёмного FIFO возвращается на конец последнего принятого пакета.
des00
Цитата(BSACPLD @ Oct 11 2011, 05:54) *
А что это такое?

pause фреймы для аппаратного flow_control
BSACPLD
Коллеги, кто-нибудь уже успел протестировать? Очень прошу писать здесь о результатах.
Я нашёл ошибку в расчёте контрольной суммы для UDP. Исправленный вариант во вложении.
almost
А CRC как считаете? По всем правилам или по "кандовому" одним вычитанием?)
Какая связь с PHY - RGMII?
SFx
Поглядел код, чуточку, сразу бросилось в глаза жесткая привязка к месту CRC в UDP. Что же будет с пакетом, у которого в IP заголовке поля Options вдруг появятся ?
(хотя, может быть я конечно не до конца "воткнул" в код, но все равно над таким вопросом стоит задуматься хоть раз))) )
BSACPLD
Цитата(almost @ Oct 27 2011, 16:08) *
А CRC как считаете? По всем правилам или по "кандовому" одним вычитанием?)
Какая связь с PHY - RGMII?

CRC32 считаю с помощью http://www.easics.be/webtools/crctool
Checksum считаю суммированием с учетом циклического переноса (взято из RFC1071).
Связь с PHY через MII/GMII (переключается с помощью сигнала set_1000).

Цитата(SFx @ Oct 28 2011, 00:25) *
Поглядел код, чуточку, сразу бросилось в глаза жесткая привязка к месту CRC в UDP. Что же будет с пакетом, у которого в IP заголовке поля Options вдруг появятся ?
(хотя, может быть я конечно не до конца "воткнул" в код, но все равно над таким вопросом стоит задуматься хоть раз))) )

Привязка действительно жёсткая. Просто в большинстве применений поле Options отсутствует. Если придёт пакет с опциями, т.е. с длиной не равной 0x45, то он будет отброшен. Если нужно принимать пакет с опциями, то аппаратную проверку придётся отключить и проверять пакеты программно.

P.S. Нашёл ещё несколько ошибок. Исправление во вложении.
SFx
Цитата(BSACPLD @ Oct 28 2011, 10:43) *
Привязка действительно жёсткая. Просто в большинстве применений поле Options отсутствует. Если придёт пакет с опциями, т.е. с длиной не равной 0x45, то он будет отброшен. Если нужно принимать пакет с опциями, то аппаратную проверку придётся отключить и проверять пакеты программно.

А что мешает вам брать второй нибл из первого байта IP Заголовка и делать в соответствии с ним поправку ? ( если 0x45 то +20, если 0ч46 то +24 и так далее... или просто брать и сдвигать налево на два бита...)
Кстати, а как дела обстоят с VLANами?

P.S. очень рад что Вы делаете это проект и делитесь исходниками. это безусловно кому то когда то поможет!
BSACPLD
Цитата(SFx @ Oct 29 2011, 15:03) *
А что мешает вам брать второй нибл из первого байта IP Заголовка и делать в соответствии с ним поправку ? ( если 0x45 то +20, если 0ч46 то +24 и так далее... или просто брать и сдвигать налево на два бита...)
Кстати, а как дела обстоят с VLANами?

P.S. очень рад что Вы делаете это проект и делитесь исходниками. это безусловно кому то когда то поможет!

Просто сразу не подумал о такой возможности.
С VLAN дела пока никак.
AlphaMil
Очень интересно. Жаль написано на SV и под Альтеру...
Вот бы под Xilinx....
BSACPLD
Цитата(AlphaMil @ Dec 17 2011, 23:38) *
Очень интересно. Жаль написано на SV и под Альтеру...
Вот бы под Xilinx....

По поводу Xilinx:
SV - используйте Synplify
Модули, сделанные с помощью мегафункций, замените на такие же сгенерённые Core Generator'ом.
AlphaMil
К сожалению опыта использования Synplify нет. Да и Ethernet - это только капля всего проекта. Основная и главная часть совсем в другом...
Пока мучаюсь и пишу свой контроллер с урезанными функциями.
VladimirB
Цитата(AlphaMil @ Dec 18 2011, 15:09) *
К сожалению опыта использования Synplify нет. Да и Ethernet - это только капля всего проекта. Основная и главная часть совсем в другом...Пока мучаюсь и пишу свой контроллер с урезанными функциями.

Зачем же мучаться - если в закромах лежит ядро TEMAC от ментора - в исходниках на обычном верилоге, с подробным описанием.
Я не специалист в верилоге - и то запустил это ядро за 2 дня на ксилинке.
50 постов у вас есть - ждите когда закрома починят и вперёд.
COMA
Можно подробнее? Где лежит?
Sergey_Bekrenyov
Не буду первым и оригинальным, кто рекламирует МАС от ккитайца c opencores. Запустил для изучения на Atlys, потом весь поток загнал через USB в компьютер - пишу фрэймы в файлы, которые понимает WireShark. Потихоньку разбираюсь ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.