Почему Verilog не считается языком программирования? - PullRequest
15 голосов
/ 25 февраля 2011

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

Ответы [ 7 ]

18 голосов
/ 25 февраля 2011

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

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

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

13 голосов
/ 25 февраля 2011

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

2 голосов
/ 09 декабря 2014

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

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

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

2 голосов
/ 25 февраля 2011

Это язык программирования, предназначенный не для программирования программного обеспечения, а для описания конструкции аппаратного обеспечения, но вывод не обязательно является «приложением» в нашем понимании.

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

1 голос
/ 26 февраля 2011

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

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

1 голос
/ 26 февраля 2011

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

1 голос
/ 25 февраля 2011

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

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

со страницы вики:

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

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

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

Ссылка от: http://en.wikipedia.org/wiki/Verilog

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

...