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

Krys

Свой
  • Постов

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

  • Посещение

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


  1. Допустим если остановиться на ком-порте, то чтобы передавать файлы нужен какой-то протокол. Помню во времена пищащих модемов для телефонных линий был протокол zmodem. Что-то подобное есть готовое для microblaze? Чтобы самому не изобретать?
  2. Здравствуйте. Посоветуйте плиз по работе с файлами на CompactFlash на SP605 борде. Есть готовые функции по чтению/записи файлов на флешке? У себя локально по этим путям: c:\Xilinx\14.7\ISE_DS\EDK\sw\XilinxProcessorIPLib\drivers\sysace_v2_00_a\ я нашёл только, что тут функции умеют лишь доступ к блокам (ну или секторам?). Поднимать ФАТ16 вручную не хочется. Может уже всё готовое есть?
  3. К стати, раз уж пошла такая пьянка, а не проще ли вообще память на RTL описать в виде массива? Синтезаторы сейчас умные, если правильно описывать, то понимают, что это должно быть. Как правильно описывать говорится в xst.pdf
  4. Здравствуйте. Есть отладка SP605, система с микроблэйзом. На плате есть параллельная флешка 32М, которая к нему подцеплена. Нужно эту флешку изначально прогрузить большим объёмом данных (коэффициенты условно говоря. Один раз залил - больше не трогаешь всю жизнь). Как это лучше сделать? Можно ли как-то имитировать из программы микроблэйза чтение из файла (ну типа воспользоваться функциями fopen() и им подобными), в то время как файл находится у меня на компе, к которому отладка подключена через JTAG и на котором крутится SDK? Видится ещё вариант передавать данные по имеющемуся на борту ком-порту, но это во-первых медленно (?), а во-вторых на боевой плате ком-порта может не быть, вариант с прогрузкой через жтаг был бы более универсален.
  5. Вы не прочитали с самого начала видимо. Изначально было так: Затем было восхищение. Затем после моих вопросов было уточнение.
  6. Да я это к тому, что там выше восхищались: А оказалось, что просто инфа не совсем корректная. На самом деле 80% заполненность. Это конечно уже тяжело, но не так смертельно
  7. Не совсем так. Решение есть: http://electronix.ru/forum/index.php?s=&am...t&p=1287902
  8. Спасибо, аж 3 штуки нашлось, во всех них есть примерно одно и то же: http://electronix.ru/forum/index.php?showt...hl=generatecore http://electronix.ru/forum/index.php?showt...hl=generatecore http://electronix.ru/forum/index.php?showtopic=25860 Что удивительно, никто не помнит, откуда он это взял ))) "недокументированные возможности", "тайное знание" )))
  9. мэппер хитрый, он сначала пытается использовать связки лут-регистр, а те, кто по отдельности либо луты либо регистры - он их кладёт в отдельные слайсы, не смешивая. Но когда слайсы кончаются, то несвязанные друг с другом луты и регистры он начинает засовывать в одни и те же слайсы. В отчёте мэппера это называется "Number of Slices containing unrelated logic". Логично предположить, что поскольку не все луты ещё задействованы, то при увеличении количества занятых лутов в проекте с 80% до 100% мэппер продолжит эту политику засовывания в один слайс несвязанной логики. При этом всегда заполненность по слайсам будет близка к 100%, а вот заполненность по лутам и регистрам будет меняться, но у мэппера ещё будет пространство для манёвра. Таким образом, при политике мэппера засовывать несвязанную логику в один слайс, значение занятости по слайсам в 99% является непоказательным, поскольку пространство для манёвра всё же ещё есть. Следовательно, для примера из предыдущего сообщения, всё же, корректнее говорить об утилизации 80%, а не 99%. До реальных 99% ещё далеко...
  10. 99% по каким ресурсам? Я могу по DSP48 100% сделать )))
  11. Подкиньте ссылку плиз, по ключевому слову fifo_core_generator не находит ничерта
  12. Топикстартер, проблема решена, раз тема заброшена и вопросы не отвечены? Вписывались ли в рекомендации по памяти? 99% заполненность по каким ресурсам? Также интересны ответы на все предыдущие вопросы.
  13. а как в таком примере слово outstanding применимо? Попробую конкретизировать вопрос на примере. Вот например датащит, там на странице 47 есть такая фраза: Говорится что только одна ожидающая транзакция разрешена. Вот как тут понимать outstanding? Чисто по формальной логике из этого предложения следует, что существуют ещё другие транзакции, которые не outstanding, которые могут быть запрещены, либо разрешены в другом количестве. Зачем они в данном предложении применили термин outstanding? Можно подумать если не применить этот термин, то речь может идти о разрешении уже совершённых транзакций... естественно даже без употребления этого слова, что разрешать можно только те транзакции, которые ещё не совершены. Зачем они конкретизируют? Это как написали бы "горячее пламя". Да, наверное, в экзотических случаях пламя бывает и холодное. Но применив слово горячее, зачем-то на этом акцентировали внимание, хотя и так по умолчанию подразумевается, что пламя горячее. ds768_axi_interconnect.pdf
  14. Спасибо. Но всё равно непонятно. Зачем вообще употреблять этот термин? Чтобы указать, что эти транзакции ещё не выполнены? Т.е. разделяется на выполненные и не выполненные транзакции? Т.е. варианта всего 2 с применением этого термина или как?
  15. Я сейчас изучаю AXI4. Перечитал данное обсуждение, всё как в анекдоте: всё в этом обсуждении предельно понятно, непонятно только как керосин по проводам течёт ))) А именно: что конкретно подразумевают под outstanding? Есть разные интерпретации: outstanding address, outstanding transaction, outstanding feature support. Что всё это означает? В дословном переводе - выдающийся. Но не пойму, что в них такого выдающегося ))) Может кто-нибудь объяснить, как этим пользоваться, пожалуйста? Читал это, ясности особо не прибавило. Вроде где-то что-то понятно, но не кристально понятно. В спецификации на протокол прошёлся поиском - тоже ничего особо не разъясняется, просто этот термин используется как данность.
  16. Вопросы dmitry-tomsk из последнего сообщения всё ещё актуальны, так на них никто и не ответил...
  17. Вроде решил эту проблему. Создал проект под демоборду SP605, там всё автоматом добавилось и соединилось. Видно, какие связи. Получается SG-порт - это порт доступа к той же памяти, для которой осуществляется и сам DMA. Т.е. дескрипторы SG хранятся в той же памяти, к которой осуществляется прямой доступ. Это для меня сначала было непривычно, но теперь вроде улеглось в голове.
  18. Подскажите, пожалуйста, более подробно, что надо сделать. Я сам потыкался, там ядер много, какое конкретно поставить не знаю, парочку поставил - ничего не соединилось, памяти не образовалось... Более конкретно - мне хотелось бы знать, какую конкретно корку вставлять, где у неё включается DMA и какие блоки нужно добавить на схему до установки корки ethernet. Я пробовал так: создал пустой проект с микроблэйзом, потом добавил корку ethernet. Если что у меня spartan6 и ISE соответственно (14.7). Заранее спасибо.
  19. Чуть-чуть разобрался с режимом Scatter/Gether. Вещь полезная, конечно. Правильно ли я понимаю, что для него в XPS нужно поставить отдельный блочок памяти BRAM, к нему подключиться по AXI через AXI Interconnect так, чтобы доступ имел и MicroBlaze, и AXI DMA Engine через его порт Scatter/Gether? Но вот про многоканальный режим очень непонятно. Правильно ли я понимаю, что этот режим нужен, чтобы, например, при многопортовом доступе к одной и той же памяти, один блок AXI DMA Engine мог заменить связку нескольких одноканальных DMA-блоков (по числу портов доступа к памяти), соединённых между собой блоком AXI Interconnect? Т.е. вместо нескольких одноканальных DMA плюс Interconnect можно поставить один многоканальный DMA без интерконнекта?
  20. Спасибо, теперь гораздо понятнее. Понял, что мне подходит AXI DMA Engine. По нему вопрос. Если его делать многоканальным, то у него обязательно должен быть включен режим scatter/gether? В явную не говорится, но в доке приводится описание многоканального режима только для C_INCLUDE_SG = 1, а для C_INCLUDE_SG = 0 не приводится. Не очень понимаю, что это за режим scatter/gether. Ничего конкретного не нагуглилось, кроме этого, но там речь идёт о возможности представления с помощью этой штуки непрерывного диапазона данных, когда он лежит физически в фрагментированных кусочках. Непонятно, как эта технология используется в ПЛИС, для чего можно например у себя применить. И неужели она такая нужная и широко распространённая? При том в доке на AXI DMA Engine я не увидел какого-либо "вступления для новичков" касаемо этой фичи. Только набор регистров как данность, т.е. ты заранее должен уже знать, как ей пользоваться. Может кто подскажет, где про это почитать касаемо применения в AXI DMA Engine? Может аппликуха есть какая, где всё разжёвано? И ещё: мог бы кто-нибудь объяснить на пальцах, что за термин 4 KB address boundary protection. Что за зверь, как работает, для чего нужно.
  21. Спасибо. Но указано крайне непонятно (возможно для неподготовленного). Вот например AXI DMA Engine (это он в XPS так называется, а в PDF-ке просто AXI DMA) и AXI DataMover - судя по первичному описанию делают то же самое. Т.е. перекладывают из memory mapped в stream. В чём же отличие? И когда какой нужно применить. Касаемо AXI Central DMA, как я понял, он перекладывает из memory mapped в memory mapped. Т.е. например в пределах одной памяти скопировать блок данных в другие адреса. Или переписать из одной памяти в другую. Правильно? Если в названии слово Video - это то же самое, что из без видео, только двухмерное, с этим понятно. Вобщем наиболее непонятно различие между AXI DMA Engine и AXI DataMover.
  22. Аналогичный вопрос. Плюс к этому ещё есть просто AXI DMA. Вот совсем запутался, в чём разница между ними тремя, для чего какой нужно применять.
  23. готово: general_purpose_lib.rar Использовать так: del_lat : delay generic map ( DEL => DUT_LAT ) port map ( clk => clk, -- clock -- Входные данные data_in => del_in, -- Выходные данные data_out => del_out ); del_in <= y1_mat_i & y1_mat_q & y2_mat_i & y2_mat_q; -- -- y1_mat_d_i <= del_out(EXT_DATA_BW*4 - 1 downto EXT_DATA_BW*3); -- -- y1_mat_d_q <= del_out(EXT_DATA_BW*3 - 1 downto EXT_DATA_BW*2); -- -- y2_mat_d_i <= del_out(EXT_DATA_BW*2 - 1 downto EXT_DATA_BW ); -- -- y2_mat_d_q <= del_out(EXT_DATA_BW - 1 downto 0 ); split(del_out, y1_mat_d_i, y1_mat_d_q, y2_mat_d_i, y2_mat_d_q);
  24. Спасибо за конкретное решение. Пожалуй приму себе на вооружение как единственный рабочий вариант, если не в лоб. У меня прям часто. Я просто обожал на верилоге так задерживать кучу сигналов одним разом. Очень экономит время и строчки кода (читай наглядность). Что Вы имеете в виду? Ну тут написать штук 10. Ну 20. Т.е. для диапазона 2..20. "Всех возможных" - это Вы запугиваете ))) Тип сигнала один и тот же, разное только число аргументов процедуры, обработка одинакова. А это идея. Пишем десяток однотипных функций, в которой полностью повторяем Ваш код с той разницей, что меняется число аргументов и с каждым новым аргументом добавляется один лишний вызов Вашей процедуры. Щас попробую. А можно делать процедуры не для аргументов в скобках, а как будто для математических операций, типа а + в? Или так только функции можно?
×
×
  • Создать...