VHDL和Verilog HDL 的区别
低层次建模
VHDL和Verilog HDL都可以描述硬件,然后,在低层次硬件描述上VERILOG HDL好于VHDL。这是因为Verilog HDL最初就是用来创建和仿真逻辑门电路的。实际上,Verilog HDL有内置的门或者是低层次的逻辑门,因此,设计者能够用Verilog代码实例门电路而在VHDL中不可以。
Verilog的门级元件有:and, nand, or, nor, xor, xnor, buf, not, bufif0, notif0, bufif1, notif1, pullup, pulldown.Verilog的开关级元件有:pmos, nmos, rpmos, rnmos, cmos, rcmos, tran, rtran, tranif0, rtranif0, tranif1, rtranif1.
更加重要的是,Verilog支持用户自定义元件,因此,设计者可以定义他们自己的单元元件。这个特点对于ASIC的设计者来说是必须和受欢迎的 。
VHDL同样有一些低层次的嵌入式的逻辑门,如NOT, AND, NAND, OR, NOR, XOR, XNOR.
举例如下:
or u1(x,y,z); (in Verilog) <=> x <= y OR z; in VHDL
and u2(i1,i2,i3); (in Verilog) <=> i3 <= i2 AND i3; in VHDL
高层次建模
另一方面,在高层次硬件建模方面,VHDL比Verilog HDL要强。VHDL比Verilog HDL提供了更多的特点和构造结构,这些使得VHDL更适合高层次建模。在比较VHDL和Verilog后,以下几个主要不同的特点来支撑高层次建模。
1、在VHDL中,用户自定义数据类型
Verilog有非常简单的数据类型,这些数据类型全部由Verilog语言自己定义(用户不能自己定义数据类型)。Verilog有两大数据类型,包括网格(net)数据类型和变量数据数据类型。网格数据类型主要用来连接元件,如wire(最受欢迎)、wor、 wand、 tri和 trior等;变量数据类型用来暂时存储数据如reg(最受欢迎)、integer、 time、 real 和 realtime。
VHDL支持许多不同的数据类型,包括预定义数据类型和自定义数据类型。预定义数据类型包括 bit, bit_vector, string, time, boolean, character, and numeric (real or integer).VHDL允许设计者在预定义数据类型的基础上,定义不同的数据类型。对于可能会用许多不同的数据类型的复杂和高层次的系统来说,这是一个好的特征。
2、在VHDL中,用于设计复用的包(package)
在VHDL中,包通常会被用来声明数据类型和子程序。被声明在包中的数据类型和子程序能被不同的实体或者结构体引用。
在Verilog中没有包的定义,最接近VHDL包的是’include指令,函数或者定义能被单独存在另外的文件,用的时候用’include指令。
3、在VHDL中的配置语句
一个VHDL设计能包含许多设计实体,每一个设计实体可以有许多不同的结构体。在设计中,配置语句能给设计单元分配具体的结构体。在VHDL设计中需要管理一个大的高层次设计时,这个特点非常有帮助。
4、在vhdl中库管理
当同时看VHDL和Verilog代码时,最明显的区别是Verilog没有库调用,而VHDL在代码前面有库调用。VHDL库包含结构体、实体、包和配置语句。当管理大型设计结构是,这些特点非常有用。
总之,VHDL在高层次建模时,比Verilog好。如果我是一个FPGA设计者,因为FPGA设计不要求低成次硬件建模,所以我更喜欢VHDL。
值得一提是, 通过加入和VHDL一样的高层次特点和结构,提高Verilog在高层次建模方面的弱点,提出来SystemVerilog语言。SystemVerilog现在被广泛应用到IC验证中。