Jump to content

    

Restinstage

Участник
  • Posts

    52
  • Joined

  • Last visited

Everything posted by Restinstage


  1. - Есть ПЛИС в которой зашит старый проект, выполненный в схематике ( не мной). - Доработка для этого проекта выполнена в виде отдельного многофайлового Верилог проекта. - Проект на верилоге отмоделирован, зашит в ту же ПЛИС для проверки работы в железе. Занимаемый объем как старым проектом, так и новым, так и обоими, сильно меньше 50%. ПЛИС - аналог древнего FLEX10K, никаких умножителей, PLL, никаких IP ядер, тупая логика. Используется Quartus II 9.0 - Генерируется символ из верилог проекта, добавляется в схему старого проекта-схемы способом, описанным выше. Добавленная часть проекта не работает(нет изменений сигналов на выходах). - Весь код верилог проекта скидывается в один файл, генерируется символ вышеописанным способом, добавляется в старый проект - все работает. Вопрос: Почему получается генерить рабочий символ из проета на верилог с одним файлом и не получается из проекта с многими? Точнее не описать.
  2. Вообще я в первый раз сделал то же самое, за исключением пункта 2. Я просто скидывал файл *.bsf непосредственно в папку проекта. Сделал по вашей инструкции, результат тот же.
  3. Если бы вы прочитали что я писал выше, было бы понятно. То есть та часть, которую нужно добавить работает в железе(выполняет необходимые функции), да и функциональное моделирование разумеется проводил. Проблема только в том, чтобы сгенерить и добавить в старый проект символ. Повторюсь, проект на верилоге многофайловый, если весь код пихнуть в один файл и сгенерить символ, все работает. Проект выложить не могу, но суть ясна и без него, проблема не в коде и не в функционале.
  4. Смотря что вы понимаете под оберткой. Есть топ модуль на том же верилоге, почти без функционала кроме пары счетчиков, к нему подключены остальные. Я писал, что компилировал отдельно этот проект и заливал в рабочую ПЛИС чтоб проверить. Из него создавал символ, да.
  5. Да, все файлы проекта на verilog добавлены в библиотеку проекта block diagram. Technology map viewer показывает примерно одно и то же для обоих скомпилированных проектов. Но этот символ не работает. Только если запихать весь код в один файл, сгенерить символ схематик и воткнуть в bdf. Тогда работает. Меня интересует вопрос - принципиально нельзя создать рабочий символ файл из verilog проекта с множеством файлов и уровней вложений?
  6. Так ошибок нет, проект в виде block diagram компилируется с добавленным сгенеренным символом, просто на выходе именно этого нового блока ничего нет. Я делаю Create a Symbol File for Current File в проекте на верилоге и добавляю получившийся символ в библиотеку квартуса, а потом подключаю его на общей схеме.
  7. Есть старый проект в виде block diagram. Нужно было добавить функционала и кое-что поменять, сделал проект на верилоге, проверил его отдельно на этой же пустой ПЛИС. В проекте глубина вложения - 2. Всего 4 файла *.v. Для преобразования кода в символ есть всего одна функция - Create a Symbol File for Current File. И она по идее должна создавать символ только из единичного файла. Но для проверки сделал простенький проект с делителем во вложенном инстансе, преобразовал в схематик и он работал. А вот мой проект работать отказывается. Только если весь код накидать в один файл. Что-то можно с этим сделать?
  8. Забыл отписаться. Все завелось, проблема была в кварце, из-за ошибки в компоненте. Мониторится в 0x000C Internal Fault Bits, периодически вставал XAXB_ERR, не хватало амплитуды скорее всего. Еще есть нюанс работы этой микросхемы, может кому пригодится. При отсутствии входного сигнала она входит в режим Holdover, параметры которого настраиваются в визарде во вкладке DSPLL, в нем она будет циклично выдавать копию сохраненного входного сигнала (до 120 с), используя опорный генератор или кварц. Выйдет она из этого режима только при появлении входного сигнала, генерить начинает даже после сброса питания. Это не отключается из визарда, нужно вручную изменить рег 0x0142 Output Disable Loss of Lock PLL.
  9. Про LOS написал же, показывает что DSPLL работает и есть захват.
  10. Ноль там я видел, выглядит как повер даун. Поэтому и проверил все сбросы, аппаратные и программные. OE0b, OE1b как раз дисейбл выходов. То что я записываю, я проверил, не думаю что он может часть регистров записать, а часть нет. При таком огромном количестве регистров я все-таки надеялся на спецсофт, который их генерит и что все нужные там есть, преабула и постамбула тоже, проверил. Буду смотреть OUT0_DIS_STATE как доберусь до платы, спасибо за подсказку.
  11. Полярность выходных клоков имеете в виду? Можно, но у меня ж проблема что их вообще нет. Выходных тактовых. И я менял в визарде, эффекта нет
  12. Да, конечно первым делом я почитал с нее регистры, как статуса, так и записанные, все читалось. Тестовых сигналов из нее никаких не выведешь, кроме собственно клоков и статуса DSPLL (LOL, LOS), который показывает что все ОК и частота захвачена.
  13. Да, аппаратные сбросы, которых там аж три, ( RSTb, OE0b, OE1b) проверял и во время конфигурации и после, все по даташиту. Алгоритм прошивки "в устройстве пользователя" как здесь https://www.skyworksinc.com/-/media/Skyworks/SL/documents/public/application-notes/an926-reading-writing-registers-spi-i2c.pdf
  14. Jitter Attenuator Si5346 от Silicon Labs (теперь уже Skyworks). Кто-нибудь работал с ним или аналогичным из этого семейства? На вход даю 100 MHz LVDS или CML, с выхода хочу снять тоже 100. Данные для прошивки формируются в визарде ClockBuilder Pro, проект прикрепил. SPI и управление с ПЛИС, данные по юарту передаю с компа. После прошивки на выходе ничего, но микруха теплеет, значит что-то работает. То что сдохла маловероятно, проверял на двух одинаковых платах. Может быть есть какие-то нюансы, подводные камни? Алгоритм прошивки, последовательность регистров, выданный ClockBuilder Pro, сверял с даташитом, все сходится. Si5346-RevD-Des_100M-Project_ver4_0.slabtimeproj Si5346-RevD100-Registers.txt
  15. Да, похоже между версиями в алгоритмах синтеза и оптимизации существенная разница, раньше особо не думал об этом. Спасибо)
  16. Ага, и по названиям сигналов входных видно. Поиграл с условиями, теперь вместо 18% стало 16, а при компиляции этого же в квартусе 9.0 все остается так же 11%. Уже что-то.
  17. Ну да, по Technology map viewer примерно та же картина, мультиплексоров в 13.1 он наплодил намного больше, остальное плюс-минус так же. Причина мне непонятна.
  18. Посмотрел RTL viewer, одно существенное отличие - в 13.1 мультиплексоры все единичные, из-за этого схема на 20 страниц больше, а в 9.0 объединенные в несколько символов(там у меня выход с больших регистров).
  19. Попробовал On/Off register duplication, Logic Cell Insertion - Logic Duplication, register balancing не нашел. Не изменилось.
  20. Все, увидел. В шапке обоих файлов есть # Default value changes, и там для 9.0 только # In 9.0, the default value of assignment ENABLE_BENEFICIAL_SKEW_OPTIMIZATION has changed to "On". Но они и так в обоих файлах "On". SYNTH_TIMING_DRIVEN_SYNTHESIS в 9.0 "Off", в 13.1 "On", поменял, не повлияло. Больше описанных отличий не нашел, очень уж много там.
  21. И как можно это компенсировать настройками, и какими? Что хоть потыкать, для эксперименту? Почему-то этот файл был только в варианте проекта для Q13.1. В проекте 9.0 его не было, подсунул из 13 - ничего не изменилось
  22. Не совсем понял, что вы подразумеваете под внутренними переменными Quartus. Настройки QSF файлов сравнил, все одинаково, кроме set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region" set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region" которые были в 9, но не было в 13. Добавил, эффекта нет.
  23. Нет, я сейчас взял из проекта один большой модуль который меня больше интересует и проверяю только на нем, цифры выше это про него. Там нет блочной памяти и IP блоков. Да, я специально создал два одинаковых проекта в 9.0 и 13.1, чтоб директории не переписывались. А почему именно 9.1 сп2? я использую 9.0, потому что нужна еще поддержка FLEX10K, это последняя версия с ними. Ну как, все таки 7% сверху из ниоткуда многовато, это ж я еще далеко не все собрал. IP блоков нет У меня пара модулей на SV, поэтому 13.1. ПРоверил, нет такого сообщения. Кст в 13.1 компилится в два раза дольше чем в 9.0. Кол-во регистров одинаковое, а вот LE сильно больше в 13.
  24. Не особо очевидно, сравнил настройки в обоих проектах (9 и 13.1), все одинаково, те немногие настройки, которые есть в 13, но нет в 9 отключены. Про алгоритмы оптимизации, наверное, можно гадать, вряд ли это открытая инфа. Тем более, что это дает? Повлиять на это никак нельзя, и неужели в новом квартусе алгоритмы настолько хуже, что тот же проект занимает в полтора раза больше места? Какбэ должно быть наоборот, или так же. Вот сравнил, все идентично.