Jump to content

    

Airy_brn

Участник
  • Content Count

    18
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Airy_brn

  • Rank
    Участник
  1. 2 RKOB, 2 krux Спасибо за ответы. Для продолжения работы придется искать правильную серверную машину :)
  2. К сожалению, не уверена :( С размером пакета 256 байт происходит такая же история... За время от создания темы до текущего момента уже начала подозревать, что дело именно в этом. А как можно узнать какой максимальный TLP поддерживается данной материнкой? надо искать документацию на конкретную микросхему или, может, тесты какие есть? Нашла в документации - MAX_PAYLOAD_SIZE 128 байт :(
  3. Здравствуйте! Реализую проект с PCI Express x8 на Virtex-6. При конфигурации ядра ставлю MAX_TLP_SIZE = 512 байт. После загрузки системы MAX_TLP_SIZE в конфигурационном пространстве PCI_e установлен 128 байт. В таком режиме все работает красиво: данные из платы в машину по DMA идут исправно. Если пытаюсь перезаписать значение MAX_TLP_SIZE (с помощью API-функций WinDriver) и слать TLP c длиной 512 байт, то система перестает работать. А именно: если смотреть на Flow Control значения, то видим такую картину: CREDITS_CONSUMED значение увеличивается, а CREDIT_LIMIT - нет. Подскажите, в чем может быть проблема?
  4. Если еще актуально, то тут это обсуждается: http://forums.xilinx.com/t5/Spartan-Family...del/td-p/392715 Однако, из ISE сделать IBIS модель должно быть проще: В окошечке "Processes" выбираете Implement Design -> Place & Route -> Generate IBIS Model
  5. Это не память. Линк порт DSP процессора TigerShark. Под IDDR я имела ввиду именно входные регистры ПЛИС (примитив IDDR2). DCM не используется. Клок получается по примеру IP ядра "SelectIO Interface Wizard " при выборе клок буфера BUFG (т.е. через IBUFGDS получаем прямой клок (C0), через инвертор - С1. Для работы логики - еще через один BUFG)
  6. Здравствуйте! При приеме данных через DDR регистры Спартана 6 столкнулись со следующей проблемой: данные на фронте принимаются корректно, а на спаде всегда выдается 0. Даже если на входных линиях гарантированно единички. При этом тактовая для DDR регистров не постоянная - есть только тогда, когда осуществляется передача данных. Может, кто сталкивался с такой проблемой? Это кривые руки или IDDR'ы не дружат с отключающейся тактовой?
  7. Плата с мостом от Gennum работает. А кривость заключалась в том, что нулевой бит выхода cfg_dstatus (Correctable Error Detected) через пару секунд после сброса становился 1 и MAX_PAYLOAD_SIZE записывался 256 байт, хотя в нормальном режиме на моей материнке это 128 байт.
  8. А проблема оказалась вообще не там, где искали! На моей материнке есть разъемы PCI-Express, подключенные напрямую к южному мосту, а есть подключенные через свитч. Плата стояла в разъеме, который через свитч и конфигурировалась после сброса слегка криво. В другом разъеме все заработало! И на других машинах тоже.
  9. ...пришлось надолго отвлечься от задачи, но проблема никуда не делась... dsmv, спасибо за пример, но выяснилось, что передача у меня организована таким же образом... Смогла выяснить, что "зависание" происходит после следующей ситуации: я пишу некоторое количество пакетов в PCIe блок, количество свободных буферов и Flow Control TX Credit уменьшаются. Потом количество свободных буферов увеличивается на 2, хотя Flow Control TX Credit остается без изменений. После этого Flow Control TX Credit возвращаются к первоначальному значению, а trn_tbuf_av уже не изменяется. Проблема эта скорее всего не железная, т.к. на кристалле LX100T ситуация точно такая же.
  10. Здравствуйте! Реализую 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 трансиверы. Может, кто сталкивался с этим? Это все-таки аппаратный глюк или пытаться дальше копать свой проект?
  11. Там большое количество файлов. Могу выложить сам даташит, но он один много не поможет. Надо читать все и вместе.
  12. Могу выслать на почту, если Вы мне ее скажете.
  13. Я проект как есть не компилировала - сразу вставляла кусок кода в свой. Взяла модуль Lambo и App_csr, подключила с одной стороны к ногам, с другой к фифо интерфейсу и регистрам управления. Давайте адрес, вышлю :)
  14. В итоге все заработало так, как нам хотелось. Исходники от Геннума пришлось править под используемую микросхему (у них сделано под Spartan-3, у меня был Virtex-5): переподключать DCM (и в одном варианте его вообще убирать, т.к. p2lclk была заведена на cc-вход), менять DDR-регистры. В одном из модулей у них явная ошибка - проходят только те пакеты, у которых младший бит StreamID равен 0. Я, чтобы получить доступ, им еще напрямую в саппорт написала. Информации у них на сайте давольно много, но если очень надо, то могу выслать на почту.
  15. Всю документацию можно получить у Gennum на сайте (gennum.com). Там надо зарегистрироваться и дня через 2 Вас активируют. Это лучше, т.к. кроме документации может еще понадобиться ядро, отладочная программка... Покупали микросхемку мы в ООО "Регион-Вирта" примерно за 2900 р/шт