|
AXI DataMover (S2MM) сразу после сброса готов принять 4 слова данных из стрима, хотя никакой команды на это ещё не было, как я понимаю, он сразу после сброса не должен держать Ready в 1 |
|
|
|
Dec 3 2014, 04:58
|

Гуру
     
Группа: Свой
Сообщений: 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 слова), которые будут потеряны при первой пересылке. При дальнейших пересылках всё работает как положено по датащиту.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
 |
Ответов
|
Dec 5 2014, 13:44
|

Гуру
     
Группа: Свой
Сообщений: 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 такта держал.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Dec 17 2014, 08:19
|
Местный
  
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Dec 17 2014, 09:16
|

Гуру
     
Группа: Свой
Сообщений: 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 слов.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Dec 17 2014, 10:41
|
Местный
  
Группа: Свой
Сообщений: 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 такта как в начале темы.
|
|
|
|
|
Dec 18 2014, 04:36
|

Гуру
     
Группа: Свой
Сообщений: 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 по компонентам в стандартном репозитории - ничего подходящего не предложило. С логикой реади из датамувера удалось разобраться после моих разъяснений?
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Dec 18 2014, 05:53
|
Местный
  
Группа: Свой
Сообщений: 236
Регистрация: 28-06-13
Из: Минск, Беларусь
Пользователь №: 77 312

|
Цитата(Krys @ Dec 18 2014, 07:36)  С логикой реади из датамувера удалось разобраться после моих разъяснений? Благодарю за ответы. Большое спасибо с логикой разобрался. Если все верно, то алгоритм буду пробывать такой: наполняю фифо, по сигналу записи последнего слова в фифо запускаю cmd_valid, и вычитываю burst датамувером. Пока вопросов больше нет. Думаю позже появятся Большое спасибо за помощь!
|
|
|
|
Сообщений в этой теме
Krys AXI DataMover (S2MM) сразу после сброса готов принять 4 слова данных из стрима, хотя никакой команды на это ещё не было Dec 3 2014, 04:58 farbius Скажите вы данные сразу в порты DM кидаете? Я имею... Dec 5 2014, 08:55 Corvus +1
Тоже недавно наткнулся на эту проблему. И именн... Dec 5 2014, 12:21 Corvus Цитата(Krys @ Dec 5 2014, 16:44) Покажите... Dec 5 2014, 20:46 Krys Спасибо. Правда в его потоке слов непонятно, как о... Dec 8 2014, 03:06 Corvus Насколько я понял из этого и других обсуждений - с... Dec 8 2014, 08:47  Krys Цитата(Corvus @ Dec 8 2014, 14:47) Но есл... Dec 10 2014, 04:36   Corvus О, как. Спасибо! Dec 10 2014, 17:33 Krys А, нет, потом дописали, мол, глаза разуйте, всё до... Dec 11 2014, 03:56 Krys Всё, признался он, что не документирована эта фича... Dec 12 2014, 02:30 Krys Пожалуйста ) Обращайтесь ) Описанный алгоритм врод... Dec 18 2014, 06:29 farbius Цитата(Krys @ Dec 18 2014, 09:29) Пожалуй... Dec 18 2014, 13:03 Krys Советую снять чипскопом осциллограммы на его ногах... Dec 19 2014, 03:42 farbius Цитата(Krys @ Dec 19 2014, 06:42) Советую... Dec 19 2014, 06:22 Krys Пытаюсь разобраться по мере возможностей. Дайте по... Dec 22 2014, 03:41 farbius Цитата(Krys @ Dec 22 2014, 06:41) Пытаюсь... Dec 22 2014, 17:51 farbius просмотрел форум xilinx, ваш пост и сопутствующие ... Dec 22 2014, 19:01 Krys Цитата(farbius @ Dec 23 2014, 01:01) у ме... Dec 23 2014, 05:05  farbius Цитата(Krys @ Dec 23 2014, 08:05) Вот Вы ... Dec 24 2014, 03:11   Krys Цитата(farbius @ Dec 24 2014, 09:11) безу... Dec 24 2014, 04:43    farbius Цитата(Krys @ Dec 24 2014, 07:43) Мне неп... Dec 24 2014, 05:21     Krys Цитата(farbius @ Dec 24 2014, 11:21) для ... Dec 24 2014, 07:23      farbius Цитата(Krys @ Dec 24 2014, 10:23) Как у В... Dec 24 2014, 08:36       Krys Цитата(farbius @ Dec 24 2014, 14:36) я ра... Dec 24 2014, 10:45        farbius Цитата(Krys @ Dec 24 2014, 13:45) Ну фифо... Dec 25 2014, 08:09         Krys Цитата(farbius @ Dec 25 2014, 14:09) Пола... Dec 25 2014, 10:05          farbius Цитата(Krys @ Dec 25 2014, 13:05) Вот и н... Dec 25 2014, 10:13           Krys Цитата(farbius @ Dec 25 2014, 16:13) прям... Dec 25 2014, 11:19            farbius Цитата(Krys @ Dec 25 2014, 14:19) Прямое ... Dec 25 2014, 12:30             Krys Цитата(farbius @ Dec 25 2014, 18:30) всег... Dec 26 2014, 03:02 Krys Ещё бы по ошибке data2mem из первого поста мне кто... Dec 23 2014, 07:03
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|