Приветствую!
Цитата(_4afc_ @ Nov 14 2013, 14:54)

Но я могу включить в MCB3 второй порт и соединиться с ним из своего ip по второму axi_interconet.
Есть ли в таком разделении смысл?
Так визард EDK вроде позволяет контроллеру DDR иметь несколько axi, или потом это не синтезируется?
Упс голова чугунная - запамятовал что в Spartan hard контроллер DDR и уже имеет несколько портов - sorry.
Да - в этом случае конечно смысл есть - проще получится структура interconect.
Цитата(_4afc_ @ Nov 14 2013, 14:54)

Где взять axi_dma в EDK? Или вы про AXImaster_burst или stream? Я пока не увидел лёгкости в том что генерит EDK.
В EDK 14.3 и выше есть
AXI DMA engine - это полный DMA (вариант "soft")
AXI datamover - это как видно из названия кусок DMA который непосредственно перегоняет данные (им нужно самому рулить но можно фантазировать от души)
Цитата(_4afc_ @ Nov 14 2013, 14:54)

Написать своё иногда легче, чем понять чужое. Вопрос - где-то описан порядок работы AXImaster в режиме dma?
А немогли бы вы на пальцах описать порядок действий мастера в этом режиме?
В соответствии с протоколом axi любая транзакция по либой части шины проходит тогда когда *valid=1 *ready=1
Пишите данные ADC в FIFO, Поскольку у Вас ADC 8 бит то лучше на этом этапе упаковать их в 32-64 бита в соответствии с разрядностью шины.
Копите в этом FIFO число слов данных равное требуемому burst.
По шине aw* пишете запрос на запись:
awaddr адрес куда пишете очередной блок данных
awlen длинна burst
остальные поля - hardcod параметров в соответствии размерности шины
соответственно ставите awvalid=1, ждете awready=1
По шине данных wdata пересылаете нужное количество слов в соответствии длинной burst (соответственно ставите wvalid=1, ждете wready=1)
все - данные полетели на запись в темные недра DDR
Ждете подтверждения на шине bresp (соответственно ставите bready=1, ждете bvalid=1)
получив подтверждение - уменьшили счетчик слов - увеличили адрес буфера
если получили OK - то можете отправлять следующий запрос на запись
ну а если BAD - то "ШЕФ усе пропало! "
для системы Microblaze скорее всего Вы выставили неправильный адрес - abort, exeptions ну и портянка лога на десяток экранов

если счетчик==0 - все переслано "тютелько в тютельку" - надо бить в колокола - дергать прерывания - задавать новый адрес и размер буфера и начинать все по новой.
В принципе запрос на запись и пересылка данных могут идти в любом порядке да еще и не дожидаясь подтверждения окончания предыдущих. Главное чтобы всех "тварей" было по три

Это увеличивает скорость передачи но и усложняет реализацию. В Вашем случае скорость маленькая так что можно не заморачивается.
Ух аж вспотел - заодно и освежил в памяти что и как.
Успехов! Rob.