zuuuuk 0 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба Добрый день. У меня система на SPARTAN6 Mbz + MCB_DDR3 на шине AXI. Я хочу подключить свой IP блок ко второму порту MCB и получить доступ к DDR3. т.е. мой IP блок должен быть мастером. Для чтения данных из DDR3. Подскажите,пожалуйста, какой-нибудь пример подключения своего IP к шине AXI. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 5 мая, 2013 Опубликовано 5 мая, 2013 · Жалоба Добрый день. У меня система на SPARTAN6 Mbz + MCB_DDR3 на шине AXI. Я хочу подключить свой IP блок ко второму порту MCB и получить доступ к DDR3. т.е. мой IP блок должен быть мастером. Для чтения данных из DDR3. Подскажите,пожалуйста, какой-нибудь пример подключения своего IP к шине AXI. Лучше делать через "переходник" от Xilinx - http://www.xilinx.com/support/documentatio...aster_burst.pdf т.к. AXI достаточно сложная шина. Не скажу, что IP простой и очевидный - но все таки удалось его понять и все работает как часы. Да, в Platform Studio меню Hardware->Create or import periferal - там вам визард сгенерирует работающий пример. У нас в проекте до сих пор фрагменты кода из того примера встречаются :). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 7 июня, 2013 Опубликовано 7 июня, 2013 · Жалоба Лучше делать через "переходник" от Xilinx - http://www.xilinx.com/support/documentatio...aster_burst.pdf т.к. AXI достаточно сложная шина. Не скажу, что IP простой и очевидный - но все таки удалось его понять и все работает как часы. Да, в Platform Studio меню Hardware->Create or import periferal - там вам визард сгенерирует работающий пример. У нас в проекте до сих пор фрагменты кода из того примера встречаются :). как тут действовать? собрал схему на стр. 14 указанного pdf с синтезированным ip. но как добраться до входов ( Bus2IP_***)? Я так понимаю , что на них нужно подавать сигналы от внешнего устройства? если же идти от обратного - т.е. взять проект синтезированного примера и туда добавить microblaze , то тоже непонятно как их состыковать? может кто подскажет путь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aabmail 0 7 июня, 2013 Опубликовано 7 июня, 2013 · Жалоба если же идти от обратного - т.е. взять проект синтезированного примера и туда добавить microblaze , то тоже непонятно как их состыковать? может кто подскажет путь? Я бы не советовал так делать. Рекомендую вот такой путь (EDK 14.2). Create or import peripheral -> выбрать To an XPS Projects -> core name -> AXI4 Burst-> галки User Logic Master, User logic SW registers -> число регистров побольше, например 32 -> ... -> галки generate ISE and XST, generate driver -> finish Затем заходите в папку pcores/core name/devl/projnav/ открываете ISE, в нем открываете файл core name.xise Там будет уже 2 готовых VHD-файла. core name.vhd - это и есть "адаптер" в user_logic вписывайте свой код. Могу расписать более подробно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 10 июня, 2013 Опубликовано 10 июня, 2013 · Жалоба Могу расписать более подробно. было бы очень полезно. но это то и есть второй путь. вернее его первая часть. а вот дольше как действовать? нужно ведь добавить microblaze. и что в нем должно быть. ведь нужно собрать цепочку до DDR3 и при этом оставить существующую связь к DDR3. я ее собирал . но на axi external Master Connector(в Isim не заработало). а как здесь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 10 июня, 2013 Опубликовано 10 июня, 2013 · Жалоба А что если так. Делаете микроблайз в нем включаете контроллер ДДР (кто-то его должен так или иначе рефрешить), контроллер делаете вешаете на шину АКСИ добавляете в микроблайз АКСИ конектор, соединяете микроблайз и ДДР Дальше через крейт-импорт хардваре делаете модуль с интерфейсом акси, указываете что перефирия мастер. И ее вешаете на тот же АКСИ конектор. Я правда не знаю если делать 2 портовый контроллер ДДР, как это выглядит. У него появляется 2 подключения на акси или что? Но с 1 портовым у меня сейчас к нему подключен ДМА и Микроблайз, оба мастера, так что дружатся как то... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 10 июня, 2013 Опубликовано 10 июня, 2013 · Жалоба А что если так. Делаете микроблайз в нем включаете контроллер ДДР (кто-то его должен так или иначе рефрешить), контроллер делаете вешаете на шину АКСИ добавляете в микроблайз АКСИ конектор, соединяете микроблайз и ДДР Дальше через крейт-импорт хардваре делаете модуль с интерфейсом акси, указываете что перефирия мастер. И ее вешаете на тот же АКСИ конектор. Я правда не знаю если делать 2 портовый контроллер ДДР, как это выглядит. У него появляется 2 подключения на акси или что? Но с 1 портовым у меня сейчас к нему подключен ДМА и Микроблайз, оба мастера, так что дружатся как то... такой путь уже был другая тема. там уперся в то, что нет разрешения на обмен. даже после reset из переходит z-> 0, а разрешение -1.правда я ничего в тестбенче кроме частоты, reset и управления на запись на microblaze не подавал. но по reset должно появиться разрешение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 10 июня, 2013 Опубликовано 10 июня, 2013 · Жалоба так вы что хотите написать свой акси конектор что ли? Мне кажется это потенциальный источник ошибок в будущем. Лучше к своему модулю приделать интерфейс ДМА. чего в память то писать-читать надо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 11 июня, 2013 Опубликовано 11 июня, 2013 · Жалоба так вы что хотите написать свой акси конектор что ли? Мне кажется это потенциальный источник ошибок в будущем. Лучше к своему модулю приделать интерфейс ДМА. чего в память то писать-читать надо? получается что да. известные - перечень сигналов(12вх+4вых), временная. ip в микроблайзе - ext_master_conn, который и выводит эти сигналы наружу. хотелось через burst. но очень много вопросов. я начинающий. ну вот собрал я в XPS microblaze систему с burst через крейт-импорт хардвар модуль с интерфейсом акси. и добавил его в мб. теперь нужно в модуле user logic(из pcore) добавить свою систему, которая принимает инф. извне и формирует запись. вот как конкретно это сделать? выйти из xps?.но в ise есть только микроблайз . а так нужно принять данные видео преобразованные и передать их через интернет 1Gb. данные аппаратно в память, чтобы не загружать программу. а далее программно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aabmail 0 11 июня, 2013 Опубликовано 11 июня, 2013 · Жалоба было бы очень полезно. но это то и есть второй путь. вернее его первая часть. а вот дольше как действовать? нужно ведь добавить microblaze. и что в нем должно быть. ведь нужно собрать цепочку до DDR3 и при этом оставить существующую связь к DDR3. я ее собирал . но на axi external Master Connector(в Isim не заработало). а как здесь? Открываете EDK. Create a new project using Base system builder Выбрать Axi system. Выбрать директорию для проекта. Название лучше оставить "system" Далее укажите тип своей борды, а если у вас custom-плата, то указываете тип кристалла и частоту задающего генератора. Остальное по умочланию. В следующем диалоге добавляете периферию, в т.ч. DDR3 SDRAM, Soft TEMAC Ethernet, UART16550 и др. Finish. Т.о. будет создан проект EDK, в котором будет уже готовый набор стандартных ядер. Вам теперь нужно создать свою user-ядро. Для этого: Create or import peripheral -> выбрать To an XPS Projects -> core name -> AXI4 Burst-> галки User Logic Master, User logic SW registers -> число регистров побольше, например 32 -> ... -> галки generate ISE and XST, generate driver -> finish Затем заходите в папку pcores/core name/devl/projnav/ открываете ISE, в нем открываете файл core name.xise Там будет уже 2 готовых VHD-файла. core name.vhd - это и есть "адаптер" в user_logic вписывайте свой код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 11 июня, 2013 Опубликовано 11 июня, 2013 · Жалоба Открываете EDK. Create a new project using Base system builder Выбрать Axi system. Выбрать директорию для проекта. Название лучше оставить "system" Далее укажите тип своей борды, а если у вас custom-плата, то указываете тип кристалла и частоту задающего генератора. Остальное по умочланию. В следующем диалоге добавляете периферию, в т.ч. DDR3 SDRAM, Soft TEMAC Ethernet, UART16550 и др. Finish. Т.о. будет создан проект EDK, в котором будет уже готовый набор стандартных ядер. Вам теперь нужно создать свою user-ядро. Для этого: Create or import peripheral -> выбрать To an XPS Projects -> core name -> AXI4 Burst-> галки User Logic Master, User logic SW registers -> число регистров побольше, например 32 -> ... -> галки generate ISE and XST, generate driver -> finish Затем заходите в папку pcores/core name/devl/projnav/ открываете ISE, в нем открываете файл core name.xise Там будет уже 2 готовых VHD-файла. core name.vhd - это и есть "адаптер" в user_logic вписывайте свой код. все это я и раньше проделал. 1. теперь мой проект core name.xise. но там же нет микроблайза. нужно его добавить? я добавил. делаю его головным.а при подключении "адаптера" в подчиненном выдает ошибку , что неизвестный "адаптер". если наоборот "адаптер" головной микроблайз подчиненный все проходит. но там слишком со многими сигналами микроблайза нужно разбираться. и еще . к чему подключается "адаптер" в микроблайзе. 2.или проект остается в XPS. а ISE только для написания кода в адаптере? но тогда как мне сделать свой вход в "адаптере" от внешнего пина. в адаптере я так понял есть 4 модуля. 1-user , 2-axi_master_burst,3-axi_lite_ipif,4-головной(пусть mmm). и только ммм связан с микоблайзом. input my_clk мой входной сигнал. я его добавил в user , а дальше должен провести через эти модули в микроблайз. ведь в этом случае есть только он и через него нужно вводить сигналы от внешнего устройства?. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aabmail 0 11 июня, 2013 Опубликовано 11 июня, 2013 · Жалоба все это я и раньше проделал. 1. теперь мой проект core name.xise. но там же нет микроблайза. нужно его добавить? я добавил. делаю его головным.а при подключении "адаптера" в подчиненном выдает ошибку , что неизвестный "адаптер". если наоборот "адаптер" головной микроблайз подчиненный все проходит. но там слишком со многими сигналами микроблайза нужно разбираться. и еще . к чему подключается "адаптер" в микроблайзе. 2.или проект остается в XPS. а ISE только для написания кода в адаптере? но тогда как мне сделать свой вход в "адаптере" от внешнего пина. в адаптере я так понял есть 4 модуля. 1-user , 2-axi_master_burst,3-axi_lite_ipif,4-головной(пусть mmm). и только ммм связан с микоблайзом. input my_clk мой входной сигнал. я его добавил в user , а дальше должен провести через эти модули в микроблайз. ведь в этом случае есть только он и через него нужно вводить сигналы от внешнего устройства?. Ваш второй вариант ближе к мной предложенному пути. ISE фактически служит для написания кода (Кстати, что вы понимаете под словом "Адаптер"?). Еще через ISE удобно вызывать симуляцию. В user-core есть не 4, а 2 модуля - по порядку: головной, типа axi_mmm_core.vhd и user_logic.vhd. Все остальное - это инклюды. Вы хотите ввести извне сигнал my_clk? Это случайно не system_clock для всего проекта? Если это "обычный просто сигнал", то его нужно прописать в следующие файлы: system.ucf, system.mhs, axi_mmm_core.mpd, axi_mmm_core.vhd, user_logic.vhd. Таким образом вы вводите сигнал в свой user_core. Подключить его напрямую к блэйзу нельзя. Это можно сделать только через AXI. Если вы это делаете впервые, попробуйте его для начала присоединить к сигналу USER_LOGIC/SLV_REG0(0). Для проверки правильности написания имеет смысл делать синтез в ISE, и потом смотреть лог, исправлять ошибки. Потом нажимаете Generate bitstream в EDK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akorud 0 11 июня, 2013 Опубликовано 11 июня, 2013 · Жалоба Ваш второй вариант ближе к мной предложенному пути. Поддерживаю. Мне такой вариант показался самым удобным, только код я писал в sublime text. ISE так ни разу и не запустил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
serg_k1 0 11 июня, 2013 Опубликовано 11 июня, 2013 · Жалоба Ваш второй вариант ближе к мной предложенному пути. спасибо , сейчас как-то мне попонятнее. я просто не понял какой путь предложен. теперь понял -второй. Вы хотите ввести извне сигнал my_clk? Это случайно не system_clock для всего проекта? это просто для примера. нужно данные байт и строб. Если это "обычный просто сигнал", то его нужно прописать в следующие файлы: system.ucf, system.mhs, axi_mmm_core.mpd, axi_mmm_core.vhd, user_logic.vhd. Таким образом вы вводите сигнал в свой user_core. в головном m.vhd port (my_clk :in std_logic;) component user_logic port (my_clk_user : in std_logic;) port map ( my_clk_user => my_clk,) в user logic(он в verilog) module user_logic ( my_clk_user, ) input my_clk_user; что здесь? m.mpd PORT my_clk = ???, DIR = I, BUS = ??? system.ucf PORT my_clk = my_clk, DIR = I и нужно ли здесь BEGIN m PARAMETER INSTANCE = m_0 PARAMETER HW_VER = 1.00.a PARAMETER C_BASEADDR = 0xa0000000 PARAMETER C_HIGHADDR = 0xa000ffff BUS_INTERFACE M_AXI = axi4_0 BUS_INTERFACE S_AXI = axi4lite_0 PORT S_AXI_ACLK = clk_50_0000MHzPLL0 PORT m_axi_aclk = clk_100_0000MHzPLL0 END system.ucf NET my_clk LOC = "N19" | IOSTANDARD = "LVCMOS25"; N19 заменю на нужный контакт если можно, то еще может подскажете как быстро подключиться в user_logic. нужна запись 32р слов, количество ~ 500. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aabmail 0 11 июня, 2013 Опубликовано 11 июня, 2013 (изменено) · Жалоба Поддерживаю. Мне такой вариант показался самым удобным, только код я писал в sublime text. ISE так ни разу и не запустил. ISE все-таки удобно тем, что там можно генерить test_bench для ModelSim. А редактор в ISE конечно плохой, и даже иногда виснет на пустом месте. component user_logic port (my_clk_user : in std_logic;) port map ( my_clk_user => my_clk,) честно говоря мне до сих пор непонятно, когда следует применять ключевое слово component. Делаю обычно так: LABEL: entity work.user_logic port map ( Bus2IP_Clk => clk, ... ); что здесь? m.mpd PORT my_clk = ???, DIR = I, BUS = ??? PORT my_clk = "", DIR = I MHS лучше поначалу руками не править. Пользуйтесь графической средой. Когда заполните MPD, перезагрузите EDK. Найдите в EDK окно System Assembly View и в нем вкладку Ports. Найдите там свое ядро, свой сигнал и выберите Make external. Посмотрите, как изменится MHS. system.ucf NET my_clk LOC = "N19" | IOSTANDARD = "LVCMOS25"; N19 заменю на нужный контакт Как то так. если можно, то еще может подскажете как быстро подключиться в user_logic. нужна запись 32р слов, количество ~ 500. 500 слов раз в секунду или чаще? Изменено 11 июня, 2013 пользователем aabmail Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться