Jump to content

    
Какой способ разработки систем на ПЛИС сейчас наиболее популярен?  

208 members have voted

  1. 1. Какой способ разработки Вы используете?

    • Схемотехнический ввод
      11
    • Verilog
      102
    • VHDL
      82
    • AHDL
      5
    • другой
      8


Какой способ разработки систем на ПЛИС сейчас наиболее популярен?

В железо ввел переменную, потом в тексте "программы" ошибку искал.

VHDL не поможет, если на птичьем языке общаться. Только незнание усугубит.

 

Вспоминая старый програмистский анекдот - VHDL попросту не даст прострелить вам ногу, в то время как Verilog предоставляет для этого широчайшие возможности...

Share this post


Link to post
Share on other sites
Вспоминая старый програмистский анекдот - VHDL попросту не даст прострелить вам ногу, в то время как Verilog предоставляет для этого широчайшие возможности...

 

Могу поспорить, студент в графике не нарисует делитель на 2 на D или Т триггере. Вот это и есть реалии сегодняшнего дня.

С консерватории надо начинать.

Share this post


Link to post
Share on other sites
Verilog,verilog....

У меня вот студент ввёл в модуль новую переменную,а объявить её забыл.Потом целый день искал почему модуль перестал работать. ISE даже не ругнулся. На VHDL такие номера не проходят.

Это потому что студенты Warning не любят читать. Их только Error останавливает. :) Молодые, горячие - что делать. :)

Share this post


Link to post
Share on other sites
Verilog,verilog....

У меня вот студент ввёл в модуль новую переменную,а объявить её забыл.Потом целый день искал почему модуль перестал работать. ISE даже не ругнулся. На VHDL такие номера не проходят.

`default_nettype none

- в файле макросов, включаемом во все файлы проекта (и `timescale задавать удобно там же). По крайней мере в этом Verilog позволяет разработчику себя застраховать. А вот ошибки, связанные с молчаливым обрезанием / расширением разрядности и применением не всегда интуитивных правил определения signed / unsigned порой делаю и сам, увы.

Share this post


Link to post
Share on other sites
Уже много лет для разработки проектов ПЛИС любой сложности использую Simulink + Simulink HDL Coder

Обладает всеми плюсами схематика:

...

2) "Языконезависимость". В том смысле, что если придется встраиваться в команду разработчиков, которая привыкла к какому-либо одному из языков VHDL или Verilog - нет проблем, указывается кодеру язык и в путь

Я правильно понял, что Simulink HDL Coder генерирует именно код на HDL, а не какие-то кубики из готовых библиотек? Как на Ваш взгляд этот код по сравнению с человеческим?

Какова эффективность такого описания?

5) ... Причем тестировать можно и чей-либо чужой vhdl/verilog-код, загнав его в ModelSim и использовать EDA Link for ModelSim.

Можно чуть подробнее про EDA Link for ModelSim?

 

Еще несколько вопросов - для каких систем, на Ваш взгляд, такой подход не очень подходит?

Насколько просто (грубо говоря сколько времени требуется) разобраться с этим инструментарием при условии что с матлабом и симулинком дружу очень давно и много с ними работаю (правда с симулинком меньше значительно)?

И какие подводные камни можете указать?

 

Share this post


Link to post
Share on other sites
Я правильно понял, что Simulink HDL Coder генерирует именно код на HDL, а не какие-то кубики из готовых библиотек? Как на Ваш взгляд этот код по сравнению с человеческим?

Какова эффективность такого описания?

 

На мой взгляд, такой подход вполне подходит для data flow алгоритмов, для которых Simulink и придуман в первую очередь. Никаких особых изысков там нет - сумматоры, умножители и т.д. - их трудно описать оптимальнее руками. При этом возможности синтезатора (квартуса по крайней мере, с ISE давненько не работал по данной теме) позволяют вполне успешно упаковывать все это в разные типы DSP-блоков в зависимости от используемого кристалла.

Для управляющих алгоритмов ничего лучше ручного написания кода (на vhdl), на мой взгляд не изобрели, все эти stateflow красивы, но не вполне удобны.

 

Подобный подход очень удобен тем, что позволяет добиться преемственности при построении dsp-систем, от математической модели к проекту кристалле, минимизируя число ручных стадий, ради чего стоит пойти на некоторые жертвы.

Один из основных недостатков - трудности создания многочастотных систем и отсутствие поддержки временного мультиплексирования (по крайней мере на данный момент).

 

Share this post


Link to post
Share on other sites
Я правильно понял, что Simulink HDL Coder генерирует именно код на HDL, а не какие-то кубики из готовых библиотек? Как на Ваш взгляд этот код по сравнению с человеческим?

Какова эффективность такого описания?

Simulink HDL Coder генерирует именно код на HDL (VHDL, Verilog). Есть много уже готовых блоков, которые поддерживаются для генерации HDL-кода (подробнее - наберите команду 'hdllib' или 'hdldemolib' без кавычек). Вы также можете сами писать ЛЮБЫЕ блоки, которые вам нужно с помощью Embedded MATLAB языка.

Какова эффективность такого описания?

Ну это смотря как эту эффективность мерить. Если Вы интересуетесь насколько хорошо этот код синтезируется и разводится в кристалл САПРами, то могу сказать, что очень хорошо. На этапе создания модели в Симулинке необходимо отдавать себе отчет во что превратиться тот или иной блок в ПЛИС. Если такое понимание есть, то создаются модели эффективные с точки зрения синтеза в ПЛИС, а соответственно и код эффективный. А если рассматривать с точки зрения того, что при таком подходе Вы убиваете сразу двух зайцев - и модель создаете, и проект ПЛИС четко привязанный к этой модели, то тут эффективность разработки, по моему мнениею, намного выше традиционных подходов. Может если Вы хотите выбрать из кристалла максимум, на который он способен, то здесь возможно ручное кодирование вырвется вперед, но это очень сильно зависит от опытности человека, который будет писать код. Хотя я не проводил подобные соревнования. Надо понимать, что время создания большого проекта ПЛИС с целью выжать максимум возможности кристалла в несколько раз выше, чем время создания такого же большого проекта, но без цели выжать максимум. (это как гражданская авиация и истребительная авиация с большими перегрузками). В подавляющем большинстве случаев люди берут ПЛИС с ресурсом с запасом.

 

Можно чуть подробнее про EDA Link for ModelSim?

почитайте блог des_00, он как-то уже писал про использование этого инструмента. Можно почитать на сайте Mathworks, посмотреть записанные вебинары на эту тему.

 

для каких систем, на Ваш взгляд, такой подход не очень подходит?

не понял вопроса. Мы тут обсуждаем вопрос разработки ПЛИС. Я считаю для этой темы вполне подходит. Я не занимаюсь разработкой DSP-систем, как наверное думают многие, когда слышат про Симулинк. Используя подход, который я описал разрабатывал модули канального уровня Ethernet (прием-передача), оконечные устройства (TLP-уровень) PCI Express интерфейса, в прошлом и PCI-устройства, сейчас планирую SATA делать.

 

Для управляющих алгоритмов ничего лучше ручного написания кода (на vhdl), на мой взгляд не изобрели, все эти stateflow красивы, но не вполне удобны.

Если эта фраза про конечные автоматы, то не согласен с Вами. StateFlow очень удобен, очень нагяден. Строя в StateFlow конечный автомат Вы по сути строите блок-схему алгоритма, который вы реализуете через этот автомат. А при ручном написании кода (на vhdl) Вы эту блок-схему рисуете на бумажке, а потом кодируете на vhdl

Share this post


Link to post
Share on other sites
почитайте блог des_00[/url], он как-то уже писал про использование этого инструмента.

писал MKS, а симулинк я просто использую для РРЛ систем. хдл кодер не использую, т.к. мне важен ресурс, но модели обкатываю в симулинке

Share this post


Link to post
Share on other sites
...

 

Большое спасибо за развернутый ответ.

 

...

не понял вопроса. Мы тут обсуждаем вопрос разработки ПЛИС. Я считаю для этой темы вполне подходит. Я не занимаюсь разработкой DSP-систем, как наверное думают многие, когда слышат про Симулинк. Используя подход, который я описал разрабатывал модули канального уровня Ethernet (прием-передача), оконечные устройства (TLP-уровень) PCI Express интерфейса, в прошлом и PCI-устройства, сейчас планирую SATA делать.

 

Все правильно поняли :rolleyes: Именно про это (то, на что Вы ответили) я и спрашивал.

Еще раз спасибо.

 

Планирую спокойно поизучать все это.

 

 

 

Share this post


Link to post
Share on other sites

Я тоже на схематике в квартусе проекты ваяю. Вполне уставивает. Согласен, что аккуратно нужно назначать имена сигналов. Особенно осторожно с цифрами в конце имени. Иначе эти цифры любят перебраться в индексы. А все остальное очень удобно. Любой старый проект можно открыть и сразу видишь что куда бежало.

 

Может еще удобство того или иного способа разработки зависит от функции проекта. В моих проектах в-основном работа с потоками данных. Например взять видео поток с видео процессора, засунуть его в СДРАМ. Перед этим обработать по ходу дела, перегнать на карточку или разбить и отправить на какой либо интерфеис. Математику сложнее писать. Но ее можно подцепить отдельным модулем.

 

Может, конечно, я просто привык за много лет работы и мне лень переходить на другой способ (как писалось выше). Согласен.

 

Когда один человек создает проект, то подходит любой способ, который ему нравится. Когда команда, то, наверное, удобней Verilog.

 

Таково мое мнение.

Share this post


Link to post
Share on other sites

Внутри модулей пишу на Verilog, а топ левел оставляю на схематике.

 

Share this post


Link to post
Share on other sites
Внутри модулей пишу на Verilog, а топ левел оставляю на схематике.

А тестбенчи тогда как запускаете? Или не запускаете? :) Или из топа генерите потом снова текст?

Share this post


Link to post
Share on other sites
А тестбенчи тогда как запускаете? Или не запускаете? :) Или из топа генерите потом снова текст?

Это вы не у меня спрашивали, но я отвечу. Ага, из топа текст.

 

И это конечно не в тему, но реально это пригодилось один раз, когда я еще умела строить только в схематике, а диплом надо было сдавать как программисту, то есть - программу (получилось несколько больше чем нужно строчек кода ^^).

 

Пишу на Verilog. Читаю на VHDL.

Пользую Quartus, ModelSim, Matlab.

 

Из последних открытий было важным что информацию с SignalTap можно считать и представить в Matlab в виде массива данных.

 

 

 

Share this post


Link to post
Share on other sites
А тестбенчи тогда как запускаете? Или не запускаете? :) Или из топа генерите потом снова текст?

 

А какая разница? В чем проблема? Можно хоть так, хоть так..

Тестбенч всегда... (Я под ISE). Может кактус не имеет возможности?

После отладки можно и сгенерировать в текст ...в конце. :biggrin:

Share this post


Link to post
Share on other sites
А какая разница? В чем проблема? Можно хоть так, хоть так..

Что значит, хоть так, хоть так? Вы можете скормить, скажем, моделсиму или альдеку какой-то левый схематик?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this