|
ETH1000MAC, Проект 10/100/1000 MAC |
|
|
|
Oct 7 2011, 12:23
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Написал тут недавно 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. Во вложении исходные коды и краткое описание портов и регистров.
|
|
|
|
|
Oct 8 2011, 07:22
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Цитата(Koluchiy @ Oct 8 2011, 10:44)  А Jumbo оно у Вас поддерживает? Да. Я не ставил ограничение на размер пакета. Размер приёмного буфера задаётся здесь: Код ETH1000RXFIFO #( .WIDTH (10), .SIZE (8192), .DEVICE_FAMILY (DEVICE_FAMILY), .RAM_TYPE (RAM_TYPE), .NUM_SYNC (3) )
|
|
|
|
|
Oct 11 2011, 11:54
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Цитата(x736C @ Oct 11 2011, 10:07)  Поддерживает ли ядро pause или backpressure? А что это такое? Цитата(x736C @ Oct 11 2011, 10:07)  И вообще что произойдет в случае переполнения буфера? Если свободного места в буфере недостаточно для хранения принимаемого пакета, то данный пакет выкидывается, а указатель приёмного FIFO возвращается на конец последнего принятого пакета.
|
|
|
|
|
Oct 15 2011, 07:57
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Коллеги, кто-нибудь уже успел протестировать? Очень прошу писать здесь о результатах. Я нашёл ошибку в расчёте контрольной суммы для UDP. Исправленный вариант во вложении.
|
|
|
|
|
Oct 28 2011, 06:43
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Цитата(almost @ Oct 27 2011, 16:08)  А CRC как считаете? По всем правилам или по "кандовому" одним вычитанием?) Какая связь с PHY - RGMII? CRC32 считаю с помощью http://www.easics.be/webtools/crctoolChecksum считаю суммированием с учетом циклического переноса (взято из RFC1071). Связь с PHY через MII/GMII (переключается с помощью сигнала set_1000). Цитата(SFx @ Oct 28 2011, 00:25)  Поглядел код, чуточку, сразу бросилось в глаза жесткая привязка к месту CRC в UDP. Что же будет с пакетом, у которого в IP заголовке поля Options вдруг появятся ? (хотя, может быть я конечно не до конца "воткнул" в код, но все равно над таким вопросом стоит задуматься хоть раз))) ) Привязка действительно жёсткая. Просто в большинстве применений поле Options отсутствует. Если придёт пакет с опциями, т.е. с длиной не равной 0x45, то он будет отброшен. Если нужно принимать пакет с опциями, то аппаратную проверку придётся отключить и проверять пакеты программно. P.S. Нашёл ещё несколько ошибок. Исправление во вложении.
|
|
|
|
|
Oct 29 2011, 11:03
|
Знающий
   
Группа: Свой
Сообщений: 758
Регистрация: 11-07-05
Из: Понаехал (Мск)
Пользователь №: 6 688

|
Цитата(BSACPLD @ Oct 28 2011, 10:43)  Привязка действительно жёсткая. Просто в большинстве применений поле Options отсутствует. Если придёт пакет с опциями, т.е. с длиной не равной 0x45, то он будет отброшен. Если нужно принимать пакет с опциями, то аппаратную проверку придётся отключить и проверять пакеты программно. А что мешает вам брать второй нибл из первого байта IP Заголовка и делать в соответствии с ним поправку ? ( если 0x4 5 то +20, если 0ч4 6 то +24 и так далее... или просто брать и сдвигать налево на два бита...) Кстати, а как дела обстоят с VLANами? P.S. очень рад что Вы делаете это проект и делитесь исходниками. это безусловно кому то когда то поможет!
|
|
|
|
|
Oct 31 2011, 11:51
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Цитата(SFx @ Oct 29 2011, 15:03)  А что мешает вам брать второй нибл из первого байта IP Заголовка и делать в соответствии с ним поправку ? ( если 0x45 то +20, если 0ч46 то +24 и так далее... или просто брать и сдвигать налево на два бита...) Кстати, а как дела обстоят с VLANами?
P.S. очень рад что Вы делаете это проект и делитесь исходниками. это безусловно кому то когда то поможет! Просто сразу не подумал о такой возможности. С VLAN дела пока никак.
|
|
|
|
|
Dec 18 2011, 07:27
|
Местный
  
Группа: Свой
Сообщений: 371
Регистрация: 24-07-05
Из: Москва
Пользователь №: 7 056

|
Цитата(AlphaMil @ Dec 17 2011, 23:38)  Очень интересно. Жаль написано на SV и под Альтеру... Вот бы под Xilinx.... По поводу Xilinx: SV - используйте Synplify Модули, сделанные с помощью мегафункций, замените на такие же сгенерённые Core Generator'ом.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|