Jump to content

    

Kluwer

Участник
  • Content Count

    270
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Kluwer

  • Rank
    Местный

Контакты

  • Сайт
    http://havukosken.ru/
  • ICQ
    0

Recent Profile Visitors

2230 profile views
  1. RTL-код перестал вдруг портироваться на асики? Really, Elon Mask?!
  2. Коллега, я извиняюсь, но мой пост был не с целью обсудить "выгоду". Я просто написал, что существует такой способ, точка. И хотелось бы понять есть ли какие-то инструменты для реализации данного способа. Если у вас есть что на примете - буду благодарен, а обсуждать "да зачем оно нужно..." я не намерен.
  3. Спасибо, что хоть кто-то ответил :) Leka, я так понимаю, один из форумчан?
  4. А кто мешал вам, простите, параметры прямо в корке менять? Корка чем и хороша, что она генерит, в т.ч. на указанном вами языке "шапку". Копируйте эту шапку себе в проект и параметризуйте как вам угодно. Вот, например, подмодуль стэка с переменной глубиной и разрядностью, первоначально сгенерённый в gui мегавизарда module FIFO_template #( parameter WIDTH_U = 14, parameter WIDTH_D = 16 ) ( input aclr, input clock, input [(WIDTH_D-1):0] data, input rdreq, input wrreq, // ----------------------------------- output [(WIDTH_D-1):0] q, output [(WIDTH_U-1):0] usedw ); scfifo scfifo_component (.aclr (aclr), .clock (clock), .data (data), .rdreq (rdreq), .wrreq (wrreq), .usedw (usedw), .q (q), .almost_empty (), .almost_full (), .empty (), .full (), .sclr ()); defparam scfifo_component.add_ram_output_register = "OFF", scfifo_component.intended_device_family = "Stratix III", scfifo_component.lpm_numwords = 2**WIDTH_U, scfifo_component.lpm_showahead = "OFF", scfifo_component.lpm_type = "scfifo", scfifo_component.lpm_width = WIDTH_D, scfifo_component.lpm_widthu = WIDTH_U, scfifo_component.overflow_checking = "ON", scfifo_component.underflow_checking = "ON", scfifo_component.use_eab = "ON"; endmodule
  5. За "молодёжь", спасибо за комплимент, но увы :( 20 лет уже плисоводством занимаюсь и на Альтере и на Ксайлинксе и даже других вендоров успел попробовать. Много раз приходилось портировать проект с семейства на семейство, но ни разу за всю карьеру не встречался с необходимостью поменять вендора под один и тот же проект. А с семейства на семейство, например, в новых версиях Квартуса вообще автоматически происходит апдейт всех кор, проблем практически не возникает. Всю свою карьеру даже для элементарных вещей (типа сумматоров, счётчиков или постоянных) генерю корки - всё прекрасно работает. А рядом тут как раз работает любитель "да всё надо писать руками, мы уже 15 лет ... и никаких проблем". Ага, только сейчас товарищч впервые в жизни столкнулся реально с высокими клоками, натанцевался, наползался по кристаллу в "Чип Планере", увидел как у меня то же самое с мегафункциями взлетает на раз и ... сдулся: "да, наверное, ты был прав ..." :)) Но, в прочем, никому не навязываю - каждый ходит по своим граблям.
  6. Никогда не мог понять желание всё подряд писать руками и обвешивать атрибутами синтеза, к-рые, на самом деле синтезатор Квартуса игнорит только в путь. Для таких задач специально сделаны удобные и вылизанные IP-коры или мегафункции. Всё можно настроить как из удобного gui, так и скриптом. Всё грамотно подключается и прописывается, генерятся примеры, поддержка в Моделсиме уже на готове. Зачем каждый раз велосипед изобретать?
  7. Коллеги, а никто не знает какого-нибудь кастомного препроцессора, к-рый бы переводил несинтезируемые конструкции в синтезируемые? Поясню мысль. Например, вам просто хочется сгенерировать меандр длиной N импульсов, и частотой в 5 раз меньше тактовой. Какие варианты? Первый: написать руками на 2х счётчиках - не бог весть как сложно, но, блин, сколько ж можно. Второй: использовать готовый модуль, написанный на стороне, или заложенный, например, в Квартусовские шаблоны. Свои плюсы и минусы. А третий - просто написать repeat (N) #5 a = !a; - но это не синтезируемая конструкция. Но, в обычном программинге сплошь и рядом сейчас используются пользовательские конструкции. Перед тем, как скормить код компилятору, код прогоняется через "кастомный" препроцессор, к-рый эти конструкции заменяет на понятное компилятору. В нашем случае, заменить это repeat на некий модуль - элементарно. Вот, ну наверняка же есть уже что-то (полу)готовое?
  8. В окне "Tasks" есть кнопка "Customize...". С помощью неё делаете на базе одного из существующих наборов нужный вам и сохраняете под вменяемым именем. При пересборке проекта просто выбираете его в списке "Flow" окна "Task".
  9. Кстати, вспомнил название этого процесса: quartus_map.exe. Он, причём, показывается в Task Manager'е не как дочерний от Квартуса и мегавизарда, а там запускается отдельная Джава-машина и от неё наследует этот процесс. Нужно дождаться, когда он покажет нулевую загрузку процессора и прибить его. А вот если вы при генерации корки поставите флажок "генерить список цепей для сторонней EDA", то там запустится ещё и процесс quartus_eda.exe, точно так же повиснет, но его таким же способом не перезапустить. Так что тому, кому нужно генерить список цепей для каих-то сторонних САПР сочувствую.
  10. Вы просто не понимаете, что такое DSP builder.
  11. Совершенно аналогичная штука - это DSPbuilder для Моделсима. И да, уже много лет её использую для разработки блоков обработки сигналов под ПЛИСины. Причём, это реально удобно, если, например, сравнивать с моделированием в том же Modelsime/Questasim'е. Преимущества: 1) графическое представление для человека завсегда удобнее "сухого" кода; 2) нативная интеграция с Матлабом (тут же можно вручную или с помощью скриптов сопоставить результат моделирования с теоретическим, расчитать всякие хар-ки, типа, статистик, спектров и т.д.); 3) простота замены блоков/смены параметров, импорта внешнего кода, матлабовских скриптов, короче юзер-френдли среда. Но есть и недостатки: 1) графика даже относительно небольших блоков может легко не вместиться даже в 2 экрана; 2) очень медленно (Матлаб всё-таки). У меня, например, сжатие на базе альтеровских БПФ на длине 3х-4х-зондирований - уснуть можно; 3) довольно неудобное отображением цифровых данных; 4) сложно документировать и передавать такой проект: DSPbuilder генерит громоздкий и слабочитаемый код. Руками этот код сопровождать сложно, а разрабов, владеющих Матлабом/Симулинком, мягко говоря, не много; 5) моделировать реально только куски (пусть и важные). Загнать туда реально большую систему (например, тракт радиолокатора от ацп до MTI-фильтров хотя бы - а это не так и много) - не реально. Если вы даже её и нарисуете и по-блочно отладите, то потом умрёте ждать рез-ов моделирования. Уже проще в живом железе собрать. Вот какие-то такие у меня впечатления от подобных штучек.
  12. Во-первых, не лоджиклок, ни фиксация партиции в положении "post-fit" не гарантирует вам непереразводки вашего модуля: как только вам нужно провести доп.верёвки к вашему модулю (хотя бы к тому же STP или MCE), он может изменить раскладку до полной неузнаваемости. Но, лоджиклок всё-таки, по нашей практике, более полезен, тем более, когда у вас такая невменяемая частота клока. Собственный пример: у нас с АЦП идёт ddr-сигнал, частота клока 240, но, т.к. ddr, то, де-факто 480. Дальше - квадратурный 2-ступенчатый детектор, что бы как можно быстрее понизить клок. Ежу понятно, что нужно ставить всю схему как можно ближе к выходам ddr-регистров. Нифига! Даже если умышленно прописать Квартусу завышенную частота на ацп'шном клоке (даже 300 ставили), он упорно лепит всю схему в центр кристалла. Пока она одна - никаких слаков. Как только включаем весь проект (а там ещё есть скоростные блоки, несколько ацп и т.д.). Всё летит к чертям. И вот пока вручную детектор не прижали лоджиклоком к краю плисины с запретом разводить в этом регионе что-либо ещё, ничего не получалось. Возможно и вам так надо.
  13. Коллеги, часто вывожу всякие диагностические сообщения из кода функциями типа $display. Но проблема в том, что он их закидывает всех в окно варнингов, где итак туча сообщений. Можно, конечно, на подобные сообщения накинуть флаги, но как-то это всё не технологично. Но, где-то читал, что у Квартуса есть команда создать пользовательское окно и назначить нужные сообщения туда, но не могу найти в help'е инфу по этому поводу. Может, кто знает?
  14. Там надо войти Task Manager (по Ctrl-Alt-Del) и прибить один из процессов, к-рый Виззард создаёт. У нас такая же фигня была с FFT'шной корой. Там бужет видно, один из дочерних процессов мегавизарда работает, потом у него в графе "загрузка процессора" падает до нуля и дальше ничего не происходит неограниченно долго. Вот этот подпроцесс надо прибить, мегавиззард его создаст вновь и успешно сгенерит вам всё.
  15. Машин лернинг и DSP

    Что значит "переучиваться"? Знания никакие лишние не бывают. Иметь представление, безусловно, нужно. Какие-то задачи эти "сеточки" всё ж таки криво-коряво, но решают. Они осмысленны там, где задача ну практически никакой формализации не поддаётся. Как раз яркие примеры - это распознование изображений, звука и т.д. Как только задача допускает такую формализацию и, тем более, позволяет получить более-менее вменяемое решение (пусть и в квадратурах, например), то все ваши эти "диииип лёнинги" и прочие игрушки сразу пролетают. А к таким задачам как раз и относятся задачи радиолокации, гидроакустики и цифровой связи. Уже, можно сказать, ставший классическим пример. Одна из крупных конференций по этим делам в РФ. Секция радиолокации. В радиолокации, благодаря бурному развитию оной в 50-60-х с привлечением туда в т.ч. крупных математиков и базируясь на ранее не плохо развитой теории веороятности и статистики, удалось получить математические решение во многих практически интересных задачах. Но каждый год на эту конференцию обязательно приезжают пару-тройку восторженных мальчиков, к-рые рассказывают как они тут успешно применили очередную нейронную сеточку для обнаружения сигнала. И каждый такой докладик заканчивается саркастическим вопросом из зала типа: "ну и что ваша сетка показала? То, что в той ж ситуации, где МАП-обнаружителю нужно ОСШ столько-то Дб, вашей сетке нужно на 15дБ больше? (дружный хохот в зале)" :)