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

PCI Express на Spartan 6

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

Реализую PCI Express на стандартном Endpoint ядре Spartan 6 (LX45T). При не очень большом потоке данных все замечательно - DMA передачи ходят в обоих направлениях. Однако при увеличении потока происходит очень странная ситуация - само ядро (Integrated Endpoint Block) начинает глючить: количество свободных буферов (trn_tbuf_av) не увеличивается, хотя пакеты из блока в машину уходят (этот вывод я сделала из того, что Flow Control Credit буфера возвращаются к значениям, которые были до передачи).

В Errata на Spartan 6 LX45T описана ошибка, которая очень может приводить к таким последствиям. А именно - "if the endpoint block for PCIe® receives multiple Packet Not Accepted DLLPs (NAKs) while also having small TLPs in the queue, the transmitter can lock up". Но это для ревизии 1, а у меня JTAG'ом опряделяется ревизия 3. В других Errata на Spartan 6 рассматриваются сразу и LX, и LXT семейства, и там вообще нет ничего про PCI Express и GTP трансиверы.

Может, кто сталкивался с этим? Это все-таки аппаратный глюк или пытаться дальше копать свой проект?

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


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

количество свободных буферов (trn_tbuf_av) не увеличивается,

 

Посмотри мой проект для SP605 http://ds-dev.ru/projects/ds-dma/files

Передача пакетов реализована в файле core64_tx_engine_m4.vhd

Передачу по DMA я начинаю только если есть четыре или более свободных буферов. Ответ на чтение происходит если есть хотя бы один свободный буфер.

Этот вариант работает с макмимальной скоростью. Проект тестировал Kuzmi4, скорость ввода 215 Мбайт/с.

 

 

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


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

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

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

Смогла выяснить, что "зависание" происходит после следующей ситуации: я пишу некоторое количество пакетов в PCIe блок, количество свободных буферов и Flow Control TX Credit уменьшаются. Потом количество свободных буферов увеличивается на 2, хотя Flow Control TX Credit остается без изменений. После этого Flow Control TX Credit возвращаются к первоначальному значению, а trn_tbuf_av уже не изменяется.

Проблема эта скорее всего не железная, т.к. на кристалле LX100T ситуация точно такая же.

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


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

Проблема эта скорее всего не железная, т.к. на кристалле LX100T ситуация точно такая же.

 

А вот это похоже на неправильное формирование пакета. Я сталкивался с таким на модели, когда не совпадал размер пакета и поле Lenght в заголовке.

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


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

А проблема оказалась вообще не там, где искали!

На моей материнке есть разъемы PCI-Express, подключенные напрямую к южному мосту, а есть подключенные через свитч. Плата стояла в разъеме, который через свитч и конфигурировалась после сброса слегка криво. В другом разъеме все заработало! И на других машинах тоже.

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


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

А это особенно интересно. Наверное другие PCIE устройства в этом слоте работают.

 

И в чём заключается кривизна конфигурирования ?

 

 

 

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


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

Плата с мостом от Gennum работает.

А кривость заключалась в том, что нулевой бит выхода cfg_dstatus (Correctable Error Detected) через пару секунд после сброса становился 1 и MAX_PAYLOAD_SIZE записывался 256 байт, хотя в нормальном режиме на моей материнке это 128 байт.

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


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

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

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

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

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

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

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

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

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

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