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

 
 
> 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
 
Start new topic
Ответов
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
aabmail
сообщение Jun 11 2013, 08:01
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #7


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

Группа: Участник
Сообщений: 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
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 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
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 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
aabmail
сообщение Jun 11 2013, 16:42
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 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
serg_k1
сообщение Jun 13 2013, 05:36
Сообщение #11


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

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



Цитата
500 слов раз в секунду или чаще?

32р 400 слов ~16MГц , это как бы строка. затем новый адрес и повтор
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jun 13 2013, 09:56
Сообщение #12


Местный
***

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



Цитата(serg_k1 @ Jun 13 2013, 09:36) *
32р 400 слов ~16MГц , это как бы строка. затем новый адрес и повтор


Разъясните, что означает ~16MГц?

Вы хотите передавать 16 000 000 раз в секунду 400 32-разрядных слов?
или 16 000 000 одно 32 разрядного слова,
или 16 мегабайт в сек
или 16 мегабит/сек?
Go to the top of the page
 
+Quote Post
serg_k1
сообщение Jun 13 2013, 11:52
Сообщение #13


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

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



Цитата(aabmail @ Jun 13 2013, 13:56) *
Разъясните, что означает ~16MГц?

Вы хотите передавать 16 000 000 раз в секунду 400 32-разрядных слов?
или 16 000 000 одно 32 разрядного слова,
или 16 мегабайт в сек
или 16 мегабит/сек?

32р слово записывается с частотой 16МГц. таких слов 400. это записывается по одному начальному адресу. 9 разрядов. пусть с адреса 8000_0000 по 8000_01FF(если 512) . потом наращивается адрес для следующей строки еще 10разрядов с 10 по 19,. всего 19разрядов. это вся информация. может быть еще один или два разряда, чтобы следующую писать в другую область памяти. всего от 19 до 22разрядов адреса.
Go to the top of the page
 
+Quote Post
aabmail
сообщение Jun 13 2013, 15:34
Сообщение #14


Местный
***

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



Цитата(serg_k1 @ Jun 13 2013, 15:52) *
32р слово записывается с частотой 16МГц. таких слов 400. это записывается по одному начальному адресу. 9 разрядов. пусть с адреса 8000_0000 по 8000_01FF(если 512) . потом наращивается адрес для следующей строки еще 10разрядов с 10 по 19,. всего 19разрядов. это вся информация. может быть еще один или два разряда, чтобы следующую писать в другую область памяти. всего от 19 до 22разрядов адреса.


Вы хотите сказать, что данные в Вашу плату вводятся по последовательному интерфейсу на частоте 16 МГц пакетами по 400 32битных слов? Если так, и если исходить из того, что пакеты поступают друг за другом встык, то поток данных получается 2 Мбайта в сек. Для нашего верианта построения проекта это максимально возможный поток. Мы недавно купили плату отладки AVNET, скачали с их сайта готовый проект, включающий тест пропускной способности. Там примерно так и получалось (несмотря на то, что там гигабитный Ethernet) . Это к тому, что возможно, система не будет успевать переработать ваши данные, и часть будет пропадать.

Чтобы переправить данные в DDR, записывать их в FIFO.

1. нужно найти в user_logic.vhd DATA_CAPTURE_FIFO_I. Там в качестве примера уже инстанциирован FIFO. Идея примера в том, что блэйз кладет данные в fifo и сам же их оттуда считывает. Нужно адаптировать пример под себя.

в DATA_CAPTURE_FIFO_I:

2. C_DEPTH заменяете на 400
3. к порту Data_In вместо того, что там написано, подключаете свои данные (32 bit)
4. управляете записью сигналом FIFO_Write.
5. Проверяйте состояние fifo сигналами FIFO_empty, FIFO_full и addr. Не допускайте переполнения.

В программе MicroBlaze:

6. Когда вы создавали ядро через визард, у вас в проекте должна была появиться папка drivers, в которой должны лежать примеры считывания из ядра. Должно быть что-то вроде AXI_mmm_core_MasterSendBytes (в зависимости от того, как вы назвали свое ядро).

Как-то так.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zuuuuk   MicroBlaze + DDR3 + my_IP на AXI   May 5 2013, 15:44
||- - serg_k1   Цитата(aabmail @ Jun 13 2013, 19:34) 3. к...   Jun 14 2013, 06:42
|- - serg_k1   Цитата(aabmail @ Jun 11 2013, 13:54) Ваш ...   Jun 11 2013, 12:11
- - Golikov A.   А что если так. Делаете микроблайз в нем включае...   Jun 10 2013, 10:44
|- - serg_k1   Цитата(Golikov A. @ Jun 10 2013, 14:44) А...   Jun 10 2013, 12:24
- - Golikov A.   так вы что хотите написать свой акси конектор что ...   Jun 10 2013, 14:07
|- - serg_k1   Цитата(Golikov A. @ Jun 10 2013, 18:07) т...   Jun 11 2013, 06:43
- - Golikov A.   я делаю визардом из XPS компонент, обычно с верило...   Jun 12 2013, 07:42
- - Golikov A.   на гигабитном езернете, в крайне не оптимальном ре...   Jun 13 2013, 17:19
- - Golikov A.   такс... ФИФО это компонент с входом и выходом пар...   Jun 14 2013, 07:00
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 11:00) Д...   Jun 14 2013, 07:54
|- - akorud   Цитата(serg_k1 @ Jun 14 2013, 09:54) созд...   Jun 16 2013, 20:54
|- - aabmail   Цитата(akorud @ Jun 17 2013, 00:54) Ну та...   Jun 17 2013, 10:09
|- - akorud   Цитата(aabmail @ Jun 17 2013, 12:09) Обыч...   Jun 17 2013, 13:26
- - aabmail   ЦитатаКогда на входе строба записи появляется един...   Jun 14 2013, 08:04
- - Golikov A.   то данные из data_in на этом же цикле записываются...   Jun 14 2013, 10:36
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 14:36) я...   Jun 14 2013, 12:53
- - Golikov A.   сдается мне у кого-то полная путаница в голове.. ...   Jun 14 2013, 13:59
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) ...   Jun 14 2013, 14:11
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) г...   Jun 17 2013, 13:25
|- - serg_k1   Цитата(Golikov A. @ Jun 14 2013, 17:59) г...   Jun 19 2013, 12:21
|- - akorud   Цитата(serg_k1 @ Jun 19 2013, 14:21) помо...   Jun 19 2013, 13:25
|- - serg_k1   Цитата(akorud @ Jun 19 2013, 17:25) Если ...   Jun 19 2013, 14:05
|- - akorud   Цитата(serg_k1 @ Jun 19 2013, 16:05) т.е....   Jun 19 2013, 14:27
|- - serg_k1   Цитата(akorud @ Jun 19 2013, 18:27) BE - ...   Jun 20 2013, 13:53
|- - akorud   Не соглашусь, ну на то тут и форум чтобы можно был...   Jun 20 2013, 15:51
||- - TimeToSleep   Цитата(akorud @ Jun 20 2013, 16:51) Зачем...   Feb 12 2016, 07:16
||- - akorud   Цитата(TimeToSleep @ Feb 12 2016, 08:16) ...   Feb 13 2016, 15:45
||- - TimeToSleep   Цитата(akorud @ Feb 13 2016, 16:45) Если ...   Feb 17 2016, 14:34
||- - TimeToSleep   Цитата(akorud @ Jun 19 2013, 15:27) BE - ...   Feb 18 2016, 07:40
||- - akorud   Цитата(TimeToSleep @ Feb 18 2016, 08:40) ...   Feb 22 2016, 10:43
||- - TimeToSleep   Цитата(akorud @ Feb 22 2016, 11:43) 1. По...   Feb 25 2016, 07:00
||- - akorud   Цитата(TimeToSleep @ Feb 25 2016, 08:00) ...   Feb 25 2016, 09:48
||- - TimeToSleep   Цитата(akorud @ Feb 25 2016, 10:48) Если ...   Feb 25 2016, 12:40
|||- - akorud   Да, оно.   Feb 25 2016, 18:58
||- - TimeToSleep   Цитата(akorud @ Feb 25 2016, 12:48) Далее...   Feb 26 2016, 07:11
||- - akorud   Цитата(TimeToSleep @ Feb 26 2016, 08:11) ...   Feb 26 2016, 10:17
||- - TimeToSleep   Цитата(akorud @ Feb 26 2016, 13:17) Что-т...   Mar 9 2016, 06:04
||- - TimeToSleep   Цитата(akorud @ Feb 26 2016, 13:17) Что-т...   Mar 11 2016, 06:13
|- - akorud   Цитата(serg_k1 @ Jun 20 2013, 15:53) спас...   Jun 21 2013, 06:58
- - Golikov A.   да ничего там не условно. В модуль входит шина АК...   Jun 17 2013, 19:47
- - Golikov A.   чет я не понимаю. вроде бы 2 задачи 1. У вас модул...   Jun 20 2013, 05:01
|- - akorud   Цитата(Golikov A. @ Jun 20 2013, 07:01) ....   Jun 20 2013, 08:18
- - Golikov A.   каким мастером? как можно управлять мастером? я т...   Jun 20 2013, 10:13
- - Golikov A.   вообщем это делается так. Есть микроблайз с ДДР, ...   Jun 20 2013, 15:02
- - Golikov A.   Да я что-то уже путаюсь. Мне кажется что топикстар...   Jun 20 2013, 18:41
|- - serg_k1   Цитата(Golikov A. @ Jun 20 2013, 22:41) Д...   Jun 24 2013, 05:43
|- - akorud   Как то все очень запутано - кажется ТС пробует ...   Jun 24 2013, 10:03
|- - serg_k1   Цитата(akorud @ Jun 24 2013, 14:03) Как т...   Jun 24 2013, 14:03
||- - akorud   Цитата(serg_k1 @ Jun 24 2013, 16:03) я на...   Jun 24 2013, 14:38
||- - serg_k1   Цитата(akorud @ Jun 24 2013, 18:38) Да, о...   Jun 25 2013, 11:14
||- - serg_k1   Цитата(serg_k1 @ Jun 25 2013, 15:14) или ...   Jun 25 2013, 12:29
||- - akorud   Цитата(serg_k1 @ Jun 25 2013, 13:14) .tx_...   Jun 25 2013, 13:28
|- - TimeToSleep   Цитата(akorud @ Jun 24 2013, 11:03) Я бы ...   Feb 19 2016, 12:55
- - TimeToSleep   Здравствуйте, akorud . Тема достаточно забытая, н...   Feb 11 2016, 14:20
- - TimeToSleep   Подскажите, пожалуйста, сталкивался ли кто-то с те...   Mar 18 2016, 06:03


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

 


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


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