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

Krys

Свой
  • Постов

    2 052
  • Зарегистрирован

  • Посещение

Весь контент Krys


  1. Матлаб тоже так делает. Потом ощущаешь, что так удобнее, чем каждый раз лезть в начало программы и объявлять. В верилоге тоже можно без объявления, но получится 1-битный вайр. Потом можно долго удивляться, почему не работает )) Да просто не надо сразу запускать непроверенный 4-дневный расчёт )) Я таких ошибок кучу допускаю второпях, при том даже самый строгий компилятор не всегда в силах мне их все указать. Так что это не панацея. Надо сначала запустить пробный расчёт на коротких данных, посмотреть, как себя ведёт. Затем уже долгий ставить.
  2. Здравствуйте. Корка axi_timer имеет вход freeze якобы для дебага. Куда его подключить к microblaze, чтобы таймер замирал во время приостановки в дебаге?
  3. Ну вот посмотрите в сообщении #10 информацию о версии. Работает на железе. Встраиваемый софтовый проц на ПЛИС. Исходников наверное нет... Т.к. он допилен компанией Xilinx под свои продукты.
  4. А у ксайлинкса есть какие-то продукты без такого свойства? ))) Там же написано NO WARRANTY ))) Да, догадка подтвердилась. Код unsigned int max_per = 0, min_per = (1<<34) - 1; даёт троечку )))
  5. есть мысль: может просто сдвиг циклический? Тогда всё сходится. Единичка сдвинутая на 32 разряда попадает на своё прежнее место, отнимаем единичку получаем ноль. Пока проверить не могу, позже.
  6. c:\Xilinx\14.7\ISE_DS\EDK\gnu\microblaze\nt\bin>mb-gcc --version mb-gcc (GCC) 4.6.4 20120924 (Xilinx 14.1 Build EDK_P.13 28 Sep 2013) Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Хм... действительно, если разобраться, странно... Даже если у меня 32-битная единичка, я её сдвинул за пределы разрядной сетки, получил ноль. Потом единичку отнимаю от нуля. Получаю 0xFFFFFFFF. Косяк ещё и в том, что обычно компилятор давал ворнинг, что сдвигание привело к выходу за пределы разрядной сетки. А в этом случае не поругался.
  7. Ну хорошо, действительно всего стрима. Значит неверно вот это Ваше утверждение: Раз прямое подключение, значит вычитывает датамувер, прокладка вообще не при делах, внутри неё лишь провода прокидываются со входа на выход. Запутываете )) Ага. Ну и на шине cmd_tdata соответствующая правильная команда должна присутствовать в момент cmd_tvalid = '1'. Успехов!
  8. Прямое подключение только шины tdata или вообще всего стрима, включая сигналы tvalid и tready? Если вычитывает прокладка - значит вмешивается, значит подключение через логику. Если прокладка не вмешивается - значит вычитывает не прокладка, а датамувер. Не согласен. Без прокладки данные будут копиться в вашем внешнем фифо. Датамувер находится без команды, он ничего не будет читать. Поэтому "слово ушло" не будет. Будет только "слово пришло" (по отношению к внешнему фифо). Затем пользователь мониторит наполненность фифо, и, если она выше порога, даёт команду датамуверу.
  9. Вам просто нужен примерчик как шаблон. axi_stream_data_width_converter_v2_00_a.rar Я там вырезал потроха, чтобы меня не поругали за разглашение исходников. Но обёрточка вся есть, внутри напишите своё и всё. Если что задавайте конкретные вопросы. Вот и не совершенно, раз, судя по Вашим словам, в стрим вмешивается логика, делающая паузу для наполнения фифо. Под прокидыванием я имел в виду не Опрокидывание ))) , а пробрасывание, т.е. прямое подключение входа и выхода. Проброс сигналов, протаскивание напрямую, без логики. Давайте Вы всё сделаете по-человечески, удалите ненужные прокладки, сделаете, если надо, стримовские корки, выложите исходники и осциллограммы для нового проекта - тогда будем разбираться заново.
  10. Ой, я про неё и забыл... ))) (или забил пока) Вот ещё хорошие ссылочки на эту тему: http://forums.xilinx.com/xlnx/board/crawl_...essage.id=29113 http://www.xilinx.com/support/answers/51180.html Короче в целом понятно. На стадии генерации битстрима запускается data2mem. Кто её просил? Ведь в настройках вот что: Т.е. там пусто. Значит нечего и запускать. И не отключишь. Но она запускает. При том подставляет тэг названия процессора (см. командную строку в логе из первого сообщения), не соответствующий действительности. Отсюда и ошибка. Думаю на это можно забить, т.к. меня не интересует результат выполнения data2mem на этапе окончания имплемента. При загрузке прошивки через SDK оно будет запущено повторно, все нужные файлы будут правильно подставлены, и тот результат, записанный в совершенно другую папку, меня уже и будет интересовать. Разбираясь более подробно: Среда подставляет тэг module_1_microblaze_0, хотя на самом деле у меня и у других, судя по ссылкам выше, тэг должен быть маленько другим: module_1_i_microblaze_0, где module_1_i - это название модуля, которое фигурирует в топовом файле module1_stub.v, которым обёртывается проект xps под названием module1.xmp. Топовый модуль генерируется автоматически по команде generate top-level. Предполагаю (ещё не проверял), что в этом топовом файле надо у названия модуля стереть _i, тогда тэги будут совпадать )) Но это если кому надо обязательно устранить это сообщение об ошибке. Мне вот как оказалось не надо. Мне помогло всё почистить и перегенерить, всё проделать "начисто". Ошибка по окончании имплемента не исчезла (забиваем), но ошибки при загрузке прошивки через SDK больше нет, и это главное.
  11. Спасибо и за эти подсказки. 1i64 - не понимает такой синтаксис. 1LL - работает правильно.
  12. Да, всё сработало, большое спасибо. Понимание-то я проявляю, тут скорее забывание про эту одну единственную единичку. Видите: я остальные операнды расширил, даже правую единичку, а эту забыл )) Через ухо там несильно сложно, по-настоящему можно написать u64, и поймёт. А unsigned long long это я записал для каноничности, чтобы не было подозрений, что где-то u64 объявлен криво.
  13. Здравствуйте. Работаю в SDK от Xilinx, это допиленный Eclipse, компилятор GCC. У меня 32-битную переменную не получается заполнить двоичными единичками. Код такой: unsigned int max_per = 0, min_per = (unsigned int)((unsigned long long)(1<<32)-(unsigned long long)1); даёт ноль. Если сдвиг на 31, то единички есть, но 31 штука. Пробовал без преобразования типов - тоже ноль. Короче никак не могу его заставить. Я понимаю, что можно просто записать 0xFFFFFFFF, но вопрос принципиальный, как заставить?
  14. Вы бы ещё MaxPlusII выкопали и в нём работали ))) Не проще ли чем искать баги в среде, которая устарела, для начала перейти к среде, в которой у других работает хотя бы это? Я бы вот с удовольствием вообще на виваду пересел, в ней ещё новее есть датамувер, но спартан6 не позволяет... Ну фифо с акси или без это совершенно не важно, что оборачивать. У меня в проекте есть такой и такой фифо. Почему не получилось обернуть стрим? Это же куда проще перечисленных Вами полного акси и лайта. Там работы максимум на час обернуть. Если хотите - могу и с этим помочь (обернуть). Можете выложить исходник от master_strm? Правильно ли я понимаю, что АБСОЛЮТНО ВСЕ сигналы стрима Ваш master_strm просто прокидывает со входа на выход без вмешательства? Короче что гадать, дайте исходник, там будет видно ) Я всё же продолжаю думать, что master_strm лишний, если он не оборачивает фифо. В таком случае, если Вы подаёте в XPS стримовский вход на master_strm через внешние порты, то с таким же успехом можно подать этот стрим из внешнего для XPS фифо через порты напрямую на датамувер. Логику контроля наполненности фифо можно конечно оставить в master_strm, но как-то это тем более будет нелогично: лишняя сущность, трудности с обёртыванием в корку логики, когда её можно просто оставить за пределами XPS, а команды на датамувер так же передавать через порты, как и сам стрим данных. Я поначалу думал точно так же )) Режим C_S2MM_INCLUDE_SF это не просто исключение, а такая же равновесная фича, а не редко встречающееся малозначительное дополнение. Т.е. фифо может быть, а может и не быть.
  15. Поддерживаю. Именно это я и хотел в своём сообщении объяснить. Тренинг назвал. А почему так естественно? За хорошими курсами и за рубеж ездят )) Я бы съездил ради такого в командировочку.
  16. Вот мне показалось странным, что командный интерфейс у Вас как-то не так называется. У меня вот так: Как у Вас так получилось сделать такое название? В этом не может быть ошибки или подвоха? Спасибо, стало понятнее, но не совсем. Вопросы: получается, что фифо находится за пределами проекта XPS? Генератор медленного потока тоже за пределами? Тогда полностью непонятно, зачем вообще нужна корка master_strm? Что она делает, какую функцию? По моим соображениям реально для работы нужны: память естественно, датамувер, фифо, генератор медленной последовательности. Всё. Зачем же master_strm? Можете ли выложить его потроха? Ну и так объяснить словами. Я понимаю, если бы просто фифо обернуть в User IP Core для XPS. Но у Вас-то фифо как я понял снаружи. Тогда не понимаю. Вот тут тем более непонятно, пока я не осилю, что за зверь этот master_strm. А разве сам фифо не является источником (ну это и есть мастер) данных для датамувера? Зачем ещё какую-то прокладку между ними? Объясните, пожалуйста, как это позволяет контролировать наполнение? У меня наполнение контролируется, как я писал ранее, по шине заполненности фифо. При превышении порога даётся команда датамуверу на передачу того числа байт, которое лежит в фифо на момент превышения порога. Никаких прокладок. это Вы назвали сигналы чьи? Сигналы датамувера? Да, если напрямую прицепить к медленному генератору без фифо, то надо в датамувере включать C_S2MM_INCLUDE_SF = 1, чтобы внутри датамувера копилось необходимое для бёрста количество. Тоже неплохое решение. Я бы наверное его даже применил у себя. Но, пока с Вами не начал разбирать Вашу проблему, не догадался до этого ))) Не городил бы лишних сущностей в виде отдельного фифо )) Всегда пожалуйста. Вот видите, и мне было полезно напрячь мозги. Как написал выше, разобрался заодно с режимом C_S2MM_INCLUDE_SF = 1 ))
  17. Ничего. Проблему я уже в данной теме решил, так что можно и поофтопить )))
  18. Внимательнее ) Запутать собеседника можно капитально ) Теперь мне не совсем ясно данное предложение. Т.е. Вы двумя раздельными командами датамуверу сначала дали дали команду переслать 4 слова, а затем другой командой оставшиеся? Я предлагаю вообще не разделять на первые 4 слова и на всё остальное. Если следовать логике, которую я описывал выше и которую я считаю стандартной для фифо, то валид на выходе из фифо в датамувер будет сразу, как только есть хоть одно слово для передачи. Но датамувер их есть не должен, пока не дана команда. И реади он без команды не выставит (исключение - первые 4 слова). Мне непонятно, что Вы подразумеваете под стрим ядром и что под фифо? Я понимаю так: есть генератор медленной последовательности, которая подключена к фифо (у Вас это называется фифо для стрима). Фифо буферизирует и отдаёт пачки в датамувер. Стрим ядро это тот самый генератор медленной последовательности? Или стрим ядро - это датамувер + память + AXI Interconnect? Вы применяете термин мастер стрим, фифо для стрима, датамувер. Предлагаю не запутывать самопридуманными терминами, где это не надо. Очень тяжело распутывать )) Судя по данному предложению, сигнал реади даёт датамувер в направлении вашего "фифо для стрима"? Если я правильно распутал... Я понимаю, что "если так не делать..." нужно фифо - однозначно, с этим никто не спорит, это буфер для согласования скоростей. В Вашей терминологии это "фифо для стрима". Это только когда C_S2MM_INCLUDE_SF = 1. У Вас не так. Да и у меня тоже. И работает. Причина не в этом. Экспериментально проверено, что если команда на передачу началась, а в стриме ничего нет, то датамувер блокирует всю шину AXI в DDR до окончания передачи. Чтобы блокировки не произошло, и другие устройства могли иметь доступ к памяти, в случае C_S2MM_INCLUDE_SF = 0 пользователь сам должен следить, чтобы в фифо, откуда будет выдаваться стрим на датамувер, имело достаточно данных, чтобы провести полную пересылку числа байтов, указанных в команде датамувера. Ага. Короче я пока запутался в Вашей терминологии, поэтому не понимаю состав устройств. И из-за этого до конца не понимаю логику работы, совпадает ли она с той, которую я называю естественной для фифо. Если не совпадает, то буду ещё раз заострять на этом внимание и пытаться Вас склонить к этой логике )) Ну короче жду разъяснений.
  19. Мудрое высказывание, надо запомнить ) С этим согласен. Объяснять надо на простых примерах. Я сейчас заканчиваю свою реализацию БПФ для больших последовательностей, поэтому представляю, что в БПФ по алгоритму автора вникать придётся долго и упорно... (читал когда-то в начале своей работы и его длинную тему...). Нет, сама бабочка, конечно - это "2 пальца...". Но вот дальнейшие пересылки и перестановки - та ещё головоломка. И вот, если бы я пошёл на курсы автора, то я бы не хотел вникать в эти головоломки, т.к. это детали алгоритма конкретной задачи. Довольно объёмные детали, чтобы на них тратить кучу времени (и денег), и это мне не пригодится (успеет выветриться). Я бы хотел пойти на тренинг и закрыть недостающие пробелы по "хдл с бантиками" как курсы повышения квалификации по инструменту, который я использую, но остальное мне не надо. Я и когда документацию с примерами реализации читаю, то просматриваю по диагонали объяснение алгоритма работы (т.е. конкретной задачи), цепляясь лишь за применяемые приёмы реализации. Потому и примеры должны быть простыми. Без конкретной задачи научить не получится, но хотя бы снизить накладные расходы на изучение алгоритма самой задачи - можно. Так что поддерживаю, что лучше тренироваться на кошках на мультиплексорах. Конкретно мои пробелы заключаются в SV и в UVM, необходимы углубленные знания в отладке и верификации (обычные есть и так). Мне нужен только по этому тренинг. А так - я бы пошёл чисто гипотетически. На опрос отвечу, что пойду. Цена особо роли не играет, т.к. платить должен работодатель. И 200р за лекцию и несколько тысяч за весь тренинг - это будет сравнимо с ценой перелёта. Конкретное подтверждение участия можно получить только когда будет полностью утверждена программа (и она будет способна закрыть мои выше названные пробелы) и все оргвопросы (место, время и т.д.). Кроме того, как-то должен решаться вопрос с проживанием иногородних. И на всё должны даваться официальные полностью легальные бумажки, подтверждающие оплату. Как самого курса, так и проживания. Подозреваю, что оргвопросы могут отбить у автора желание что-то организовывать ))) Гимор ещё тот ))) ------ Да, и шарлатанством я бы это в любом случае не называл, т.к. автор далеко не дилетант. Просто не сразу ясно, что хочет аудитория. Изучение спроса в данной теме - это нормально.
  20. Вы описываете случай нового проца, когда его инженерный сэмпл только выбросили на рынок. Тем не менее когда проц уже не так нов, устоялся, то существует хорошая база знаний сообщества. При том если проблема вылезла - то она будет всегда. В отличие от микроблэйза, где при одной разводке проблема вылезла, при другой не вылезла. При одном размере не вылезла, при объединении рамблоков допустим более 64кБ - вылезла. И хрен его знает кого винить - то ли разводку, то ли кривые настройки микроблэйза, то ли кривые настройки всего проекта XPS, то ли кривое понимание этого всего при синтезе... При том если вы вопрос напишете на форумах - то люди допустим пробовали этот режим, но при других условиях, и у них всё работало. А в железном проце других условий быть не может. Разводка одинакова, проц всегда один и тот же. Именно про это пишет Golikov A. в процитированном Вами же фрагменте.
  21. Хм... вот уж не знал... думал под кэш используются те же блоки, что и под память данных и команд (хотя тогда нельзя гарантировать, что прога влезет, если там ещё и кэш мешается). Меня сбило с толку, что шины микроблэйза есть под названием M_AXI_DC и M_AXI_IC. Поэтому я и подумал, что кэш на внешних блоках памяти, не проследил, что куда идёт. Оказывается эти шины как раз и подключаются к DDR, если там будет лежать программа или данные. Ладно, в последнее время очень многое прояснилось. Большое Вам спасибо. В первую очередь помогли мне Вы. Ну и остальным тоже спасибо ) Ещё бы по ошибке data2mem из первого поста мне кто-нибудь что-нибудь подсказал... Можно ли игнорировать, почему возникло и что делать...
  22. Ещё бы по ошибке data2mem из первого поста мне кто-нибудь что-нибудь подсказал... Можно ли игнорировать, почему возникло и что делать... ой, не туда...
×
×
  • Создать...