Verilog 的综述
1.什么是Verilog?
Verilog 是 Verilog HDL 的简称,Verilog HDL 是一种硬件描述语言(HDL:Hardware Description Language),硬件描述语言是电子系统硬件行为描述、结构描述、数据流描述的语言。利用这种语言,数字电路系统的设计可以从顶层到底层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的数字系统。然后,利用电子设计自动化(EDA)
工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下去,再用专用集成电路 ASIC 或现场可编程门阵列 FPGA 自动布局布线工具,把网表转换为要实现的具体电路布线结构。
在 FPGA 的设计中,我们有多种设计方式,如绘制原理图、编写描述语言代码等。早期的工程师对原理图的设计方式情有独钟,这种输入方式能够很直观的看出电路的结构并快速理解电路。随着逻辑规模的不断攀升,逻辑电路也越来越复杂,这种输入方式就会显得力不从心,应付简单的逻辑电路还算实用,应付起复杂的逻辑电路就不行了。因此取而代之的便是编写描述语
言代码的方式,现今的绝大多数设计都是采用代码来完成的。
目前,主流的硬件描述语言有两种:一种是 VHDL,另一种是 Verilog。VHDL 的全名 Very High Speed Integrated Circuit Hardware Description Language,即 VHSIC,译为超高速集成电路的硬件描述语言。VHDL 发展较早,语法严谨;Verilog 类似 C 语言,语法风格比较自由。Verilog 和 VHDL 这两种硬件描述语言都已成为了 IEEE 标准,VHDL 是在 1987 年成为 IEEE 标准,Verilog 则在 1995 年才正式成为 IEEE 标准。之所以 VHDL 比 Verilog 早成为 IEEE 标准,这是因为 VHDL 是美国军方组织开发的,而 Verilog 则是从一个普通的民间公司的私有财产转化而来,基于 Verilog 的优越性,才成为的 IEEE 标准,因而有更强的生命力。对于初入 FPGA 的新手而言,掌握一种硬件描述语言是必要的。
2.Verilog与VHDL的区别
介绍完了Verilog和VHDL这两种语言,接下来我们再来看看Verilog与VHDL有着怎样的区别。Verilog和VHDL作为最流行的硬件描述语言,从设计的角度来上来说,VHDL要优于Verilog,因为VHDL最初是为描述数字硬件的行为而设计的,而Verilog最初是为更简捷、更有效地描述数字硬件电路和仿真设计的,所以VHDL更适合描述更高层次的硬件电路。从学习的角度上来说,Verilog则要优于VHDL,Verilog它是一种非常容易掌握的硬件描述语言,只要有C语言的编程基础,通过一段时间的学习,再加上一段实际操作,一般可在二至三个月内掌握这种设计技术。而掌握VHDL设计技术就比较困难。这是因为VHDL不很直观,需要有Ada编程基础,一般至少需要半年以上,才能掌握VHDL的基本设计技术。不管怎么说,Verilog与VHDL 语言本身并没有什么优劣之分,而是各有所长,我们使用这两种语言都是能够完成数字电路系统的设计任务的。
对于一个长期或者想要从事FPGA事业的工程师来说,只懂得一种硬件描述语言显然是不够的,这是由于不同项目的平台条件、环境因素以及合作模式等的不同所必然导致的。在这里我们推荐大家入门学习语言应当首选Verilog语言,更进一步,更上一层时,我们再去学习VHDL 语言。这里我们需要说明的是,在后续的文字教程或者实例代码中,我们都是以Verilog为主。
3.Verilog与C语言的区别
说完了Verilog与VHDL的区别,接下来我们还要说一说Verilog与C语言的区别。Verilog 的设计初衷是成为一种基本语法与C语言相近的硬件描述语言,这是因为C语言在Verilog设计之初,已经在许多领域得到广泛应用,C语言的许多语言要素已经被许多人习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。
虽然Verilog语言是根据C语言设计而来的,并且Verilog语言还具备C语言简洁易用等特点,但是,Verilog语言和C语言是有着本质的区别的。这里我们就以最容易理解的并发性为例进行说明:写过C语言代码的都知道,C语言代码是一句一句串行执行的,它是不可以所有的代码语句并行执行的。而我们的Verilog语言作为硬件描述语言,它是可以实现所有的代码语句并行执行的,可以有效地地描述并行的硬件系统。不仅如此,我们在评价硬件描述语言写的好坏的标准和C编程语言的标准也是完全不同的。
这里需要注意的是,如果你有C语言软件编程经验,那么你在学习Verilog的时候,一定要放弃C编程的一些固有思路,学会用硬件的方式去解决问题。时刻提醒自己正在设计的是一个电路,而不是一行行空洞的代码。只有建立了硬件设计思想,才有更深入学习FPGA的可能。
下期预告
Verilog的基础知识