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

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> MicroBlaze + DDR3 + my_IP на AXI, подключение к AXI
TimeToSleep
сообщение Feb 25 2016, 07:00
Сообщение #61


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 13-12-14
Пользователь №: 84 106



Цитата(akorud @ Feb 22 2016, 11:43) *
1. По монстрам Bus2IP и IP2Bus я Вам уже не помогу - последний раз работал в ними года 3 назад и уже все забыл.

2. Vivado -> Tools -> "Create and package IP" -> и Next, Next, Next... :-)

3. Вам известно, а нам нет. Вы кажется даже не писали, что он к GPIO подключен.

Далее, на приложенной картинке в видимом времени транзакции на шине AXI нет от слова вообще.
Да и зачем вам 2 шины? Куда проще своим мастером писать в память видимую Microblaze и смотреть записалось ли.



1) Но вы уже помогли. Спасибо вам большое. Конечно, самому разбираться необходимо, но ваша помощь, учитывая, что для вас это забытая информация, не оценима:-)

2) Хорошо, с вивадо попробую посмотреть что это такое. А это случаем не то же самое что Core Generator IP в ISE, попробую в нём сначала?

3) Эм... 05.gif извините, упустил этот момент.

Хм. Как нет...
А у меня зажегся светодиод, кстати laughing.gif , оказывается я забыл выставить регистр byte enable (BE) в единицы (и после этого по кнопке всё он загорелся). А вообще да, меня тоже частично смущает то, что я вижу на Chipscope'e.
(А вообще светодиод зажегся после того, как я выставил wr_ack (подтверждение записи), BE, mst_go, addr, length (нужно ли её выставлять еще не уверен, но проверю сегодня). А также два регистра выходных это IP2Bus_MstWr_d и IP2Bus_Data. Но мне кажется, что последний не нужно писать, т.к. это шина может выдавать на выход различные регистры из mst_reg, который в свою очередь представляет собой массив из 16 8-ми разрядных регистров ( в нем регистры статуса, контроля, адреса, BE, mst_go).

(Забыл сказать, на скрине последние строки в чипскопе data_out_d и data_out_addr это то, что явыставляю на шину адреса и IP2Bus_MstWr_d, IP2Bus_Data. А вообще меня напрягает, что нет ответа от слейва в виде сигнала M_AXI_BRESP, которое оповещает о нормальной транзакции)

Да на самом деле не нужны 2 шины. Одна просто для моргания одним светодиодом. По этой же шине я хотел управлять своим светодиодом с кнопкой. Я разделил их на две разные шины, чтобы убедиться, что по кнопке загорится светодиод. Я сегодня проверю будет ли работать это на одной шине, но я не учитываю то, что нужен арбитр для 2х мастеров на шине, поэтому пока не уверен, что это сработает, а как арбитра настроить, я не знаю :-(

В память видимую microblaze'oм? Ого! А подскажите как это сделать? Это было бы гораздо удобнее, чем проверять это через светодиод и чипскоп (особенно учитывая ту проблему, что у меня не работают одновременно chipscope и xmd)

Сообщение отредактировал TimeToSleep - Feb 25 2016, 07:05
Go to the top of the page
 
+Quote Post
akorud
сообщение Feb 25 2016, 09:48
Сообщение #62


Местный
***

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



Цитата(TimeToSleep @ Feb 25 2016, 08:00) *
Да на самом деле не нужны 2 шины. Одна просто для моргания одним светодиодом. По этой же шине я хотел управлять своим светодиодом с кнопкой. Я разделил их на две разные шины, чтобы убедиться, что по кнопке загорится светодиод. Я сегодня проверю будет ли работать это на одной шине, но я не учитываю то, что нужен арбитр для 2х мастеров на шине, поэтому пока не уверен, что это сработает, а как арбитра настроить, я не знаю :-(

В память видимую microblaze'oм? Ого! А подскажите как это сделать? Это было бы гораздо удобнее, чем проверять это через светодиод и чипскоп (особенно учитывая ту проблему, что у меня не работают одновременно chipscope и xmd)


Если Вы подключите 2 мастера к одной "колонке" AXI арбитр будет сгенерирован автоматически. Далее просто из своего мастера пишите в любую память на AXI (согласно адресации на шине). Только я смотрю у Вас ее нет - создайте что-то вроде AXI BRAM если не хочется с DDR возиться.
Go to the top of the page
 
+Quote Post
TimeToSleep
сообщение Feb 25 2016, 12:40
Сообщение #63


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 13-12-14
Пользователь №: 84 106



Цитата(akorud @ Feb 25 2016, 10:48) *
Если Вы подключите 2 мастера к одной "колонке" AXI арбитр будет сгенерирован автоматически. Далее просто из своего мастера пишите в любую память на AXI (согласно адресации на шине). Только я смотрю у Вас ее нет - создайте что-то вроде AXI BRAM если не хочется с DDR возиться.


Да, действительно. Арбитр автоматически формируется.
Сделал сегодня на одной шине и microblaze и свой gpio (led), который по кнопке зажигается. И, кстати, length не нужно выставлять для нормальной транзакции. IP2Bus_Data тоже не нужен для передачи. Но на нём видимо будет ответ, когда я буду пытаться читать по адресу, это следующая задача.

С DDR вроде не так всё просто, поэтому наверно начну с BRAM. Это ведь оно то, что на картинке?



Сообщение отредактировал TimeToSleep - Feb 26 2016, 06:33
Go to the top of the page
 
+Quote Post
akorud
сообщение Feb 25 2016, 18:58
Сообщение #64


Местный
***

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



Да, оно.
Go to the top of the page
 
+Quote Post
TimeToSleep
сообщение Feb 26 2016, 07:11
Сообщение #65


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 13-12-14
Пользователь №: 84 106



Цитата(akorud @ Feb 25 2016, 12:48) *
Далее просто из своего мастера пишите в любую память на AXI (согласно адресации на шине).


А можете подсказать как смотреть память, записалось ли туда какое либо значение? По XMD? Он разве не сбросит программу (точнее остановит и сбросит вроде как) на плате?
Или читать посредством своего же мастера?
Еще вопрос по поводу burst передачи. Можно тоже небольшую консультацию. У меня "окно" примерно на 40 тактов 100МГц сигнала на передачу single beat (единичная передача), при меньшем окне передача удачно не заканчивается, что-то подвисает и светодиод больше не реагирует на кнопку, но это вероятно связано с тем, как я строю "свой" протокол (сделанный вручную проще говоря и подгоняемый под стандартный). Насколько я понимаю при burst передаче всё должно происходить значительно быстрее? Или я не прав?
Хочу попытаться реализовать что-то представленное на скрине (думаю, что всё прозрачно понятно на нём)

CODE



Что-то BRAM далеко не такой простой. Как писать по шине AWID (которое характеризует ID компонента, как я понял) и WSTRB (это ведь строб? зачем он нужен?) ?

Сообщение отредактировал TimeToSleep - Feb 26 2016, 09:15
Go to the top of the page
 
+Quote Post
akorud
сообщение Feb 26 2016, 10:17
Сообщение #66


Местный
***

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



Цитата(TimeToSleep @ Feb 26 2016, 08:11) *
А можете подсказать как смотреть память, записалось ли туда какое либо значение? По XMD? Он разве не сбросит программу (точнее остановит и сбросит вроде как) на плате?

Ну написать простую программку на microblaze - UART консоль с командами (например команда "mr" прочитает память и напишет содержимое на консоли).
Цитата(TimeToSleep @ Feb 26 2016, 08:11) *
Что-то BRAM далеко не такой простой. Как писать по шине AWID (которое характеризует ID компонента, как я понял) и WSTRB (это ведь строб? зачем он нужен?) ?

Что-то Вы как-то путаете. Если используете Bus2IP то насколько я помню к AXI напрямую писать ничего не надо. Если непосредственно AXI - вся документация свободно доступна на сайте ARM - читайте и делайте по стандарту - увы, нет другого выхода. Если мешаете все в кучу - как мне кажется ничем хорошим не кончится.

Что касается количества тактов - AXI ориентирована на пакетную передачу и накладные расходы на передачу одного байта весьма высоки, вполне может быть 40 тактов. В стандарте хорошо описано (и даже нарисовано :-) что и как происходит.
Go to the top of the page
 
+Quote Post
TimeToSleep
сообщение Mar 9 2016, 06:04
Сообщение #67


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 13-12-14
Пользователь №: 84 106



Цитата(akorud @ Feb 26 2016, 13:17) *
Что-то Вы как-то путаете. Если используете Bus2IP то насколько я помню к AXI напрямую писать ничего не надо. Если непосредственно AXI - вся документация свободно доступна на сайте ARM - читайте и делайте по стандарту - увы, нет другого выхода. Если мешаете все в кучу - как мне кажется ничем хорошим не кончится.



Здравствуйте.
Да, я вас понял, спасибо.
Я сначала пробовал через Bus2IP, но не получилось, поэтому начал лазить в "потрохах", через которые у меня получилось мигать светодиодом. Дальше, я решил писать через Bus2IP, и у меня выставляется адрес, биты разрешения, длина пакета на выходе мастера, но данных на выходе нет, а при моделировании данные на выходе есть. Никак не могу понять с чем это связано. Необходимо ли управлять еще такими сигналами, как:

-- bus2ip_mstrd_rem -- Bus to Ip master read data rem
-- bus2ip_mstrd_sof_n -- Bus to Ip master read start of frame
-- bus2ip_mstrd_eof_n -- Bus to Ip master read end of frame
-- bus2ip_mstrd_src_rdy_n -- Bus to Ip master read source ready
-- bus2ip_mstrd_src_dsc_n -- Bus to Ip master read source dsc

-- bus2ip_mstwr_dst_rdy_n -- Bus to Ip master write dest. ready
-- bus2ip_mstwr_dst_dsc_n -- Bus to Ip master write dest. ready

При моделировании я использовал такие сигналы, как
Bus2IP_MstRd_src_rdy_n
Bus2IP_MstWr_dst_rdy_n и выставлял их в 0 (т.е. активное).
Но их игнорирование, как и всех сигналов, что перечислил, всё равно позволяет выставить данные на шине ip2bus_mstwr_d

Прикладываю скрины моделирования и chipscope'а после загрузки программы на плату. (ip2bus_mstwr_d на скринах выделен)



Go to the top of the page
 
+Quote Post
TimeToSleep
сообщение Mar 11 2016, 06:13
Сообщение #68


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 13-12-14
Пользователь №: 84 106



Цитата(akorud @ Feb 26 2016, 13:17) *
Что-то Вы как-то путаете. Если используете Bus2IP то насколько я помню к AXI напрямую писать ничего не надо. Если непосредственно AXI - вся документация свободно доступна на сайте ARM - читайте и делайте по стандарту - увы, нет другого выхода. Если мешаете все в кучу - как мне кажется ничем хорошим не кончится.


Всё работает корректно, кроме srl_fifo_f. При моделировани отдельно от user_logic этот буфер выдаёт данные. Но при моделировании системы он также выдаёт их ,но не в случае загрузки кода на плату.
Подскажите, пожалуйста, может стоит заменить fifo на собственную? Или же лучше подразобраться в этой?
Go to the top of the page
 
+Quote Post
TimeToSleep
сообщение Mar 18 2016, 06:03
Сообщение #69


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 13-12-14
Пользователь №: 84 106



Подскажите, пожалуйста, сталкивался ли кто-то с тем, что при симуляции программы всё работает идеально, а при загрузке на плату работа совершенно отличается, сигналы, которые должны быть в активном уровне, находятся в "0", хотя сигналы, управляемые ими, изменяются? Абсолютно не понимаю почему так происходит 05.gif
Go to the top of the page
 
+Quote Post

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

 


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


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