Jump to content
    

Bus Master DMA для PCIe

axi_dma.vhd
...
-- DataMover outstanding address request fifo depth
constant DM_ADDR_PIPE_DEPTH         : integer := 4;
...

Такой параметр нахожу, он у меня почему-то 1, попробую задать 8.

 

... вроде бы соответствующие параметры c_s_axi_num_read/c_s_axi_num_write расположенны слишком глубоко ...

Такие параметры поиском могу найти только в папках с файлами для PCIe моста (xml - файл задаёт параметры для gui ядра) и они там 8.

Share this post


Link to post
Share on other sites

Приветствую!

 

Такой параметр нахожу, он у меня почему-то 1, попробую задать 8.

 

Такие параметры поиском могу найти только в папках с файлами для PCIe моста (xml - файл задаёт параметры для gui ядра) и они там 8.

 

Не трогайте пока PCIe bridge - настройте DMA и axi_interconect-ы

 

Успехов! Rob.

 

Share this post


Link to post
Share on other sites

Для AXI Interconnect эти параметры надо править:

parameter [C_NUM_SLAVE_SLOTS*32-1:0] C_S_AXI_WRITE_ACCEPTANCE         = 32'H00000002,
                       // Maximum number of active write transactions that each SI 
                       // slot can accept. (Valid only for SAMD)
                       // Format: C_NUM_SLAVE_SLOTS{Bit32}; 
                       // Range: 1-32.
parameter [C_NUM_SLAVE_SLOTS*32-1:0] C_S_AXI_READ_ACCEPTANCE          = 32'H00000002,
                       // Maximum number of active read transactions that each SI 
                       // slot can accept. (Valid only for SAMD)
                       // Format: C_NUM_SLAVE_SLOTS{Bit32};
                       // Range: 1-32.

???

Share this post


Link to post
Share on other sites

Приветствую!

 

Увы это издержки "удобств" когда за Вас работает неизвестный индийский Раджа.

В форме кофигурирования interconecta таких параметров нет - но можно раскрыть блок interconecta ПОСЛЕ diagram validation найти там axi_crossbar

и в нем уже - поставив ручной режим - изменить нужные параметры. Ну или сразу нарисовать правильный xbar из примитивов axi_crossbar, axi_dwidth_converter, axi_clock_converter, ... не надеясь на телепатические способности Раджи.

 

Успехов! Rob.

post-1643-1445253520_thumb.png

Share this post


Link to post
Share on other sites

Сделал всё, как Вы советовали. Должно было увеличить скорость передачи, но почему-то осталось по-прежнему.

Рисунок первый, то как работало ранее, использую burst 256. По рисунку видно, что период двух burst-ов примерно 1400 тактов.

Рисунок второй, то как работает сейчас (с параметром constant DM_ADDR_PIPE_DEPTH : integer := 8; и crossbar-om c Read/Write Acceptance 8) Тут два burst-a передаются за 800 тактов.

На осцил вывожу сигнал прерывания по обработке дескриптора, его период в обоих случаях одинаковый??? По данным ILA производительность возрасла, на деле осталась прежней, как так???

post-63539-1445261529_thumb.png

post-63539-1445261536_thumb.png

Share this post


Link to post
Share on other sites

Уточню вопрос: достаточно ли последних двух осциллограмм, чтобы сказать, что производительность DMA (пропускная способность шины) во втором случае больше?

Проверил ещё раз правильность работы всей системы (переключение дескрипторов, остановку DMA при использовании всех дескрипторов, восстановление передачи при обновлении дескрипторов), не могу понять, как время передачи пакета (65536х8 байт) в обоих случаях может быть одинаковым.

Share this post


Link to post
Share on other sites

Приветствую!

 

А у Вас часом не включен Interrupt Delay Time Out. ? PG021.pdf LogiCORE IP AXI DMA v7.1 page 17

В этом случае прерывание происходит не сразу а с задержкой заданной таймером - вот и получаете "неизменное" время передачи ;)

 

Успехов! Rob.

 

 

 

Share this post


Link to post
Share on other sites

Проверю конечно, но разрешал прерывание по завершению обработки буфера или ошибке.

Share this post


Link to post
Share on other sites

Извиняюсь, ввёл в заблуждение. Рисунки из поста выше для разных условий работы системы, первый, похоже, когда система работала в Gen1.

Счас всё перепроверил, получается присвоение параметру DM_ADDR_PIPE_DEPTH значения 8; и параметрам crossbar-а Read/Write Acceptance значения 8 не увеличило пропускную способность системы (о чём и свидетельствовал постоянный период прерывания). Первый рисунок - система с дефолтными параметрами, второй - система с параметрами настроенными "ручками". Тут видно, что за одно время передаётся одинаковое количество данных (число burst-ов).

post-63539-1445324851_thumb.png

post-63539-1445324856_thumb.png

Share this post


Link to post
Share on other sites

Приветствую!

 

По картинкам видно что тормозит именно DMА такое впечатление что на входе у него не хватает данных.

Задержек со стороны PCIe тут не видно.

 

 

Успехов! Rob.

 

 

 

Share this post


Link to post
Share on other sites

По картинкам видно что тормозит именно DMА такое впечатление что на входе у него не хватает данных.

Задержек со стороны PCIe тут не видно.

Да, спасибо, вот я ... . Можете смеяться, генератор трафика работает на 156.25 MHz (моделирует приём 10G Ethernet, далее фифо с переходом на 250 MHz, DMA забирает данные из FIFO), для него 9.3 Gbit/s почти потолок. Когда была проблема с работой ядра в Gen1 я его проверял, чтоб там ничего не тормозило, а тут что-то позабыл.

 

Share this post


Link to post
Share on other sites

Запустил генератор трафика на 250 MHz, с Вашими советами показало 13.56 Gbit/s. Спасибо, помогли. Если оставить AXI Interconnect в режиме auto и параметр DM_ADDR_PIPE_DEPTH для DMA со стандартным значением 1, получаю примерно тех же 9.3 Gbit/s.

Руками набросать свой interconnect - это ещё нормально, но вот вручную править файлы, которые нагенерил IP Integrator, чтоб оно заработало нормально, - "ваще опа".

Share this post


Link to post
Share on other sites

Приветствую!

 

Увы это издержки "удобств" когда за Вас работает неизвестный индийский Раджа.

В форме кофигурирования interconecta таких параметров нет - но можно раскрыть блок interconecta ПОСЛЕ diagram validation найти там axi_crossbar

и в нем уже - поставив ручной режим - изменить нужные параметры. Ну или сразу нарисовать правильный xbar из примитивов axi_crossbar, axi_dwidth_converter, axi_clock_converter, ... не надеясь на телепатические способности Раджи.

 

Успехов! Rob.

post-1643-1445253520_thumb.png

 

Почему у меня отсутствует кнопка ОК? Могу отредактировать но не могу применить? И куда Вы добавляете set_property? В xdc или в свойства корки. В свойства корки есть только удалить, а добавить нет. Версия 2015.1 и 2015.3.

Share this post


Link to post
Share on other sites

Приветствую!

 

Увы это издержки "удобств" когда за Вас работает неизвестный индийский Раджа.

В форме кофигурирования interconecta таких параметров нет - но можно раскрыть блок interconecta ПОСЛЕ diagram validation найти там axi_crossbar

и в нем уже - поставив ручной режим - изменить нужные параметры. Ну или сразу нарисовать правильный xbar из примитивов axi_crossbar, axi_dwidth_converter, axi_clock_converter, ... не надеясь на телепатические способности Раджи.

 

Успехов! Rob.

post-1643-1445253520_thumb.png

 

Почему у меня отсутствует кнопка ОК? Могу отредактировать но не могу применить? И куда Вы добавляете set_property? В xdc или в свойства корки. В свойства корки есть только удалить, а добавить нет. Версия 2015.1 и 2015.3.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...