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

Ядро PCI Express Block Plus в Virtex 5

Пока нет времени детально разобраться с приведенными логами.

Первое что приходит в голову - несоблюдение правила 4KB границ адресных диапазонов при формировании запроса (пункт 2.2.7 спецификации). Вторая возможная причина - нарушение границы адресного диапазона для правила Read Completion Boundary (RCB, пункт 2.3.1.1).

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


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

2 serebr - а не могли бы вы учтонить(пример всмысле)? Потому как в принципе понимаю о чём речь, только не могу понять как это может быть привязано к изменению.

(прицепил выше не логи а полностью прожекты)

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


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

тоже как-то не хватает времени посмотреть проекты, но упоминание об усечении адреса и 1 dw посылках наводит на следующую мысль: даже если посылается 1 dw, но по байтовому адресу, то придёт 2 dw в payload data, и в first last dw byte enables будут не 1, а 0 и 1 со сдвигом в зависимости от исходного адреса. Адрес в пакете будет усечённый. Пустые байты скорее всего будут заполнены нулями, хотя это зависит от мастера, я в своём их не обнулял.

Может поможет!

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


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

Новости с полей:

после того как в отправке Completition Header-е поле Lower Address стал наполнять байтовым адресом вырезанным из получаемого (нижние 2 бита меняю согласно спецификации как и раньше) и изменил процедуру отправки прерывания (стало MSI, как по UG) - всё заработало без сбоев.

В обсчем как обычно - нужно внимательно читать ДШ и не пропускать мелочи :laughing:

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


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

Новости с полей:

после того как в отправке Completition Header-е поле Lower Address стал наполнять байтовым адресом вырезанным из получаемого (нижние 2 бита меняю согласно спецификации как и раньше) и изменил процедуру отправки прерывания (стало MSI, как по UG) - всё заработало без сбоев.

В обсчем как обычно - нужно внимательно читать ДШ и не пропускать мелочи :laughing:

Поздравляю! Мне всё это ещё предстоит пройти, но своим путём, т.к. делать надо не на Xilinx'е, а на Lattic'e.

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


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

И снова здравствуйте :laughing:

 

Имею неприятную специфику работы этого самого PCI Express Block Plus:

Дата-трансферы без прерываний бегают нормально :rolleyes:

Отсылка прерывания по контрольным точкам (то есть редко) тоже работала нормально с трансферами.

А вот если сделать эти дата-трансферы пачками, упорядочить (запись перед трансфером управляющей информации трансфера-запись/чтение,адрес,длинна), прерывания после обработки трансферов(то есть довольно часто) - тогда возникает этот самый неприятный момент - прога на PC виснет. Проверялось как на Р55 платформе так и (да простят меня Одмины ) на ML370. И была замечена интересная специфика - на серверной платформе зависания начинались после гораздо меньшего числа трансферов чем на Р55 (грубо говоря если на Р55 работало полдня без вопросов, то на серверной после ~100-300 трансферов висли) :07:

В результате исследования со стороны корки выяснилось что пред-момент зависона выглядит так: получаю трансфер обрабатываю, отсылаю прерывание,получаю подтверждение от корки, что запрос прерывания от меня воспринят и дальше - тишина, входящих запросов от PC нет.. На стороне PC удалось увидеть пару раз (логи ядра в линухе), что виснем как раз на ожидании прерывания... PCIE анализера нет, чтоб посмотреть ушёл ли пакет в мать или нет, но реально видно что корка работает и рапортует в нормальном режиме и это беспокоит.

 

Никто не сталкивался с таким чЮдесным функционированием ?? :1111493779:

Как вариант - может я там галочки какие пропустил ? :smile3046:

Скриншоты конфигурирования и автомат отсылки прерывания прилагаю (на PC разрешено 1 прерывание, отсылаю 1 прерывание). Потому что нахожусь в каком то тупике - неясно где поломалось...

interrupt_block.v

post-25329-1262768622_thumb.png

post-25329-1262768627_thumb.png

post-25329-1262768631_thumb.png

post-25329-1262768635_thumb.png

post-25329-1262768640_thumb.png

post-25329-1262768645_thumb.png

post-25329-1262768649_thumb.png

post-25329-1262768653_thumb.png

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


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

Всё слежу за новостями борьбы с PCI Express, так всё меньше хочется делать свою обёртку.

 

Вы не пробовали ядро PLDA для Virtex-5? Там и тестбенч есть, и обёртка вокруг ядра Endpoint Block Plus.

Ядро можно получить после короткой переписки по e-mail. Затем уговорить ядро работать стандартным образом.

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


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

Всё слежу за новостями борьбы с PCI Express, так всё меньше хочется делать свою обёртку.

 

Вы не пробовали ядро PLDA для Virtex-5? Там и тестбенч есть, и обёртка вокруг ядра Endpoint Block Plus.

Ядро можно получить после короткой переписки по e-mail. Затем уговорить ядро работать стандартным образом.

Вот бы уговорить работать ядро PCIe от PLDA для Lattice! Само ядро имеется, а с таблеткой для него - труба.

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


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

Всё слежу за новостями борьбы с PCI Express, так всё меньше хочется делать свою обёртку.

 

Вы не пробовали ядро PLDA для Virtex-5? Там и тестбенч есть, и обёртка вокруг ядра Endpoint Block Plus.

Ядро можно получить после короткой переписки по e-mail. Затем уговорить ядро работать стандартным образом.

С того, что я знаю - ядру от PLDA требуется внешняя физика. Потому не подходит если юзать с трансиверами в виртексе. Или я где то ошибся ?

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


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

В Virtex-5 встроенные трансиверы, кроме краевого разъёма PCI Express и самой ПЛИС ничего не нужно.

 

Ядро PLDA (точнее одно из ядер) является обёрткой вокруг Endpoint block plus. Endpoint block IP параметризуем в Xilinx Coregen, ядро PLDA параметризуем в визарде PLDA. Затем всё сводим под крышей одного проекта в ISE.

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


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

У меня такая проблема: устройство на базе Endpoint Block Plus

v1.9 не на всех PC работает в режиме х8. Перепробовал кучу машин с различными мостами. В некоторых материнках, устройство сразу работает на х8, в других при первом включении на х1, а после перезагрузки(помогает кнопка ресет), переходит на х8, в третьих только на х1, и никакая перезагрузка не помогает, не смотря на то, что на материнке написано х8 и в биосе тоже все нормально. Неужели Endpoint Block Plus такой привередливый к типу чипсетов?????

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


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

У меня такая проблема: устройство на базе Endpoint Block Plus

v1.9 не на всех PC работает в режиме х8. Перепробовал кучу машин с различными мостами. В некоторых материнках, устройство сразу работает на х8, в других при первом включении на х1, а после перезагрузки(помогает кнопка ресет), переходит на х8, в третьих только на х1, и никакая перезагрузка не помогает, не смотря на то, что на материнке написано х8 и в биосе тоже все нормально. Неужели Endpoint Block Plus такой привередливый к типу чипсетов?????

Тема привередливости к чипсетам меня тоже интересует.

demon_rt,что Вам удалось за год на эту тему выяснить?

 

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


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

Тема привередливости к чипсетам меня тоже интересует.

demon_rt,что Вам удалось за год на эту тему выяснить?

 

PCI Express платы на основе Xilinx Virtex 5 выпускаем давно. С такими проблемами не сталкивался.

Проверьте:

1. Скорость загрузки ПЛИС - нужна параллельная загрузка.

2. Выводы PCI Express подключены через конденсаторы. Проверьте их, может там попались разные конденсаторы.

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


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

PCI Express платы на основе Xilinx Virtex 5 выпускаем давно.

Какие реальные скорости получаете для передач "Память ПК->Буферная память на PCIe х 1 плате" ( System Memory Read ) в зависимости от чипсета матери?

 

 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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