Почему Verilog не считается языком программирования?

в классе профессор сказал, что студенты не должны говорить, что они научились программировать в Verilog. Он сказал, что что-то вроде Verilog не используется для программирования, которое используется для дизайна. Итак, чем Verilog отличается от других языков программирования?

7 ответов


Verilog-это язык определения оборудования. Языки программирования обычно понимаются как языки для указания существующего оборудования, что делать, а не для перенастройки указанного оборудования.


Verilog, как и VHDL, предназначен для описания аппаратного обеспечения. Вместо этого языки программирования, такие как C или c++, предоставляют высокоуровневое описание программ, то есть серию инструкций, выполняемых микропроцессором.

на практике Verilog и VHDL не предлагают те же функции, что и языки программирования, хотя они выглядят очень похожими. Например,for цикл в C / C++ описывает последовательный выполнение заданного фрагмента кода; вместо for ... generate цикл в Verilog / VHDL описывает несколько параллельно экземпляры одного и того же аппаратного строительного блока (скажем, a AND логические ворота). Если быть точным, существует также равнина for цикл в Verilog, но опять же, он должен быть "синтезируемым", то есть компилятор должен иметь возможность генерировать логику, соответствующую описанию.

как правило, новичок в Verilog/VHDL будет соблазн "перевести" данную функцию / алгоритм из типа псевдокода C / C++ непосредственно к Verilog / VHDL: удивительно, что иногда это может работать, но это всегда приводит к драматически плохому дизайну. Нужно действительно знать об этих различиях, чтобы стать хорошим программистом Verilog/VHDL.


потому что это HDL, поэтому он должен определить аппаратное обеспечение, и все, что сделано в verilog (не совсем ничего, но синтезируемые вещи), будет синтезировано в фактическое оборудование. Таким образом, вы не можете просто использовать функции программирования, такие как class и OOPS concept, потому что он не может создать никакого оборудования.

но в C все будет преобразовано в исполняемый шестнадцатеричный файл, который будет загружен в вашу ОЗУ при выполнении программы.

другое основное различие-это все в аппаратном обеспечении одновременно, поэтому, если вы написали a=b+1 и c=d+1 в verilog, то в синтезированном оборудовании оба модуля будут работать одновременно. Но в C все последовательно, поэтому в одной и той же программе C фактически обе инструкции будут загружаться одна за другой в ваш процессор.


Я ничего не знаю о Verilog, но просто быстро погуглил, и страницы wiki, похоже, делают довольно хорошую работу по объяснению различий в концепции, что ваш учитель, казалось, ускользает. Как писали некоторые другие плакаты Здесь, я не знаю, что я бы отмахнулся от этого как от не языка программирования, я думаю, что есть высокая тенденция для программистов верить, если это не так или иначе прикладное программирование или программирование сборки, то это не программирование, но вкратце это БС. Все выше машинный код в основном то же самое для меня, если это файл я даю на компьютер и он говорит компьютеру, как сделать что-то программировать на компьютере (я думаю, проблема рисуя линию между пользователями и разработчиками, нам нравится чувствовать себя особенными). Если мы не планируем в ближайшее время вернуться к перфокартам, я думаю, что все, что имеет синтаксис C или позволяет описывать синтаксически строгим (хорошо определенным) способом и изменяет поведение компьютера (что он выводит для данного входа), то вы сделали некоторое программирование в том или ином смысле.

http://dictionary.reference.com/browse/programming

со страницы wiki:

http://en.wikipedia.org/wiki/Dataflow_language

Программирование потока данных фокусируется на том, как вещи соединяются, в отличие от императивного программирования, которое фокусируется на том, как вещи происходят. В императивном программировании программа моделируется как серия операций (то, что "происходит"), поток данных между этими операциями имеет второстепенное значение для поведения самих операций. Однако Программирование потоков данных моделирует программы как ряд (иногда взаимозависимых) связей, причем операции между этими связями имеют второстепенное значение.

(Я думаю, что ключевым здесь является отбор типа программирования не тот "язык программирования" и "язык дизайна", насколько я понимаю они оба являются языками программирования, у них просто разные цели и реализации). Когда я думаю о дизайне, я в основном думаю об этом: http://dictionary.reference.com/browse/design и это не программа, хотя программа может использовать проекты (и, вероятно, должна, обычно называемая шаблонами дизайна, но не то, что вы делаете)

подключено из:http://en.wikipedia.org/wiki/Verilog

для ваших учителей укажите это язык, вероятно, будет использоваться для решения различных проблем из вашей ежедневной программы Java/C, и с помощью других средств, однако сказать, что это не программа, кажется неправильным.


Verilog содержит функции для описания логических сетевых списков (RTL) и функции для облегчения их моделирования. Описание описания RTL как программы может означать, что тот, кто описывает ее как таковую, не вполне понимает логику проектирования или синтеза. Было бы уместно описать стимул тестбенча как программу.


verilog / vhdl использовано для того чтобы создать и конструировать специфическую прикладную систему на обломоке который врезал в электронные устройства.

C / C++ используется программное обеспечение для проектирования на компьютере


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

язык имеет формальный синтаксис.