Jump to content

    

Aleksei_Rostov

Свой
  • Content Count

    311
  • Joined

  • Last visited

Everything posted by Aleksei_Rostov


  1. здравствуйте. Может кто нибудь сталкивался со следующей проблемой. Запускаю axi fifo mm to stream 3.00a, из ДДР контроллером ПДП пересылаю данные в axi fifo mm to stream ядро, далее записываю в контрольный регистр фифо размер пакета и согласно даташиту должен получить радость в виде данных на выходе stream интерфейса. Проблема в следующем: ядро работает только с пакетом размером до 112 байт включительно. Задаю больше -- перестает реагировать. А интерфейс control sream выдает только единицы, и это при наличии в нем стробов валид и реади
  2. Спасибо. Все получилось. Проблема была не в раскладке сигнала.
  3. Образец анкеты: 1) farbius/Алексей Ростов 2) Цифровая обработка радиолокационных сигналов 3) 3 года 4) Построение встраиваемых процессорных систем 5) farbiusсобакаmail.ru
  4. Каким образом необходимо раскладывать 28 бит по четырем линиям? В частности интересуют служебные сигналы FVAL, LVAL, DVAL. В разных источниках указано по разному, например https://en.wikipedia.org/wiki/Camera_Link#Signal_data http://www.volkerschatz.com/hardware/clink.html Служебные сигналы подаются в X3 +/-. https://en.wikipedia.org/wiki/File:Camera_l...rialization.jpg Служебные сигналы подаются в X2 +/-.
  5. Не в ту ветку. Для хорошего настроения. Картинка в виде Space Impact) http://forums.xilinx.com/t5/DSP-Tools/Relo...5-0/td-p/308743
  6. У Вас ящик отключен или переполнен. Можно подробнее по задачке farbiusсобакаmail.ru
  7. я вообще не задействовал msi_vector_num. Прерывания работают, windrive их видит
  8. У меня размеры разные. Все работает. intx_msi_request (в данном случае legacy интерапт, по импульсу) на этот вход я подаю импульс как только закончена транзакция через pcie в PC (в физ память ПК) Событийные прерывания. Помимо прерывания еще и указывают, чем это прерывание вызвано. В датащите есть расшифровка
  9. Пересоберите проект, проверьте параметры ядра
  10. Я все параметры оставил по умолчанию, за исключением адресов. Для axi:bar все просто. В параметрах для адреса прописываете адреса мапируемых областей вашей axi системы (Вы так делали на скриншотах). Создаете память физическую с начальным адресом например AddrPhys (адрес возвращает функция из драйвера windrive). Далее в соответствующие контрольные регистры моста пишете адрес следующий AddrPhys & (Buffersize - 1), где Buffersize - размер выделяемого буфера. Если необходимо читать из PCIe:BARs с помощью ДМА, то в регистр источника ДМА пишете адрес PCIe:BAR в системе с axi + AddrPhys & (Buffersize - 1)
  11. Такая идея была, но вариант со внешним dma вполне устраивает)
  12. читаю данные с ПК через ДМА, пишу поток datamover ом. То есть ПК пишет в регистры ДМА откуда(физическая память ПК), куда (в моем случае ДДР на ПЛИС или непосредственно на логику ПЛИС) и сколько. А поток с ПЛИС пишу через datamover.
  13. Нужно писать программу. там функция что то типа allocate_buffer_dma. Про нее почитайте. Она должна возвратить адрес физической памяти, который нужно записать в контрольные регистры pcie корки. Контрольные регистры необходимо отмапировать "в себя", т.е. на BAR0 например. И записывать адрес в режиме pcie мастер
  14. Попробую объяснить как понял сам. Могу ошибаться, знающие поправят). Мост подразумевает отображение адресного пространства ПЛИС в ПК и наоборот. Итак режим pcie мастер. При перезагрузке компьютера и инициализации платы с PCIe операционная система "видит" BAR0 и мапирует его свою память. Если посмотрите в диспетчер устройств, ОС определяет плату как контроллер памяти. В вашем случае адреса 0xF73F_8000 - 0х73FF_FFFF. Режим axi мастер (например cdma мастер). В настройках корки pcie выставляются буфера на axi2pcie. При перезагрузке система ничего не выделяет. Тут работает драйвер. Он при запуске выделяет область физической памяти и возвращает динамический адрес этой памяти, кот необходимо записать в контрольные регистры pcie корки. На плис у вас будут на шине выделены axibar со своими адресами. С этими адресами и работает CDMA. А корка транслирует адреса физической памяти в адресное пространство системы на ПЛИС. Как то так)
  15. ВЕРНО, Это транслированный адрес из системы с axi4 в системе ПК.
  16. Я на начальном этапе делал так (работал в XPS 14.7 для ml605.) Собрал проект: только pcie корка с дма (можно и без) и светодиоды. У меня на 32 р системе программа pcietree. Pcie Bars брал только bar 0, задав его объем (у вас 32 килобайта). В pci2axi записал адрес своих leds (gpio) на шине (у вас там записано число 0х12340). Прошил, перезагрузил ПК. Открываю pcietree, вижу свою плату как контроллер памяти с BAR0. В bar 0 c ПК пишу число например c нулевым оффсетом, такая запись аналогична записи в регистр gpio корки также с нулевым офсетом. Так зажигаю светодиоды. Все. Систему можно собрать для axi4 без микроблейза, т.к. мастер у вас есть (pcie) и слейв (gpio)
  17. Совершенно верно, именно поэтому есть axi bar и pcie bar. На ПК драйвер выделяет буфер, адрес которого пишется в контрольные регистры pcie. Далее в дма пишется адрес axi bar источника и назначение адрес ддр.
  18. Контрольные регистры ДМА мапируются в BAR pcie. Таким образом pcie как мастер пишет в контрольные регистры CDMA. Совершенно верно, комп через pcie мастер пишет в контрольные регистры cdma, давая команду на передачу данных, и адреса куда и откуда. Обязательно, тк CDMA позволяет работать burst ами, а pcie мастер работает на подобие процессора одиночными транзакциями
  19. Спасибо. Можно немного по подробнее. Постараюсь уточнить вопрос. Я понял следующее сигналы с o_porta, o_portb, o_portc, o_lval , o_fval, o_spare собираются в 28 битный сигнал s_x_serdes_data, который меняется по клоку clk1x. Причем каждый бит s_x_serdes_data соответствует определенному биту из сигналов o_porta, o_portb, o_portc, o_lval , o_fval, o_spare(как вы описали выше). По clk7x данный сигнал раскладывается по 4-м линиям, например tx_A, tx_B, tx_C, tx_D. Вопрос вот в чем: как последовательно во времени раскладывается s_x_serdes_data по 4-м линиям? Например в tx_A выдаю s_x_serdes_data(0), s_x_serdes_data(1), s_x_serdes_data(2), s_x_serdes_data(3), s_x_serdes_data(4),..., s_x_serdes_data(6) в тоже время в tx_B выдаю s_x_serdes_data(7), s_x_serdes_data(8), s_x_serdes_data(9), s_x_serdes_data(10), s_x_serdes_data(11),..., s_x_serdes_data(13) и т.д. или как то иначе?
  20. Здравствуйте. Подскажите кто работал с протоколом Camera link Base. Не совсем ясно следующее: Сделал сериализатор, чтобы отправить данные с платы на фреймграббер. На вход сериализатора поступают данные 28 бит (байты с port A, B, C и FVAL, DVAL, LVAL и SPARE). На выходе по clk7x данные сериализуются по 4-м сигналам. Как правильно разложить входной 28-битный сигнал по 4-м сигналам? Просто выдавать последовательно в первый tx_data[6.. 0], во второй tx_data[13.. 7] и т.д.? Какой клок выдавать по LVDS clk1x или clk7x?
  21. pcie tree только для 32-х разрядной системы. Данную программу использовал исключительно для отладки PCIe моста на ПЛИС, чтобы программист мог начать работать с winDrive. Для bridge PCIe вам необходимо будет делать переход из stream в memory mapped. Data mover вам в помощь. По поводу Gen3 Integrated Block for PCI Express сказать ничего не могу.
  22. В XPS все довольно просто: собирается проект где мастер pcie, слейв например leds. Мапировал leds на bar pcie. На ПК запускал программу pcie tree , с её помощью зажигал диоды на плате. Посмотрите форум, я выкладывал даже скриншот проекта
  23. Собирал в XPS. А потом добавлял в PLAN ahead. У меня задача была обмен данными плата-пк
  24. Делал на ПЛИС, ml605 board. Использовал стандартное ядро. На ПК работал с крякнутым windrive.