为什么不将Verilog视为编程语言?

时间:2011-02-25 19:23:49

标签: programming-languages verilog

在课堂上,教授说学生不应该说他们学会了用Verilog编程。他说像Verilog这样的东西不习惯用来设计它。那么Verilog与其他编程语言有何不同呢?

8 个答案:

答案 0 :(得分:17)

与VHDL一样,Verilog旨在描述硬件。相反,诸如C或C ++之类的编程语言提供了软件程序的高级描述,即微处理器执行的一系列指令。

在实践中,Verilog和VHDL不提供与编程语言相同的功能,即使它们看起来非常相似。例如,C / C ++中的for循环描述了给定代码片段的顺序执行;相反,Verilog / VHDL中的for ... generate循环描述了同一硬件构建块的多个并行实例(例如,AND逻辑门)。确切地说,在Verilog中也存在一个普通的for循环,但同样,它必须是“可合成的”,也就是说,编译器必须能够生成符合描述的逻辑。

通常情况下,Verilog / VHDL中的初学者会试图将给定的函数/算法从C / C ++类型的伪代码直接“转换”到Verilog / VHDL:令人惊讶的是,它有时可能会起作用,但它总会导致设计不佳。为了成为一名优秀的Verilog / VHDL程序员,我们必须真正意识到这些差异。

答案 1 :(得分:13)

Verilog是一种硬件定义语言。编程语言通常被理解为用于告知现有硬件要做什么的语言,而不是用于重新配置所述硬件的语言。

答案 2 :(得分:2)

它是一种编程语言,不是编程软件,而是描述硬件设计 - 但输出不一定是我们理解的“应用程序”。

该语言具有正式语法。

答案 3 :(得分:2)

因为它是HDL,所以它是定义硬件,并且在verilog中完成的任何事情(实际上不是任何东西,但是可合成的东西)将被合成到实际的硬件中。因此,您不能仅使用类和OOPS概念等编程功能,因为它无法创建任何硬件。

但在C语言中,所有内容都将转换为可执行的hex文件,在执行程序时会将其加载到ram中。

另一个基本区别是硬件中的所有内容都是并发的,所以如果你在verilog中写了a = b + 1和c = d + 1,那么在合成硬件中,两个模块都会正常工作。但是在C语言中,所有内容都是顺序的,所以在同一个C程序中,实际上两条指令都会在处理器中逐个加载。

答案 4 :(得分:1)

我对Verilog一无所知,只是做了一个快速的谷歌搜索,维基页面似乎做了很好的解释你的老师似乎在逃避的概念差异。正如这里写的其他一些海报一样,我不知道我会认为这不是一种编程语言,我认为程序员很有可能会相信,如果它不是某种程度上的应用程序编程或汇编编程那么它就不是真正的编程,但简而言之就是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程序中的不同问题,并通过不同的方式,但是说它不是程序似乎是错误的。

答案 5 :(得分:1)

Verilog包含描述逻辑网表(RTL)的功能和便于模拟它们的功能。将RTL描述描述为程序可以表明,将其描述为这样的人并不完全理解逻辑设计或合成。将测试平台刺激描述为一个程序是合适的。

答案 6 :(得分:1)

verilog / vhdl用于在嵌入电子设备的芯片上创建和设计特定的应用系统。

c / c ++在计算机上使用了设计软件

答案 7 :(得分:0)

我将以另一种方式解决这个问题。编程语言的目的是什么?程序的输出会影响现实世界以及您的目标和期望吗?如果是,那么当然verilog是一种编程语言。 Console.log与其在现实世界中翻译的内容一样重要。 console.log(“您有百万个单位”)没有授权就没有法令。因此,从某种意义上说,verilog是一种编程语言。