реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> MicroBlaze + DDR3 + my_IP на AXI, подключение к AXI
zuuuuk
сообщение May 5 2013, 15:44
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 188
Регистрация: 26-04-07
Пользователь №: 27 334



Добрый день.
У меня система на SPARTAN6 Mbz + MCB_DDR3 на шине AXI.
Я хочу подключить свой IP блок ко второму порту MCB и получить доступ к DDR3.
т.е. мой IP блок должен быть мастером. Для чтения данных из DDR3.

Подскажите,пожалуйста, какой-нибудь пример подключения своего IP к шине AXI.
Go to the top of the page
 
+Quote Post
akorud
сообщение May 5 2013, 18:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Цитата(zuuuuk @ May 5 2013, 17:44) *
Добрый день.
У меня система на 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 - там вам визард сгенерирует работающий пример. У нас в проекте до сих пор фрагменты кода из того примера встречаются sm.gif.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 7 2013, 10:11
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(akorud @ May 5 2013, 22:47) *
Лучше делать через "переходник" от Xilinx - http://www.xilinx.com/support/documentatio...aster_burst.pdf т.к. AXI достаточно сложная шина. Не скажу, что IP простой и очевидный - но все таки удалось его понять и все работает как часы.
Да, в Platform Studio меню Hardware->Create or import periferal - там вам визард сгенерирует работающий пример. У нас в проекте до сих пор фрагменты кода из того примера встречаются sm.gif.

как тут действовать?
собрал схему на стр. 14 указанного pdf с синтезированным ip. но как добраться до входов ( Bus2IP_***)? Я так понимаю , что на них нужно подавать сигналы от внешнего устройства?
если же идти от обратного - т.е. взять проект синтезированного примера и туда добавить microblaze , то тоже непонятно как их состыковать?
может кто подскажет путь?
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jun 7 2013, 12:19
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Цитата(serg_k1 @ Jun 7 2013, 14:11) *
если же идти от обратного - т.е. взять проект синтезированного примера и туда добавить 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 вписывайте свой код.

Могу расписать более подробно.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 10 2013, 06:33
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(aabmail @ Jun 7 2013, 16:19) *
Могу расписать более подробно.

было бы очень полезно.
но это то и есть второй путь. вернее его первая часть. а вот дольше как действовать? нужно ведь добавить microblaze. и что в нем должно быть. ведь нужно собрать цепочку до DDR3 и при этом оставить существующую связь к DDR3. я ее собирал . но на axi external Master Connector(в Isim не заработало). а как здесь?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 10 2013, 10:44
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



А что если так.

Делаете микроблайз
в нем включаете контроллер ДДР (кто-то его должен так или иначе рефрешить), контроллер делаете вешаете на шину АКСИ
добавляете в микроблайз АКСИ конектор, соединяете микроблайз и ДДР

Дальше через крейт-импорт хардваре делаете модуль с интерфейсом акси, указываете что перефирия мастер.
И ее вешаете на тот же АКСИ конектор.

Я правда не знаю если делать 2 портовый контроллер ДДР, как это выглядит. У него появляется 2 подключения на акси или что? Но с 1 портовым у меня сейчас к нему подключен ДМА и Микроблайз, оба мастера, так что дружатся как то...


Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 10 2013, 12:24
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(Golikov A. @ Jun 10 2013, 14:44) *
А что если так.

Делаете микроблайз
в нем включаете контроллер ДДР (кто-то его должен так или иначе рефрешить), контроллер делаете вешаете на шину АКСИ
добавляете в микроблайз АКСИ конектор, соединяете микроблайз и ДДР

Дальше через крейт-импорт хардваре делаете модуль с интерфейсом акси, указываете что перефирия мастер.
И ее вешаете на тот же АКСИ конектор.

Я правда не знаю если делать 2 портовый контроллер ДДР, как это выглядит. У него появляется 2 подключения на акси или что? Но с 1 портовым у меня сейчас к нему подключен ДМА и Микроблайз, оба мастера, так что дружатся как то...

такой путь уже был другая тема. там уперся в то, что нет разрешения на обмен. даже после reset из переходит z-> 0, а разрешение -1.правда я ничего в тестбенче кроме частоты, reset и управления на запись на microblaze не подавал. но по reset должно появиться разрешение.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jun 10 2013, 14:07
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



так вы что хотите написать свой акси конектор что ли? Мне кажется это потенциальный источник ошибок в будущем. Лучше к своему модулю приделать интерфейс ДМА.

чего в память то писать-читать надо?
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 11 2013, 06:43
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(Golikov A. @ Jun 10 2013, 18:07) *
так вы что хотите написать свой акси конектор что ли? Мне кажется это потенциальный источник ошибок в будущем. Лучше к своему модулю приделать интерфейс ДМА.

чего в память то писать-читать надо?

получается что да. известные - перечень сигналов(12вх+4вых), временная. ip в микроблайзе - ext_master_conn, который и выводит эти сигналы наружу.
хотелось через burst. но очень много вопросов. я начинающий.
ну вот собрал я в XPS microblaze систему с burst через крейт-импорт хардвар модуль с интерфейсом акси. и добавил его в мб. теперь нужно в модуле user logic(из pcore) добавить свою систему, которая принимает инф. извне и формирует запись. вот как конкретно это сделать? выйти из xps?.но в ise есть только микроблайз .
а так нужно принять данные видео преобразованные и передать их через интернет 1Gb. данные аппаратно в память, чтобы не загружать программу. а далее программно.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jun 11 2013, 08:01
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Цитата(serg_k1 @ Jun 10 2013, 10:33) *
было бы очень полезно.
но это то и есть второй путь. вернее его первая часть. а вот дольше как действовать? нужно ведь добавить 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 вписывайте свой код.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 11 2013, 09:35
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(aabmail @ Jun 11 2013, 12:01) *
Открываете 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 , а дальше должен провести через эти модули в микроблайз. ведь в этом случае есть только он и через него нужно вводить сигналы от внешнего устройства?.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jun 11 2013, 09:54
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Цитата(serg_k1 @ Jun 11 2013, 13:35) *
все это я и раньше проделал.
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.
Go to the top of the page
 
+Quote Post
akorud
сообщение Jun 11 2013, 10:52
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 203
Регистрация: 12-11-10
Из: Poland
Пользователь №: 60 842



Цитата(aabmail @ Jun 11 2013, 11:54) *
Ваш второй вариант ближе к мной предложенному пути.

Поддерживаю. Мне такой вариант показался самым удобным, только код я писал в sublime text. ISE так ни разу и не запустил.
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 11 2013, 12:11
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 115
Регистрация: 21-03-07
Пользователь №: 26 368



Цитата(aabmail @ Jun 11 2013, 13:54) *
Ваш второй вариант ближе к мной предложенному пути.

спасибо , сейчас как-то мне попонятнее.
я просто не понял какой путь предложен. теперь понял -второй.
Цитата
Вы хотите ввести извне сигнал 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.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jun 11 2013, 16:42
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 210
Регистрация: 4-06-08
Из: Москва
Пользователь №: 38 056



Цитата(akorud @ Jun 11 2013, 14:52) *
Поддерживаю. Мне такой вариант показался самым удобным, только код я писал в 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 слов раз в секунду или чаще?

Сообщение отредактировал aabmail - Jun 11 2013, 16:02
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01488 секунд с 7
ELECTRONIX ©2004-2016