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

Ethernet на плате KC705

Всем привет, пытаюсь организовать Ethernet на плате KC705 с помощью интерфейса MII, на ней стоит PHY marvel 88E1111. Приемник сделать уже получилось, работает нормально, я принимаю пакеты из сети, пишу их в FIFO и оттуда по UART передаю на компьютер, и могу посмотреть, как выглядит пакет начиная от преамбулы и заканчивая CRC. Но вот передатчик сделать так и не получилось, светодиод при отправке пакета моргает (он управляется самим PHY), но никакого пакета Wireshark не видит, кроме того, у меня есть вторая плата KC705 и при соединении их между собой вторая плата также не видит никакого пакета, и сам PHY не моргает светодиодом, указывающим на прием какого-то пакета из сети. Соединяю я плату с пк или с другой платой через свич, который работает на 100 мбит/сек, так как никакую конфигурацию для PHY не задаю (кроме конфигурации джамперами на плате) и она при соединении выбирает скорость максимальную возможную, но я пытался сделать хотя бы MII, прежде чем переходить на GMII. Как решить проблему не знаю, может все-таки надо что-то конфигурировать прежде, чем пытаться отправить пакет, MDIO я вообще не подключаю к PHY, но не понятно зачем тогда микросхема моргает светодиодом при отправке. Пытался также принимаемый пакет сразу отправить назад без каких-либо изменений, Wireshark все равно увидел только один пакет (отправленный с компьютера). Может кто-то сталкивался с таким или может подсказать в какую сторону копать. Прилагаю модуль передатчика и модуль с описанным тестовым пакетом. Заранее спасибо!

MII_tx.zip

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


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

У marvel 88E111 дофига и больше настроек, может что-то упустили?

И ещё у него есть особенность, он не может работать с кросс-кабелем... или с прямым. Я уже не помню. В общем он работает только с кабелем одного типа.

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


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

14 hours ago, Jackov said:

У marvel 88E111 дофига и больше настроек, может что-то упустили?

И ещё у него есть особенность, он не может работать с кросс-кабелем... или с прямым. Я уже не помню. В общем он работает только с кабелем одного типа.

Не вводите людей в заблуждение.

88E1111 прекрасно работает как с прямым, так и с кросс кабелем.

Вот пример правильной инициализации 88E1111 для RGMII:

case PHY_ID_88E1111:
	{
		MDIO_PHY_ADDR = PHY_ADDR_88E1111 ;
		
		uint16_t data ;
		
		data = rd_mdio (0) ;
		data |=  ((1<<12) | (1<<8)) ;
		data &= ~((1<<14) | (1<<11) | (1<<10)) ;
		wr_mdio (0, data) ;
		
		data = rd_mdio (4) ;
		data |=  ((1<<8)  | (1<<6)) ;
		data &= ~((1<<10) | (1<<7) | (1<<5)) ;
		wr_mdio (4, data) ;
		
		data = rd_mdio (9) ;
		data |=  ((1<<9)) ;
		data &= ~((1<<15) | (1<<14) | (1<<13) | (1<<8)) ;
		wr_mdio (9, data) ;
		
		data = rd_mdio (16) ;
		data |=  ((1<<15) | (1<<14) | (1<<13) | (1<<12) | (1<<6) | (1<<5)) ;
		data &= ~((1<<4)) ;
		wr_mdio (16, data) ;
		
		data = rd_mdio (27) ;
		data &= ~((1<<3) | (1<<2) | (1<<1) | (1<<0)) ;
		data |=  ((1<<3) | (0<<2) | (1<<1) | (1<<0)) ;
		wr_mdio (27, data) ;
		
		data = rd_mdio (20) ;
		data &= ~((1<<7) | (1<<1)) ;
		data |=  ((1<<7) | (1<<1)) ;
		wr_mdio (20, data) ;
		
		data = rd_mdio (29) ;
		data &= ~0x001F ;
		data |=      16 ;
		wr_mdio (29, data) ;
		data = rd_mdio (30) ;
		data |=  ((1<<0)) ;
		wr_mdio (30, data) ;
		
		data = rd_mdio (0) ;
		data |=  ((1<<15)) ;
		wr_mdio (0, data) ;
		
		__delay_cycles (const20ms) ;
		
		poll_speed = false ;
		
		mac_config = (LINK_AUTO<<ETH1000_SPEEDSEL0) | 
		             (0<<ETH1000_MACFLTDISABLE)     | 
		             (1<<ETH1000_TXGENERATEIPV4)    | 
		             (1<<ETH1000_RXCHECKIPV4)       | 
		             (1<<ETH1000_RXUFENABLE)        | 
		             (0<<ETH1000_RXMFENABLE)        | 
		             (1<<ETH1000_RXBFENABLE)        ;
		
		break ;
	}

 

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


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

On 11/3/2023 at 6:52 AM, Koctix said:

MDIO я вообще не подключаю к PHY

А вот это большая ошибка.

Дефолтные конфиги у 88E1111 мягко говоря кривые.

Его обязательно нужно правильно сконфигурировать по MDIO чтобы он корректно работал.

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


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

9 часов назад, BSACPLD сказал:

Не вводите людей в заблуждение.

88E1111 прекрасно работает как с прямым, так и с кросс кабелем.

Самолично наблюдал это явление. Может, конечно, настройки были такие, но я их не трогал - значит, такие настройки по умолчанию.

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


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

15 hours ago, Jackov said:

Может, конечно, настройки были такие, но я их не трогал - значит, такие настройки по умолчанию.

Там настройки от strap пинов зависят.

image.thumb.png.591f1b14b97ea074e752c8e76fcc986a.png

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


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

Спасибо за ответы. 

В 05.11.2023 в 15:13, BSACPLD сказал:

Там настройки от strap пинов зависят.

Strap пины я так понимаю выведены на плату KC705, там это задается джамперами. 

image.thumb.png.3d151d26db6133418f3ea9b50a2dabbc.png

Или вы не об этом?

Постараюсь тогда написать модуль для конфигурации по mdio, все равно вариантов у меня не остается

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


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

38 minutes ago, Koctix said:

Или вы не об этом?

Strap пины это лишь часть конфигурации.

Доступ по MDIO всё равно нужен.

Кстати, почему не готовый модуль MAC/MDIO?

Я в своё время писал и MAC и MDIO контроллер (до сих пор ставлю их в свои проекты), но пока я оттестировал и закончил сбор и исправление всех багов, прошло явно больше года.

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


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

54 минуты назад, BSACPLD сказал:

Кстати, почему не готовый модуль MAC/MDIO?

Да, сейчас глянул, наверное поищу готовый 🙂 

56 минут назад, BSACPLD сказал:

прошло явно больше года.

Я бы хотел свой написать, но, к сожалению, времени маловато, слишком много потратил на выяснение причины проблемы...

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


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

57 minutes ago, Koctix said:

Я бы хотел свой написать, но, к сожалению, времени маловато, слишком много потратил на выяснение причины проблемы...

Тут смотря что Вам нужно.

Решить локальную задачу - готовый вполне подходит.

Задел на будущее возможной с миграцией с одного производителя на другого - однозначно все свое либо в исходниках.

У меня проект по ходу введения санкций прошел путь Intel/Lattice->Xilinx-Fudan.

Сейчас смотрю в сторону PangoMicro - уж больно цена у них привлекательная.

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


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

Есть Xilinx answer по поводу использования trimode Ethernet MAC для ревизий D или C.

https://support.xilinx.com/s/article/45527?language=en_US

Попробуйте применить то, что советует Xilinx. Если не сработает можно попробовать переехать на SFP. Но тут у KC705 перепутана полярность. По этой причине соединение до марвела я бы тоже проверил

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


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

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

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

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

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

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

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

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

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

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