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

    

xilinx k7 ip_core 10G pcs/pma base-r

 

Здравствуйте.

У меня стоит задача поднять ядро 10G pcs/pma base-r на fpga xilinx  xc7k70t fbg484-2.

В vivado 2017.2 я это сделал без MDIO, собрал проект, тайминг проходит.

При коротких пакетах прием и передача идут нормально.

Но при большой длине пакета начинает не совпадать CRC32.

При длине пакета 1.5 kB, CRC32 не совпадает в 60% пакетах...

Возможно дело в синхронизации...

Какой клок использовать для приема по шине xgmii, а какой для передачи?

Я работаю от клока c ядра "coreclk",  прием и передача. 

Спасибо.

 

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

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


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

Я на альтере делал.

Вообще 10G xgmii (ddr) работает на частоте 156.25.

Каким клоком запитывать само ядро наверное лучше в мануале почитать. Потому что в альтере это 322.265625 или 644.xxx

 

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

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


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

ядро 64bits. По мануалу "coreclk", 156.25...

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

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


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Kostochkin сказал:

ядро 64bits. По мануалу "coreclk", 156.25...

 

Стабильность клока проверяйте. 
На длинных пакетах набегает ошибка. Если пакет короткий то нет.

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


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

1. Какая версия ядра 10G?

2. Не напутали в названии плис, вроде fbg до 6 Гбит.

3. В 6.0 версии ядра я работал с coreclk_out. Пакеты до 8кбайт.

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


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

версия - 6.0.

fbg поддерживает 10g начиная с vivado 2017.1.

буду дальше у себя копать..

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


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

Кое-что нашел в ILA.

В некоторых случаях ядро шлет мне пакеты без паузы, сразу один за другим. 

Как я понял, 1 такт полного состояния IDLE должен быть обязательно...

Надо где-то покопаться в настойках ядра?

ps.jpg

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

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


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

CRC проверяется на MAC-уровне, ядро PCS/PMA этого не делает

Клок coreclk (coreclk_out) - это верно

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


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

Стандарт 10G предусматривает паузу между пакетами минимум 12 байт.

А у меня  6 байт, а должно быть минимум 12...

Подскажите, как быть?

 

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


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

Вопрос, а откуда данные идут?

Схему соединения и суть эксперимента.

Я начинал с работы с сетевой картой.

 

FLOOD: CRC - можно и самому посчитать. 

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

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


Ссылка на сообщение
Поделиться на другие сайты
6 часов назад, Kostochkin сказал:

Подскажите, как быть?

Вы даете информацию очень маленькими кусочками и предлагаете угадать, что и где не так.

Что за CRC бьется, кто его считает на приеме? Откуда идут пакеты, как часто (много), и кто обеспечивает им верный CRC - все это совершенно непонятно.

6 часов назад, Kostochkin сказал:

Стандарт 10G предусматривает паузу между пакетами минимум 12 байт.

В линии - да.

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


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

Извините.

Бьется CRC32 mac уровня, считаю ее я сам.

Пакеты идут от сетевой карты intel x250-lr1, оптика SFP+. 

Для отправки udp пакетов использую iperf. Задаю скорость 10g и длину datagram - 64k.

Я выяснил, что когда ко мне по шине xgmii от ядра 10g pcs/pma приходят пакеты c паузой меньше 8 байт, 

я воспринимаю это как один пакет и соответственно CRC32 не совпадает.

В принципе это можно исправить, я только не пойму, почему такой маленький ipg между пакетами, это же не по стандарту...

И можно как-то настроить ядро или сетевую карту, чтобы выровнять ipg ?

Спасибо. 

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

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


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Kostochkin сказал:

Я выяснил, что когда ко мне по шине xgmii от ядра 10g pcs/pma приходят пакеты c паузой меньше 8 байт, 

я воспринимаю это как один пакет и соответственно CRC32 не совпадает.

В принципе это можно исправить, я только не пойму, почему такой маленький ipg между пакетами, это же не по стандарту...

Это и есть ответ на вопрос - MAC-уровень неправильно разделяет пакеты.

Из-за разницы частот PCS/PMA ядро может как уменьшить, так и увеличить количество idle-символов, для этого они и нужны. Картина в линии и картина на шине xgmii после приведения частот конечно не будет одинаковой.

Чтобы увидеть реальную картину на приемной линии (например, для проверки передатчика) потребовалось бы отключить elastic buffer и работать на приеме по восстановленной частоте. При этом rx clock и tx clock стали бы разными.

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


Ссылка на сообщение
Поделиться на другие сайты
27 minutes ago, Flood said:

Это и есть ответ на вопрос - MAC-уровень неправильно разделяет пакеты.

Из-за разницы частот PCS/PMA ядро может как уменьшить, так и увеличить количество idle-символов, для этого они и нужны. Картина в линии и картина на шине xgmii после приведения частот конечно не будет одинаковой.

Чтобы увидеть реальную картину на приемной линии (например, для проверки передатчика) потребовалось бы отключить elastic buffer и работать на приеме по восстановленной частоте. При этом rx clock и tx clock стали бы разными.

Спасибо.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация