很多初学者第一眼看到Verilog的时候感觉,这Verilog的语法怎么跟C语言这么像啊!确实,两者长得确实很相像。但是两者还是有很大的区别。Verilog是一种对应着硬件的语言,对应着的是实际的硬件(包括对实际硬件的仿真),而C语言是一种软件,它只不过在某些时候用来控制硬件会更方便一点。
那么Verilog是如何对应硬件的?任何一种语言,无论是谁开发的,在目前这个阶段,都有一个基本模式,或者说一个基本思路。比如Verilog的发明。首先给这种语言Verilog列出它的所有语法。if语句对应着什么电路?2选一多路选择器。如果if语句后面跟着好几个else分支选项呢?那就多路选择器后跟着多路选择器。如果是case语句呢?把case的分支的数目计算一下,用一个复杂的多路选择器。如果是加法器呢?列真值表,看有多少种可能性,然后综合以后根据优化结果提供......
最终的结果是,发明Verilog这种语言的时候,发明者就列出了它的所有基本语法语句,每种语句都有实现的对应电路,当你写的模块存在哪些语句,编译的时候就对应的翻译成哪些电路。
那么仿真呢?由于事先知道信号流过与或非等所有标准、非标准器件的延时和输出,因此给定仿真激励就可以计算任何时刻的仿真输出。
总的来说,Verilog和C有如下一些相同的和不同的地方:
(1)C语言的最底层实用结构是函数,而Verilog的最底层实用结构是模块;(www.xing528.com)
(2)C语言可以调用函数,调用方式是引用函数名,通过参量来实现。Verilog可以调用模块,调用和被调用是通过端口连线的一一对应关系来完成。C语言一般不对应具体硬件;而Verilog模块对应的是真实硬件。所以Verilog的端口连线的对应关系实际上反映的是两个物理硬件之间一对一的连接关系;
(3)两者之间有很大的相似之处。C语言的入口在main主函数,执行过程中可以调用函数。Verilog的入口在模块名开始的结构。C语言会先定义一些变量,Verilog会定义一些端口和变量;
(4)C语言的运行过程和Verilog的运行过程不一样。C语言是需要在中央处理器上运行的,而Verilog是需要编译后生成格式文件下载到芯片上去生成实际门电路的;
(5)当初开发Verilog的创始人在开发Verilog的时候,借鉴了C语言的逻辑结构,同时又考虑到了Verilog所应用的独特场合,这就导致了两者有很大的相似之处,比如两者的注释方式就很相似。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。