Krys 2 3 декабря, 2014 Опубликовано 3 декабря, 2014 · Жалоба Здравствуйте. Такая вот проблема. AXI DataMover (S2MM) сразу после сброса готов принять 4 слова данных из стрима, хотя никакой команды на это ещё не было, как я понимаю, он сразу после сброса не должен держать Ready в 1, пока не поступит команда. Вот осциллограммы из ChipScope Analyzer: Так выглядит описание в файле *.mhs: 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 слова), которые будут потеряны при первой пересылке. При дальнейших пересылках всё работает как положено по датащиту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 5 декабря, 2014 Опубликовано 5 декабря, 2014 · Жалоба Скажите вы данные сразу в порты DM кидаете? Я имею ввиду S2MM (tkeep, tvalid, tready ...) и cmd регистр? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 5 декабря, 2014 Опубликовано 5 декабря, 2014 · Жалоба +1 Тоже недавно наткнулся на эту проблему. И именно 4 слова. Быстро разобраться не получилось, пока обошли программным костылём и отложили. Но баг висит, хочу разобраться. :smile3046: На форуме xilinx натыкался на описание этой проблемы, но решения там так и не нашли. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 5 декабря, 2014 Опубликовано 5 декабря, 2014 · Жалоба На форуме xilinx натыкался на описание этой проблемы, но решения там так и не нашли.Покажите плиз Скажите вы данные сразу в порты DM кидаете? Я имею ввиду S2MM (tkeep, tvalid, tready ...) и cmd регистр? Извините, не понял вопроса. Данные на мастере стрима уже готовы, ждут, пока им дадут реди. Реди даёт датамувер. Но датамуверу ещё не дали команду, он находился в сбросе. Затем сброс убрали, а он уже сразу же скушал 4 слова, при том без какой-либо команды. Т.е. реади 4 такта держал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 5 декабря, 2014 Опубликовано 5 декабря, 2014 · Жалоба Покажите плиз Сходу именно то обсуждение не нагуглилось. но вот ещё одно http://forums.xilinx.com/t5/Embedded-Proce...lem/td-p/536617 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 8 декабря, 2014 Опубликовано 8 декабря, 2014 · Жалоба Спасибо. Правда в его потоке слов непонятно, как он это победил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 8 декабря, 2014 Опубликовано 8 декабря, 2014 · Жалоба Насколько я понял из этого и других обсуждений - смириться и поставить заплатку. Но если не трудно, напишите в тех.поддержку Xilinx, они быстро отвечают, хоть и редко по делу. Но может в этот раз повезёт, баг же реально присутствует. Ежели чего нароете - отпишитесь здесь, пожалуйста. А то я до февраля к этой проблеме вряд ли вернусь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 10 декабря, 2014 Опубликовано 10 декабря, 2014 · Жалоба Но если не трудно, напишите в тех.поддержку XilinxГотово: http://forums.xilinx.com/t5/Embedded-Proce...ter/td-p/550684 баг же реально присутствует.Как выяснилось, это не баг, а недокументированная фича ))) Т.е. с этим жить можно, просто надо знать, как обходить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Corvus 1 10 декабря, 2014 Опубликовано 10 декабря, 2014 · Жалоба О, как. Спасибо! :beer: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 11 декабря, 2014 Опубликовано 11 декабря, 2014 · Жалоба А, нет, потом дописали, мол, глаза разуйте, всё документировано. Правда не в той версии датамувера. Но всё же это говорит о том, что им видимо уже на это жаловались, и они включили описание такого поведения для следующих версий датамувера. Но у меня то предыдущая версия. И это версия датамувера, а не версия документа. Поэтому я не могу просто взять и читать документацию на самую свежую версию датамувера, т.к. в общем случае поведение разных версий датамуверов может быть разное, и то, что документировано в последней версии, может чисто физически не иметь место в предыдущих версиях... Индусы не понимают что ли, что эту фичу нужно документировать не только для последней версии датамувера, а и для всех ранних, где это наблюдается? ))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 12 декабря, 2014 Опубликовано 12 декабря, 2014 · Жалоба Всё, признался он, что не документирована эта фича в старой версии )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 17 декабря, 2014 Опубликовано 17 декабря, 2014 · Жалоба Извините, не понял вопроса. Данные на мастере стрима уже готовы, ждут, пока им дадут реди. Реди даёт датамувер. Но датамуверу ещё не дали команду, он находился в сбросе. Затем сброс убрали, а он уже сразу же скушал 4 слова, при том без какой-либо команды. Т.е. реади 4 такта держал. подскажите пожалуйста как организовали стрим в датамувер и из него в MM? Использую датамувер для заполнения ДДР . Включил его в режиме FULL для S2MM с асинхронным command регистром. Сделал мастером на шине, слейв соответственно ДДР. Из датамувера наружу вывел ноги cmd, sts регистров, и s2mm_ tvalid, s2mm_tdata, tready, tlast, tkeep датамувера. На эти ноги буду вешать фифо. Далее как только фифо full и датамувер ready данные посылаю в ДДР по адресу указанному в cmd регистре. пока проблемы с запуском датамувера. Просто делаю сброс по всем ресетам, должен по идее наблюдать сигнал ready от датамувера. Сигнал появляется на пару тактов и пропадает. Идеологию понимаю так: есть реади из датамувера, даю ему валид, он вычитывает burst. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 17 декабря, 2014 Опубликовано 17 декабря, 2014 · Жалоба подскажите пожалуйста как организовали стрим в датамувер и из него в MM?Ну лучше бы Вам конкретизировать вопрос )) Моя корка на выходе имеет фифошку по идеологии стрима (по желанию можно взять готовую AXI-Stream FIFO из CoreGen'а, но у меня обычная, т.к. необходимо конвертировать разрядность, а та не умеет. Главное любая из них должна быть в режиме FWFT). Использую датамувер для заполнения ДДР . Включил его в режиме FULL для S2MM с асинхронным command регистром. Сделал мастером на шине, слейв соответственно ДДР. Из датамувера наружу вывел ноги cmd, sts регистров, и s2mm_ tvalid, s2mm_tdata, tready, tlast, tkeep датамувера. На эти ноги буду вешать фифо.Ну у меня тоже DDR, всё точно так же. Единственное: tkeep это для чего сигнал? Я его чото не использовал. Ещё смущает последовательность описанных действий: как только фифо full и датамувер ready данные посылаю в ДДР по адресу указанному в cmd регистре.Если я правильно понял. Вы хотите дождаться ready от датамувера, а затем посылать ему команду на пересылку? Это неправильно, он без команды не даст реади. Исключение - по сбросу 4 такта. пока проблемы с запуском датамувера. Просто делаю сброс по всем ресетам, должен по идее наблюдать сигнал ready от датамувера. Сигнал появляется на пару тактов и пропадает.Точно на пару? Должно на 4 судя по эпюрам в моём первом посте. И это не "должно" (как Вы пишете), а "так получилось" (недокументированная фича), т.е. это противоречит логике дальнейшей работы. Поэтому если "должно" соответствует Вашей логике, то она неправильная. Попробуйте разобраться повторно. Если что - спрашивайте конкретные вопросы - постараюсь ответить. Идеологию понимаю так: есть реади из датамувера, даю ему валид, он вычитывает burst.Это утверждение верно. Но у меня судя по наблюдениям не всегда полный бёрст вычитывает, иногда меньше почему-то. Может я хочу сильно много. Поставил максимально возможный для установки - 256 слов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksei_Rostov 0 17 декабря, 2014 Опубликовано 17 декабря, 2014 · Жалоба Ну лучше бы Вам конкретизировать вопрос )) Моя корка на выходе имеет фифошку по идеологии стрима (по желанию можно взять готовую AXI-Stream FIFO из CoreGen'а, но у меня обычная, т.к. необходимо конвертировать разрядность, а та не умеет. Главное любая из них должна быть в режиме FWFT). Вопрос такой: есть поток данных по 32 разряда, частота например 10 МГц, необходимо этот поток последовательно записать в ДДР (64 Мб). как можно сделать? мой вариант такой: Для проекта собираю в xps ддр слейв, и мастер датамувер. Для перехода с клокового домена потока в клоковый домен системы (ддр + дм), как я понимаю необходимо фифо. Фифо имеет вход "наружу", т.е. на запись потока, и выход в датамувер. Я пока вывел наружу ноги дата мувера: валид, реади, дата и др. Сам фифо буду делать вне XPS. Если я вас правильно понял?, варианты с фифо могут быть: -- coregen ядро (выход прикручивать к дата муверу с "наружи") -- в ise создавать самому (выход прикручивать к дата муверу с "наружи") -- должно быть готовое фифо в xps (поглядываю в сторону этого варианта, ноги ядра в stream дата мувера "внутри", и ноги наружу). Точно на пару? Должно на 4 судя по эпюрам в моём первом посте. И это не "должно" (как Вы пишете), а "так получилось" (недокументированная фича), т.е. это противоречит логике дальнейшей работы. Поэтому если "должно" соответствует Вашей логике, то она неправильная. Попробуйте разобраться повторно. Если что - спрашивайте конкретные вопросы - постараюсь ответить. все верно: на 4 такта как в начале темы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 18 декабря, 2014 Опубликовано 18 декабря, 2014 · Жалоба Вопрос такой: есть поток данных по 32 разряда, частота например 10 МГц, необходимо этот поток последовательно записать в ДДР (64 Мб). как можно сделать? мой вариант такой: Для проекта собираю в xps ддр слейв, и мастер датамувер. Для перехода с клокового домена потока в клоковый домен системы (ддр + дм), как я понимаю необходимо фифо. Фифо имеет вход "наружу", т.е. на запись потока, и выход в датамувер. Я пока вывел наружу ноги дата мувера: валид, реади, дата и др. Сам фифо буду делать вне XPS. Если я вас правильно понял?, варианты с фифо могут быть: -- coregen ядро (выход прикручивать к дата муверу с "наружи") -- в ise создавать самому (выход прикручивать к дата муверу с "наружи") -- должно быть готовое фифо в xps (поглядываю в сторону этого варианта, ноги ядра в stream дата мувера "внутри", и ноги наружу). Данные утверждения все верные. Небольшие комментарии: -- в ise создавать самому (выход прикручивать к дата муверу с "наружи")Думаю асинхронное фифо городить самому - неблагодарное занятие. Синхронные - ещё куда ни шло... Лучше взять готовую корку из коргена, кучу времени сэкономите. -- должно быть готовое фифо в xps (поглядываю в сторону этого варианта, ноги ядра в stream дата мувера "внутри", и ноги наружу).Я такую не находил, взял AXI FIFO из коргена и обернул как User IP Core для XPS. Сейчас ещё раз прошёлся поиском по слову FIFO по компонентам в стандартном репозитории - ничего подходящего не предложило. С логикой реади из датамувера удалось разобраться после моих разъяснений? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться