您的位置:電子發(fā)燒友網(wǎng) > 電子技術(shù)應用 > 行業(yè)新聞 > 可編程邏輯 >
VHDL和Verilog HDL語言對比
Verilog HDL和VHDL都是用于邏輯設計的硬件描述語言,并且都已成為IEEE標準。VHDL是在1987年成為IEEE標準,Verilog HDL則在1995年才正式成為IEEE標準。
之所以VHDL比Verilog HDL早成為IEEE標準,這是因為VHDL是美國軍方組織開發(fā)的,而Verilog HDL 則是從一個普通的民間公司的私有財產(chǎn)轉(zhuǎn)化而來。
VHDL其英文全名為VHSIC Hardware Description Language,而VHSIC則是Very High Speed Integrated Circuit的縮寫,意為甚高速集成電路,故VHDL其準確的中文譯名為甚高速集成電路的硬件描述語言。
1.共同點
Verilog HDL和VHDL作為描述硬件電路設計的語言,其共同的特點在于。
· 能形式化地抽象表示電路的結(jié)構(gòu)和行為。
· 支持邏輯設計中層次與領域的描述。
· 可借用高級語言的精巧結(jié)構(gòu)來簡化電路的描述。
· 具有電路仿真與驗證機制以保證設計的正確性。
· 支持電路描述由高層到低層的綜合轉(zhuǎn)換。
· 硬件描述與實現(xiàn)工藝無關(guān)(有關(guān)工藝參數(shù)可通過語言提供的屬性包括進去)。
· 便于文檔管理,易于理解和設計重用。
2.不同點
但是Verilog HDL和VHDL又各有其自己的特點。
由于Verilog HDL早在1983年就已推出,因而Verilog HDL擁有更廣泛的設計群體,成熟的資源也遠比VHDL豐富。
與VHDL相比,Verilog HDL的最大優(yōu)點是:它是一種非常容易掌握的硬件描述語言,只要有C語言的編程基礎,通過二十學時的學習,再加上一段時間的實際操作,可在二~三個月內(nèi)掌握這種設計技術(shù)。
而掌握VHDL設計技術(shù)就比較困難。這是因為VHDL不很直觀,需要有Ada編程基礎。
目前版本的Verilog HDL和VHDL在行為級抽象建模的覆蓋范圍方面也有所不同。一般認為Verilog HDL在系統(tǒng)級抽象方面比VHDL略差一些,而在門級開關(guān)電路描述方面比VHDL強得多。
Verilog HDL程序基本結(jié)構(gòu)
Verilog HDL是一種用于數(shù)字邏輯電路設計的語言。用Verilog HDL描述的電路設計就是該電路的Verilog HDL模型。Verilog HDL既是一種行為描述的語言,也是一種結(jié)構(gòu)描述的語言。也就是說,既可以用電路的功能描述,也可以用元器件和它們之間的連接來建立所設計電路的Verilog HDL模型。Verilog模型可以是實際電路的不同級別的抽象。這些抽象的級別和它們對應的模型類型共有以下5種。
· 系統(tǒng)級(system):用高級語言結(jié)構(gòu)實現(xiàn)設計模塊的外部性能的模型。
· 算法級(algorithm):用高級語言結(jié)構(gòu)實現(xiàn)設計算法的模型。
· RTL級(Register Transfer Level):描述數(shù)據(jù)在寄存器之間流動和如何處理這些數(shù)據(jù)的模型。
· 門級(gate-level):描述邏輯門以及邏輯門之間的連接的模型。
· 開關(guān)級(switch-level):描述器件中三極管和儲存節(jié)點以及它們之間連接的模型。
一個復雜電路系統(tǒng)的完整Verilog HDL模型是由若干個Verilog HDL模塊構(gòu)成的,每一個模塊又可以由若干個子模塊構(gòu)成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶所設計的模塊交互的現(xiàn)存電路或激勵信號源。利用Verilog HDL語言結(jié)構(gòu)所提供的這種功能就可以構(gòu)造一個模塊間的清晰層次結(jié)構(gòu)來描述極其復雜的大型設計,并對所作設計的邏輯電路進行嚴格的驗證。
Verilog HDL行為描述語言作為一種結(jié)構(gòu)化和過程性的語言,其語法結(jié)構(gòu)非常適合于算法級和RTL級的模型設計。這種行為描述語言具有以下功能。
· 可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。
· 用延遲表達式或事件表達式來明確地控制過程的啟動時間。
· 通過命名的事件來觸發(fā)其他過程里的激活行為或停止行為。
· 提供了條件、if-else、case、循環(huán)程序結(jié)構(gòu)。
· 提供了可帶參數(shù)且非零延續(xù)時間的任務(task)程序結(jié)構(gòu)。
· 提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。
· 提供了用于建立表達式的算術(shù)運算符、邏輯運算符、位運算符。
· Verilog HDL語言作為一種結(jié)構(gòu)化的語言也非常適合于門級和開關(guān)級的模型設計。因其結(jié)構(gòu)化的特點又使它具有以下功能。
— 提供了完整的一套組合型原語(primitive);
— 提供了雙向通路和電阻器件的原語;
— 可建立MOS器件的電荷分享和電荷衰減動態(tài)模型。
Verilog HDL的構(gòu)造性語句可以精確地建立信號的模型。這是因為在Verilog HDL中,提供了延遲和輸出強度的原語來建立精確程度很高的信號模型。信號值可以有不同的強度,可以通過設定寬范圍的模糊值來降低不確定條件的影響。
Verilog HDL作為一種高級的硬件描述編程語言,有著類似C語言的風格。其中if語句、case語句等和C語言中的對應語句十分相似。如果讀者已經(jīng)掌握C語言編程的基礎,那么學習Verilog HDL并不困難,只要對Verilog HDL某些語句的特殊方面著重理解,并加強上機練習就能很好地掌握它,利用它的強大功能來設計復雜的數(shù)字邏輯電路。下面將介紹Verilog HDL中的基本結(jié)構(gòu)和語法。
加法器
module adder ( count,sum,a,b,cin ); //加法器模塊端口聲明
input [2:0] a,b; //端口說明
input cin;
output count;
output [2:0] sum;
assign {count,sum} = a + b + cin; //加法器算法實現(xiàn)
endmodule
這個例子通過連續(xù)賦值語句描述了一個名為adder的三位加法器可以根據(jù)兩個三比特數(shù)a、b和進位(cin)計算出和(sum)和進位(count)。從例子中可以看出整個Verilog HDL程序是嵌套在module和endmodule聲明語句里的。
比較器
module compare ( equal,a,b ); //比較器模塊端口聲明
output equal; //輸出信號equal
input [1:0] a,b; //輸入信號a、b
assign equal=(a==b)?1:0; //如果a、b 兩個輸入信號相等,輸出為1,否則為0
endmodule
這個程序通過連續(xù)賦值語句描述了一個名為compare的比較器。對兩比特數(shù)a、b進行比較,如a與b相等,則輸出equal為高電平,否則為低電平。在這個程序中,“/*........*/”和“//.........”表示注釋部分,注釋只是為了方便程序員理解程序,對編譯是不起作用的。
使用原語的三態(tài)驅(qū)動器。
module trist2(out,in,enable); //三態(tài)啟動器模塊端口聲明
output out; //端口說明
input in, enable;
bufif1 mybuf(out,in,enable); //實例化宏模塊bufif1
endmodule
這個例子描述了一個名為trist2的三態(tài)驅(qū)動器。程序通過調(diào)用一個在Verilog語言庫中現(xiàn)存的三態(tài)驅(qū)動器實例元件bufif1來實現(xiàn)其功能
自行設計的三態(tài)驅(qū)動器。
module trist1(out,in,enable); //三態(tài)啟動器模塊端口聲明
output out; //端口說明
input in, enable;
mytri tri_inst(out,in,enable);//實例化由mytri模塊定義的實例元件tri_inst
endmodule
module mytri(out,in,enable); //三態(tài)啟動器模塊端口聲明
output out; //端口說明
input in, enable;
assign out = enable? in : 'bz; //三態(tài)啟動器算法描述
endmodule
這個例子通過另一種方法描述了一個三態(tài)門。在這個例子中存在著兩個模塊。模塊trist1調(diào)用由模塊mytri定義的實例元件tri_inst。模塊trist1是頂層模塊。模塊mytri則被稱為子模塊。
通過上面的例子可以看到。
· Verilog HDL程序是由模塊構(gòu)成的。每個模塊的內(nèi)容都是嵌在module和endmodule兩個語句之間。每個模塊實現(xiàn)特定的功能。模塊是可以進行層次嵌套的。正因為如此,才可以將大型的數(shù)字電路設計分割成不同的小模塊來實現(xiàn)特定的功能,最后通過頂層模塊調(diào)用子模塊來實現(xiàn)整體功能。
· 每個模塊要進行端口定義,并說明輸入輸出口,然后對模塊的功能進行行為邏輯描述。
· Verilog HDL程序的書寫格式自由,一行可以寫幾個語句,一個語句也可以分寫多行。
· 除了endmodule語句外,每個語句和數(shù)據(jù)定義的最后必須有分號。
· 可以用“/*.....*/”和“//.......”對Verilog HDL程序的任何部分作注釋。一個好的、有使用價值的源程序都應當加上必要的注釋,以增強程序的可讀性和可維護性。
相關(guān)閱讀:
- [無線通信] VHDL語言實現(xiàn)的幀同步算法 2010-07-02
- [網(wǎng)絡/協(xié)議] 基于Verilog HDL描述的10M/100Mbps 以太 2009-05-05
- [新品快訊] DS31256 -256通道、高吞吐率HDLC控制器 2009-04-21
- [可編程邏輯] Verilog HDL語言簡介 2010-02-09
- [可編程邏輯] 基于VHDL的4PSK的設計與實現(xiàn) 2010-02-26
- [Allegro] 采用EP1C6Q240C8和VHDL的定時器的設計 2010-06-25
- [Allegro] 基于Verilog HDL設計的UART模塊 2010-08-02
- [布線技巧與EMC] 何謂高密度印制電路板(HDL Board) 2006-04-16
(責任編輯:發(fā)燒友)
發(fā)表評論,輕松獲取積分:
最新評論
已有條評論,共人參與,點擊查看相關(guān)下載
- VHDL實用教程31695
- vhdl語言教程下載8993
- 存儲器接口vhdl代碼全集3400
- X-HDL2943
- 曼徹斯特編|解碼器|VHDL2098
- The VHDL Cookbook2094
- VHDL基礎教程2094
- 異步通訊接口URAT4(VHDL代碼)1860
電子技術(shù)文章排行
本類排行
總排行