Перейти к содержанию
    

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: извините, упустил этот момент.

 

Хм. Как нет...

А у меня зажегся светодиод, кстати :laughing: , оказывается я забыл выставить регистр 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

Если Вы подключите 2 мастера к одной "колонке" AXI арбитр будет сгенерирован автоматически. Далее просто из своего мастера пишите в любую память на AXI (согласно адресации на шине). Только я смотрю у Вас ее нет - создайте что-то вроде AXI BRAM если не хочется с DDR возиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если Вы подключите 2 мастера к одной "колонке" AXI арбитр будет сгенерирован автоматически. Далее просто из своего мастера пишите в любую память на AXI (согласно адресации на шине). Только я смотрю у Вас ее нет - создайте что-то вроде AXI BRAM если не хочется с DDR возиться.

 

Да, действительно. Арбитр автоматически формируется.

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

 

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

 

BRAM.jpg

Изменено пользователем TimeToSleep

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Далее просто из своего мастера пишите в любую память на AXI (согласно адресации на шине).

 

А можете подсказать как смотреть память, записалось ли туда какое либо значение? По XMD? Он разве не сбросит программу (точнее остановит и сбросит вроде как) на плате?

Или читать посредством своего же мастера?

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

Хочу попытаться реализовать что-то представленное на скрине (думаю, что всё прозрачно понятно на нём)

 


 

 

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

Изменено пользователем TimeToSleep

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можете подсказать как смотреть память, записалось ли туда какое либо значение? По XMD? Он разве не сбросит программу (точнее остановит и сбросит вроде как) на плате?

Ну написать простую программку на microblaze - UART консоль с командами (например команда "mr" прочитает память и напишет содержимое на консоли).

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

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

 

Что касается количества тактов - AXI ориентирована на пакетную передачу и накладные расходы на передачу одного байта весьма высоки, вполне может быть 40 тактов. В стандарте хорошо описано (и даже нарисовано :-) что и как происходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что-то Вы как-то путаете. Если используете 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 на скринах выделен)

aaxi_chipscope.jpg

 

aaxi_sim.jpg

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Всё работает корректно, кроме srl_fifo_f. При моделировани отдельно от user_logic этот буфер выдаёт данные. Но при моделировании системы он также выдаёт их ,но не в случае загрузки кода на плату.

Подскажите, пожалуйста, может стоит заменить fifo на собственную? Или же лучше подразобраться в этой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, пожалуйста, сталкивался ли кто-то с тем, что при симуляции программы всё работает идеально, а при загрузке на плату работа совершенно отличается, сигналы, которые должны быть в активном уровне, находятся в "0", хотя сигналы, управляемые ими, изменяются? Абсолютно не понимаю почему так происходит :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...