Как стать автором
Обновить

Комментарии 6

Спасибо за статью!

Позвольте озвучить своё мнение по процессу разработки для ПЛИС и СНК. Если Вас интересует разработка логики, я бы рекомендовал следующим шагом уходить от работы с графическим интерфейсом, и писать весь код текстом. Это сложно только на первый взгляд, но в итоге оказывается более выигрышной стратегией. Проекты с малым числом компонент ещё более-менее возможно поддерживать/отлаживать/изучать в схематичном виде. Но уже даже в Вашем примере, на схеме видна весьма "запутанная" структура с большим количеством соединений. К примеру, если потребуется увеличить количество входов до 20-30, то подобная операция потребует очень много времени, а схема превратится в монструозную лапшу. Тогда как грамотно написанный HDL-код позволит сделать такое изменение исправлением одной константы. Так же с чистым HDL-кодом удобнее работать в системах контроля версий: схему невозможно просмотреть без установки тяжеловесного Vivado. А исходный код на verilog'e или VHDL воспринимается значительно проще. Ну и для того, чтобы воспроизвести этот проект на другом компьютере, придётся либо заново рисовать подобную схему, либо писать достаточно мудрёные скрипты для автоматизации создания проекта. Если проект создан в текстовом виде, то достаточно будет загрузить необходимые файлы и сконфигурировать систему процессора. И, конечно, чистый код легче сделать платформо- и плисинонезависимым.

А ещё, следующим шагом я бы изменил этот проект так, чтобы модуль управления счётчиками подключался напрямую к AXI-шине. Это бы помогло сэкономить ресурсы ПЛИС и сильно упростило весь проект.

Вы совершенно правы! Но пока что у меня опыта не хватает, чтобы предпринимать оптимальные действия для решения задач. Большое спасибо за совет, попробую в эту сторону покопать, как можно было бы описать все подключения внутри HDL-кода. В Quartus я это делал, а вот с Xilinx Vivado есть вопросы...

А в целом, как и предложил @old_bear можно в дополнение к картинкам с block design формировать TCL-скрипты и выкладывать их так же вместе с исходниками.

Ну и для того, чтобы воспроизвести этот проект на другом компьютере, придётся либо заново рисовать подобную схему, либо писать достаточно мудрёные скрипты для автоматизации создания проекта. 

Я тоже глубокий поклонник HDL в противовес графическому представлению, но справедливости ради хочу заметить, что в меню Vivado существует пункт сохранения проекта в виде TCL-скрипта. И этот скрипт потом разворачивается в исходный проект одной командой.

P.S. Извините, немного промахнулся - это ответ на комментарий @Abwindzentrierer.

1. а этот результирующий TCL-скрипт нагляден? глядя на него можно понять что к чему не заглядывая в схему?
2. можно ли его изменить и эти изменения корректно будут отображены в обратной конвертации в схему? не придётся пересчитывать хеши и прочие MD5 суммы и прочие доп действия совершать по правке служебных или бинарных данных?
спасибо.
  1. Ну это довольно нудная последовательность с перечислением внутренних объектов в проекте и их свойств. В принципе он понятен, если вы ориентируетесь в этих объектах и свойствах. Там даже какие-то комментарии добавляются автоматически.
    Но есть важный момент, который я кажется не совсем корректно описал. Этот скрипт именно для самого проекта и его свойств, включая ссылки на используемые исходники. А схематик (извините за англицизм) - это как раз один из вариантов исходников и он хранится в файле с расширением bd (aka block design) который тоже представляет из себя текстовик, но уже в каком-то кастомном формате. Этот текстовик ещё длиннее и нуднее поскольку описывает все используемые в схематике IP и их свойства и соединения, и пожалуй не предполагает что его будут читать и редактировать живые люди. Как я понимаю, основная идея этих файлов в возможности хранить их в системах версионирования и переносить состояние проекта, а не редактировать их напрямую.

  2. Насколько я знаю, никаких хешей и прочего в этих файлах нет. Скрипт проекта я даже в какие-то моменты редактировал для своих нужд. С файлом схемы я руками никогда не ковырялся, поскольку вообще стараюсь избегать как самого схематика, так и использования стороннего IP в своих проектах. По крайней мере в той части, которую я контролирую и храню в гите.
    Не исключено, что схематик тоже можно "нарисовать" TCL-командами и есть ненулевая вероятность, что эти TCL команды Vivado автоматически сохраняет в лог, когда схематик рисуется руками. Но это моё предположение основанное на косвенных наблюдениях, в явном виде я его не проверял.

Большое спасибо за развёрнутый комментарий!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории