教授在课堂上说学生不应该说他们学会了用 Verilog 编程。他说像 Verilog 这样的东西不用于编程,它用于设计。那么 Verilog 与其他编程语言有什么不同呢?
8 回答
Verilog 与 VHDL 一样,旨在描述硬件。相反,诸如 C 或 C++ 之类的编程语言提供了软件程序的高级描述,即微处理器执行的一系列指令。
在实践中,Verilog 和 VHDL 不提供与编程语言相同的功能,即使它们看起来非常相似。例如,for
C/C++ 中的循环描述了给定代码片段的顺序执行;相反,for ... generate
Verilog/VHDL 中的循环描述了同一硬件构建块(例如逻辑门)的多个并行实例。AND
准确地说,for
Verilog 中也存在一个普通的循环,但同样,它必须是“可综合的”,即编译器必须能够生成符合描述的逻辑。
通常,Verilog/VHDL 的初学者会倾向于将给定的函数/算法从 C/C++ 类型的伪代码直接“翻译”为 Verilog/VHDL:令人惊讶的是,它有时可能会起作用,但它总是会导致设计非常糟糕。为了成为一名优秀的 Verilog/VHDL 程序员,必须真正意识到这些差异。
Verilog 是一种硬件定义语言。编程语言通常被理解为用于告诉现有硬件做什么的语言,而不是用于重新配置所述硬件的语言。
它是一种编程语言,不是用来编程软件,而是用来描述硬件设计——但输出不一定是我们理解的“应用程序”。
该语言具有正式的语法。
我对 Verilog 一无所知,但只是快速搜索了一下,维基页面似乎很好地解释了你的老师似乎在逃避的概念差异。正如这里的一些其他海报所写的,我不知道我会认为这不是一种编程语言,我认为程序员很容易相信,如果它不是某种应用程序编程或汇编编程,那么它就不是真正的编程,但总之那是BS。机器码上面的所有东西对我来说基本上都是一样的,如果它是我给计算机的文件,它告诉计算机如何做某事它正在对计算机进行编程(我想问题是在用户和开发人员之间划清界限,我们喜欢感觉很特别)。除非我们计划很快回到打孔卡,
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 程序中的不同问题,并且通过不同的方式,但是说它不是一个程序似乎是错误的。
因为是HDL,所以是定义硬件,verilog里做的任何事情(不是真的什么,而是可以综合的东西)都会被综合成实际的硬件。所以你不能只使用类和 OOPS 概念等编程特性,因为它不能创建任何硬件。
但是在 C 中,所有内容都将转换为可执行的 hex 文件,该文件将在执行程序时加载到您的 ram 中。
另一个基本区别是硬件中的所有内容都是并发的,因此如果您在 verilog 中编写了 a=b+1 和 c=d+1,那么在综合硬件中,两个模块将同时工作。但是在 C 中,一切都是顺序的,因此在同一个 C 程序中,实际上两条指令都将在您的处理器中一一加载。
Verilog 包含描述逻辑网表 (RTL) 的特性和便于对其进行仿真的特性。将 RTL 描述描述为程序可能会传达出这样的描述:描述它的人并不完全理解逻辑设计或综合。将测试台刺激描述为程序是合适的。
verilog/vhdl 用于在芯片上创建和设计特定的应用系统,嵌入到电子设备中。
c/c++在电脑上使用的设计软件
我将以不同的方式来解决这个问题。编程语言的目的是什么?程序的输出会影响现实世界以及您的目标和期望吗?如果是,那么verilog当然是一种编程语言。Console.log 的含义与其在现实世界中的含义一样多,例如。console.log("you have a Million unit") 没有授权就没有法令。所以verilog在某种意义上是一种编程语言。