Jump to content

    

yes

Свой
  • Content Count

    3082
  • Joined

  • Last visited

Community Reputation

0 Обычный

About yes

  • Rank
    Гуру

Контакты

  • ICQ
    Array

Recent Profile Visitors

12473 profile views
  1. нет, там уровня руководителей лабораторий люди привлечены. ну то есть я не смог отказать в публикации этой, достаточно глупо сформулированной темы ------------- в МФТИ сменился ректор, если что, вот какая-то дополнительная суета на самых высоких ступеньках началась (это мое оценочное мнение)
  2. а в чем там рывок? если не брать высокоскоростные интерфейсы, то кремний для внутренностей ПЛИС (fabric : LE/slice + интерконнект) сделать может совсем небольшая группа (2-5 человек, в зависимости от срока - год/3 месяца). а интерфейсы и P&R можно оутсорсить для простоты. больше затрат требует софт, но у тех же ICE40 (65) например, тул (ICEcube) простой и не успел обрасти фичами, пока Латис их не купила то есть Миландр такое не может сделать, потому что Миландр, а не из-за сложности. а если какая-то группа программистов/менеджеров (в условиях нормальной экономики) убедит инвесторов, что их ПЛИС окупится, и получат деньги - то, по-моему, нет проблем довести до рабочего чипа
  3. я не знаю. но предполагаю, что это какой-то концепт - то есть нестандартные методы обработки и для сдачи работы нужна демонстрация в real-time.
  4. это не предложение о работе, а некоторое заявление о намерениях (если сильно не соответствует правилам, прошу прощения) я не работодатель и не знаком с деталями (поэтому условия - это мои предположения, уточнить их пока не получилось) - предполагаю отправить работодателю ссылку на эту тему, если кто-нибудь проявит интерес ---------- Долгопрудный (МФТИ), скорее всего, допустима удаленка, оплата вряд ли высокая, срок 3-4 месяца модель модема (как я предполагаю, основанная на нестандартных подходах) написана на С/С++, требуется продемонстрировать работоспособность в real-time с реализацией на ПЛИС. в каком виде будет сделано железо (дев.кит, плата собственной разработки и т.п.) я не знаю, но это не должно быть заботой исполнителя (я лично сомневаюсь, что если симулятор будет работать, а железо нет, то работа будет считаться сданной - но это стоит обсуждать с работодателем, как и остальные условия)
  5. dc-dc источник, ножка EN, вполне может понадобится отключить. я для этого ставлю.
  6. dataC и dataAready - это был некий мой патч (который не помог) - то есть мне казалось, что если я перезащелкну в домене clkB в регистр и дальше у меня вся логика будет синхронной и будет покрываться констрейном. задержка от готовности данных до dataAready @clkB - 3 такта clkA, сам синхронизатор 2FF и еще пару тактов clkB (3 clkA + 4-5 clkB) но предлагаю этот патч не рассматривать дальше - не помогло да, чудеса - пока еще не разобрался - не могу поймать. ну а false_path-ы я по результатам предыдущего обсуждения поубирал и заменил на асинхронные группы клоков я кстати еще атрибутов ASYNC_REG наставил на dataA dataB - вроде обещают, что ставить будет рядом триггера с этим атрибутом ---------------- большое спасибо. я в любом случае согласился, что ошибка не в этой логике между доменами, а где-то в другом месте
  7. в SV есть структуры и массивы - создается тип через typedef - и вперет "для взрослой" деятельности есть так называемые interface - в которых много всего разного, кроме набора port-ов --------------- классический верилог 89-го года мало кем используется, его SV заменил
  8. спасибо за ответы. по поводу синхронной времянки - незаконстрейненых путей нету обеспечение синхронизации из софта проверяется "штатными" средствами и если будет нарушено, то специальный флаг и т.д. то есть такая ситуация обнаруживается и при сбое ее нету. update - это безусловный сигнал в clkB (ТС счетчика) по нему генерится прерывание в процессор (кроме переноса данных) - вобщем такая схема синхронизации лет 10 уже нами применяется и пороков не было dataA/B это большой массив - для каждого инстанса бит по 200-300, ну и инстансов таких сотни - то есть в целом пакет килобайт 10. структуру dataA можно представить как поле адреса, в котором указывается куда в dataB копируется (собственно биты вот этого поля адреса и участвуют в комбинаторной логике с update), а остальное это "данные" - для них соединение напрямую dataA->dataB (то есть dataA.Q -> dataB.D без какой-то логики) и мне кажется, что тут все чисто ------------------------ я пока разбираюсь - все это не так быстро, увы - ну и в некий тупик зашел - ближайших планах повесить внутрисхемный анализатор на какую-то группу dataB и по флагу ошибки из процессора это защелкнуть...
  9. подогнали мне коллеги кучу кода где повсеместно используется комбинаторная логика на пересечении доменов как-то так : один домен clkA (~166М) dataA другой clkB (~40M) dataB update clkA clkB асинхронные (с разных кварцев) верхний уровень (софт) гарантирует, что update появляется только тогда, когда данные dataA не меняются. ну и соответственно в то время как dataA меняются update=0 --------- update это импульс длительностью 1 такт clkB комбинаторная логика выглядит так - update&(логическая функция от dataA) ну и выходы этих функций подключены к CE или D триггеров dataB (@clkB) vivado на это ругается (critical warning) и _чсх_ после наработки в 10мин-2часа происходит сбой (я подозреваю, что происходит ошибочная запись в регистры dataB, когда update=0, а dataA меняются. но увы после модификации кода (то есть добавление dataC (@clkB) и перезащелкиваниz dataA->dataC через синхронизатор в котором специальный сигнал dataAready и его перенос в clkB - ну то есть как я считаю правильно и vivado говорит ОК и соответственно вся логика в clkB) - все-равно происходят сбои (мне кажется, что реже, но может это самообман - вобщем MTBF зависит скорее от какого то расклада по ПЛИС, а не от RTL) ситуация усложняется тем, что программист сделал ковидную прививку и выпал из процесса, то есть дать в ПЛИС флаг, чтобы подсветить ошибку или хотя бы объяснить как и что он пишет - пока не возможно. то есть core dumped ну и типа усё ====================== вопросы есть ли теоретическое объяснение (а совсем хорошо, пример логики, которая может выдавать глитчи из такого RTL кода (0 & (some logic @clkA)) -> clkB при этом два случая: вариант на ПЛИС - причем эта логика update@clkB & (логическая функция от dataA@clkA) помещается всегда в один LUT - 3-5 входов вариант для ASIC-а - собрать пример такой логики на and/or/not, чтобы прохождение глитчей не блокировалось при update=0 (опровергающий пример - я не смог придумать) ---------------- собственно меня коллектив травит :), говорят, что все это фигня и я выдумываю и надо искать ошибку в других местах...
  10. может я чего-то запамятовал, но обратная связь там в БИХ фильтре? сам нелинейный элемент это просто функция, без памяти? БИХ фильтры можно собирать на элементах второго порядка BiQuad (поищите у ксайлинса или альтеры, я с ксайлинсом имел дело - там точно есть - что-то типа parallel biquad, multicycle biquad) DSP блоки в ПЛИС, конечно, заточены под КИХ фильтры, но с некотрыми извращениями в них и БИХ фильтры пакуются
  11. сомневаюсь, что символов выйдет мало - станет только хуже с ясностью. и даже если навставлять переводов строк после ; в верилоге - то все равно - сильно лучше с лаконичностью будет
  12. не ради холивара посоветую автору темы, если он еще не определился, взять язык Verilog (SV) а не VHDL описание второго (простого) счетчика из ответа Maverick_ будет как-то так module cntr(input logic clk, en, rst, output logic [63:0] count); always @(posedge clk or negedge rst) if(!rst) count<='0; else if (en) count<=count+64'd1; endmodule что, по моему, большой плюс - краткость, то есть меньше шансов ошибиться
  13. я согласен, что пример хороший и можно улучшить времянку конвеером, но если я правильно понял, то задержка (latency) первого примера не совпадает (больше), чем у второго. что для автора темы может быть критичным. и конкретно в этой теме, как мне кажется, автору интересно показать "применимость метода", а не тратить время на оптимизацию (то есть выиграть ~20% по частоте и потерять время разбираясь в тонкостях плисоведения не имеет смысла) и я тоже предпочитаю всегда описывать RTL и не брать IP от вендора, но наверняка, в конференции найдеся кто-то, кто из IP-шного сумматора сможет вытащить еще лучше (ну может 2-5%) чем из оптимального RTL. но это еще больше требует времени на освоение, и для человека, который не собирается становится плисоводом, путь тупиковый.
  14. знаком был со старшим составом когда-то... --------------------------------- по поводу платы - практически, пользы от платы нет. все, что нужно для работы - это софт, прежде всего симулятор. как уже написали - если не работает в симуляторе, то на плате нет смысла смотреть. у альтеры (точнее уже у интела), кстати, бесплатный симулятор моделсим - лучший из бесплатных, то есть все там можно посмотреть. опять же рекомендую продолжать использовать альтеру/интел, а не переходить на ксайлинс - по скорости вряд ли будет существенный выигрыш, а сложность работы с софтом вырастет (удобство упадет) по поводу ДСП-блоков или каких-то схем улучшения операций сложения/умножения (carry-lookahead, carry-save, деревья Уоллеса, алгоритмы Бута и т.д. такого человечество придумало +100500 вариантов) можно не заморачиваться, инструмент (квартус) выберет оптимальное решение на ваш + или * в коде. это если не будет хватать 1-5% то есть, например, получилось 95МГц, а надо 100, то можно за это браться. и больший эффект тут даст не знание как улучшить описание сумматора, а знание внутренностей ПЛИС и расстановка элементов в кристалле по площади - то есть низкоуровневая возня с железом я так понимаю, что вникать в детали устройства конкретной ПЛИС вам нет интереса, также нет каких-то ограничений по частоте, чтобы обеспечить тот или иной стандарт. поэтому описывайте на высоком уровне с использованием + - * алгоритм и оптимизируйте сам алгоритм (есть методы и для алгоритмов с обратными связями - как писали выше) если для демонстрации, ну и вообще, для придания "солидности" нужна плата - посмотрите тут https://www.terasic.com.tw/en/ но еще раз - вначале сделайте код работающий на симуляторе, затем синтезируйте его и посмотрите сколько он занимает ресурсов ПЛИС и в какую ПЛИС влезет, а потом уже выбирайте плату https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=921 https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=941&PartNo=1 во второй еще и процессор есть. полагаю, что для демонстрации хватит. возможно, что на алиэкспрессе или где-то еще в подобных местах, можно купить за те же деньги плату с ПЛИС с большими ресурсами. но отсутствие документации и возможные глюки, по-моему, того не стоят