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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> AXI DataMover (S2MM) сразу после сброса готов принять 4 слова данных из стрима, хотя никакой команды на это ещё не было, как я понимаю, он сразу после сброса не должен держать Ready в 1
Krys
сообщение Dec 3 2014, 04:58
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Здравствуйте. Такая вот проблема. AXI DataMover (S2MM) сразу после сброса готов принять 4 слова данных из стрима, хотя никакой команды на это ещё не было, как я понимаю, он сразу после сброса не должен держать Ready в 1, пока не поступит команда.
Вот осциллограммы из ChipScope Analyzer:
Прикрепленное изображение


Так выглядит описание в файле *.mhs:
CODE
BEGIN axi_datamover
PARAMETER INSTANCE = axi_datamover_y
PARAMETER HW_VER = 4.02.a
PARAMETER C_INCLUDE_MM2S = 0
PARAMETER C_INCLUDE_S2MM = 1
PARAMETER C_INCLUDE_S2MM_DRE = 0
PARAMETER C_S2MM_BTT_USED = 23
PARAMETER C_S2MM_INCLUDE_SF = 0
PARAMETER C_S2MM_BURST_SIZE = 256
PARAMETER C_INCLUDE_S2MM_STSFIFO = 1
PARAMETER C_S2MM_STSCMD_FIFO_DEPTH = 1
PARAMETER C_S2MM_STSCMD_IS_ASYNC = 1
PARAMETER C_M_AXI_S2MM_ID_WIDTH = 3
PARAMETER C_S2MM_ADDR_PIPE_DEPTH = 4
BUS_INTERFACE M_AXI_S2MM = axi4_0
BUS_INTERFACE S_AXIS_S2MM_CMD = axi_dma_ctrl_y_M_AXIS_CMD
BUS_INTERFACE M_AXIS_S2MM_STS = axi_datamover_y_M_AXIS_S2MM_STS
BUS_INTERFACE S_AXIS_S2MM = axi_stream_fft_core_0_Y_AXIS
PORT m_axi_s2mm_aclk = clk_75_0000MHzPLL0
PORT m_axis_s2mm_cmdsts_aresetn = DIP_Switches_4Bits_TRI_I[0]
PORT m_axi_s2mm_aresetn = DIP_Switches_4Bits_TRI_I[0]
PORT m_axis_s2mm_cmdsts_awclk = axi_dma_ctrl_y_axis_aclk_0

END


Я использовал плату SP-605 со SPARTAN-6. Софт - ISE 14.7 (Planahead + XPS).

Чтобы нагляднее продемонстрировать проблему я специально перевёл датамувер в режим асинхронных команд, чтобы был дополнительный сброс (на всякий случай). Все сбросы датамувера я подключил к DIP-Switch на отладочной плате, и захватил осциллограммы сразу после снятия сброса. Хотя проблема проявляется и без всего перечисленного, но не так наглядно.

Кто-нибудь с таким сталкивался? Как лечить? Пока я делаю программный обход этой проблемы, добавляя в стрим избыточные данные (те самые 4 слова), которые будут потеряны при первой пересылке. При дальнейших пересылках всё работает как положено по датащиту.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Dec 5 2014, 08:55
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Скажите вы данные сразу в порты DM кидаете? Я имею ввиду S2MM (tkeep, tvalid, tready ...) и cmd регистр?
Go to the top of the page
 
+Quote Post
Corvus
сообщение Dec 5 2014, 12:21
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



+1
Тоже недавно наткнулся на эту проблему. И именно 4 слова. Быстро разобраться не получилось, пока обошли программным костылём и отложили. Но баг висит, хочу разобраться. smile3046.gif
На форуме xilinx натыкался на описание этой проблемы, но решения там так и не нашли.
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 5 2014, 13:44
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(Corvus @ Dec 5 2014, 18:21) *
На форуме xilinx натыкался на описание этой проблемы, но решения там так и не нашли.
Покажите плиз


Цитата(farbius @ Dec 5 2014, 14:55) *
Скажите вы данные сразу в порты DM кидаете? Я имею ввиду S2MM (tkeep, tvalid, tready ...) и cmd регистр?

Извините, не понял вопроса.
Данные на мастере стрима уже готовы, ждут, пока им дадут реди. Реди даёт датамувер. Но датамуверу ещё не дали команду, он находился в сбросе. Затем сброс убрали, а он уже сразу же скушал 4 слова, при том без какой-либо команды. Т.е. реади 4 такта держал.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Dec 5 2014, 20:46
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Цитата(Krys @ Dec 5 2014, 16:44) *
Покажите плиз


Сходу именно то обсуждение не нагуглилось.
но вот ещё одно
http://forums.xilinx.com/t5/Embedded-Proce...lem/td-p/536617
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 8 2014, 03:06
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Спасибо. Правда в его потоке слов непонятно, как он это победил.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Dec 8 2014, 08:47
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



Насколько я понял из этого и других обсуждений - смириться и поставить заплатку. Но если не трудно, напишите в тех.поддержку Xilinx, они быстро отвечают, хоть и редко по делу. Но может в этот раз повезёт, баг же реально присутствует.
Ежели чего нароете - отпишитесь здесь, пожалуйста. А то я до февраля к этой проблеме вряд ли вернусь.
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 10 2014, 04:36
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(Corvus @ Dec 8 2014, 14:47) *
Но если не трудно, напишите в тех.поддержку Xilinx
Готово: http://forums.xilinx.com/t5/Embedded-Proce...ter/td-p/550684

Цитата(Corvus @ Dec 8 2014, 14:47) *
баг же реально присутствует.
Как выяснилось, это не баг, а недокументированная фича )))
Т.е. с этим жить можно, просто надо знать, как обходить.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Corvus
сообщение Dec 10 2014, 17:33
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 24-04-08
Из: Зеленоград
Пользователь №: 37 056



О, как. Спасибо! beer.gif
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 11 2014, 03:56
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



А, нет, потом дописали, мол, глаза разуйте, всё документировано.
Правда не в той версии датамувера. Но всё же это говорит о том, что им видимо уже на это жаловались, и они включили описание такого поведения для следующих версий датамувера. Но у меня то предыдущая версия. И это версия датамувера, а не версия документа. Поэтому я не могу просто взять и читать документацию на самую свежую версию датамувера, т.к. в общем случае поведение разных версий датамуверов может быть разное, и то, что документировано в последней версии, может чисто физически не иметь место в предыдущих версиях... Индусы не понимают что ли, что эту фичу нужно документировать не только для последней версии датамувера, а и для всех ранних, где это наблюдается? )))


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 12 2014, 02:30
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Всё, признался он, что не документирована эта фича в старой версии ))


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Dec 17 2014, 08:19
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(Krys @ Dec 5 2014, 16:44) *
Извините, не понял вопроса.
Данные на мастере стрима уже готовы, ждут, пока им дадут реди. Реди даёт датамувер. Но датамуверу ещё не дали команду, он находился в сбросе. Затем сброс убрали, а он уже сразу же скушал 4 слова, при том без какой-либо команды. Т.е. реади 4 такта держал.


подскажите пожалуйста как организовали стрим в датамувер и из него в MM?

Использую датамувер для заполнения ДДР . Включил его в режиме FULL для S2MM с асинхронным command регистром. Сделал мастером на шине, слейв соответственно ДДР. Из датамувера наружу вывел ноги cmd, sts регистров, и s2mm_ tvalid, s2mm_tdata, tready, tlast, tkeep датамувера. На эти ноги буду вешать фифо. Далее как только фифо full и датамувер ready данные посылаю в ДДР по адресу указанному в cmd регистре.

пока проблемы с запуском датамувера. Просто делаю сброс по всем ресетам, должен по идее наблюдать сигнал ready от датамувера. Сигнал появляется на пару тактов и пропадает.

Идеологию понимаю так: есть реади из датамувера, даю ему валид, он вычитывает burst.
Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 17 2014, 09:16
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(farbius @ Dec 17 2014, 14:19) *
подскажите пожалуйста как организовали стрим в датамувер и из него в MM?
Ну лучше бы Вам конкретизировать вопрос )) Моя корка на выходе имеет фифошку по идеологии стрима (по желанию можно взять готовую AXI-Stream FIFO из CoreGen'а, но у меня обычная, т.к. необходимо конвертировать разрядность, а та не умеет. Главное любая из них должна быть в режиме FWFT).


Цитата(farbius @ Dec 17 2014, 14:19) *
Использую датамувер для заполнения ДДР . Включил его в режиме FULL для S2MM с асинхронным command регистром. Сделал мастером на шине, слейв соответственно ДДР. Из датамувера наружу вывел ноги cmd, sts регистров, и s2mm_ tvalid, s2mm_tdata, tready, tlast, tkeep датамувера. На эти ноги буду вешать фифо.
Ну у меня тоже DDR, всё точно так же. Единственное: tkeep это для чего сигнал? Я его чото не использовал. Ещё смущает последовательность описанных действий:
Цитата(farbius @ Dec 17 2014, 14:19) *
как только фифо full и датамувер ready данные посылаю в ДДР по адресу указанному в cmd регистре.
Если я правильно понял. Вы хотите дождаться ready от датамувера, а затем посылать ему команду на пересылку? Это неправильно, он без команды не даст реади. Исключение - по сбросу 4 такта.


Цитата(farbius @ Dec 17 2014, 14:19) *
пока проблемы с запуском датамувера. Просто делаю сброс по всем ресетам, должен по идее наблюдать сигнал ready от датамувера. Сигнал появляется на пару тактов и пропадает.
Точно на пару? Должно на 4 судя по эпюрам в моём первом посте. И это не "должно" (как Вы пишете), а "так получилось" (недокументированная фича), т.е. это противоречит логике дальнейшей работы. Поэтому если "должно" соответствует Вашей логике, то она неправильная. Попробуйте разобраться повторно. Если что - спрашивайте конкретные вопросы - постараюсь ответить.


Цитата(farbius @ Dec 17 2014, 14:19) *
Идеологию понимаю так: есть реади из датамувера, даю ему валид, он вычитывает burst.
Это утверждение верно. Но у меня судя по наблюдениям не всегда полный бёрст вычитывает, иногда меньше почему-то. Может я хочу сильно много. Поставил максимально возможный для установки - 256 слов.


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post
Alexey_Rostov
сообщение Dec 17 2014, 10:41
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312



Цитата(Krys @ Dec 17 2014, 12:16) *
Ну лучше бы Вам конкретизировать вопрос )) Моя корка на выходе имеет фифошку по идеологии стрима (по желанию можно взять готовую AXI-Stream FIFO из CoreGen'а, но у меня обычная, т.к. необходимо конвертировать разрядность, а та не умеет. Главное любая из них должна быть в режиме FWFT).


Вопрос такой: есть поток данных по 32 разряда, частота например 10 МГц, необходимо этот поток последовательно записать в ДДР (64 Мб). как можно сделать?
мой вариант такой: Для проекта собираю в xps ддр слейв, и мастер датамувер.
Для перехода с клокового домена потока в клоковый домен системы (ддр + дм), как я понимаю необходимо фифо. Фифо имеет вход "наружу", т.е. на запись потока, и выход в датамувер.
Я пока вывел наружу ноги дата мувера: валид, реади, дата и др. Сам фифо буду делать вне XPS.
Если я вас правильно понял?, варианты с фифо могут быть:
-- coregen ядро (выход прикручивать к дата муверу с "наружи")
-- в ise создавать самому (выход прикручивать к дата муверу с "наружи")
-- должно быть готовое фифо в xps (поглядываю в сторону этого варианта, ноги ядра в stream дата мувера "внутри", и ноги наружу).


Цитата(Krys @ Dec 17 2014, 12:16) *
Точно на пару? Должно на 4 судя по эпюрам в моём первом посте. И это не "должно" (как Вы пишете), а "так получилось" (недокументированная фича), т.е. это противоречит логике дальнейшей работы. Поэтому если "должно" соответствует Вашей логике, то она неправильная. Попробуйте разобраться повторно. Если что - спрашивайте конкретные вопросы - постараюсь ответить.


все верно: на 4 такта как в начале темы.

Go to the top of the page
 
+Quote Post
Krys
сообщение Dec 18 2014, 04:36
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271



Цитата(farbius @ Dec 17 2014, 16:41) *
Вопрос такой: есть поток данных по 32 разряда, частота например 10 МГц, необходимо этот поток последовательно записать в ДДР (64 Мб). как можно сделать?
мой вариант такой: Для проекта собираю в xps ддр слейв, и мастер датамувер.
Для перехода с клокового домена потока в клоковый домен системы (ддр + дм), как я понимаю необходимо фифо. Фифо имеет вход "наружу", т.е. на запись потока, и выход в датамувер.
Я пока вывел наружу ноги дата мувера: валид, реади, дата и др. Сам фифо буду делать вне XPS.
Если я вас правильно понял?, варианты с фифо могут быть:
-- coregen ядро (выход прикручивать к дата муверу с "наружи")
-- в ise создавать самому (выход прикручивать к дата муверу с "наружи")
-- должно быть готовое фифо в xps (поглядываю в сторону этого варианта, ноги ядра в stream дата мувера "внутри", и ноги наружу).
Данные утверждения все верные. Небольшие комментарии:

Цитата(farbius @ Dec 17 2014, 16:41) *
-- в ise создавать самому (выход прикручивать к дата муверу с "наружи")
Думаю асинхронное фифо городить самому - неблагодарное занятие. Синхронные - ещё куда ни шло... Лучше взять готовую корку из коргена, кучу времени сэкономите.

Цитата(farbius @ Dec 17 2014, 16:41) *
-- должно быть готовое фифо в xps (поглядываю в сторону этого варианта, ноги ядра в stream дата мувера "внутри", и ноги наружу).
Я такую не находил, взял AXI FIFO из коргена и обернул как User IP Core для XPS. Сейчас ещё раз прошёлся поиском по слову FIFO по компонентам в стандартном репозитории - ничего подходящего не предложило.

С логикой реади из датамувера удалось разобраться после моих разъяснений?


--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
Go to the top of the page
 
+Quote Post

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

 


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


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