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驗證中。