;
文章:新聞EDA技術(shù)電源技術(shù)無(wú)線通信測(cè)量?jī)x表嵌入式類電子技術(shù)制造技術(shù)半導(dǎo)體網(wǎng)絡(luò)協(xié)議展會(huì)實(shí)驗(yàn)家電維修 3G  
  下載:EDA教程電源技術(shù)電子書籍電子元件無(wú)線通信通信網(wǎng)絡(luò)電路圖紙嵌入式類單片機(jī)傳感/控制電子教材模擬數(shù)字
.... 音視頻類
消費(fèi)電子機(jī)械電子行業(yè)軟件C/C++FPGA/ASIC規(guī)則標(biāo)準(zhǔn)家電維修DSPIC資料ARM軟件電路圖電子技術(shù)論壇
 
位置:電子發(fā)燒友 > 電子技術(shù)應(yīng)用 > 行業(yè)新聞 > 可編程邏輯 >VHDL和Verilog HDL語(yǔ)言對(duì)比 退出登錄 用戶管理

VHDL和Verilog HDL語(yǔ)言對(duì)比

作者:佚名  來(lái)源:不詳  發(fā)布時(shí)間:2010-2-9 9:01:17  [收 藏] [評(píng) 論]

VHDL和Verilog HDL語(yǔ)言對(duì)比

Verilog HDL和VHDL都是用于邏輯設(shè)計(jì)的硬件描述語(yǔ)言,并且都已成為IEEE標(biāo)準(zhǔn)。VHDL是在1987年成為IEEE標(biāo)準(zhǔn),Verilog HDL則在1995年才正式成為IEEE標(biāo)準(zhǔn)。
之所以VHDL比Verilog HDL早成為IEEE標(biāo)準(zhǔn),這是因?yàn)閂HDL是美國(guó)軍方組織開發(fā)的,而Verilog HDL 則是從一個(gè)普通的民間公司的私有財(cái)產(chǎn)轉(zhuǎn)化而來(lái)。
VHDL其英文全名為VHSIC Hardware Description Language,而VHSIC則是Very High Speed Integrated Circuit的縮寫,意為甚高速集成電路,故VHDL其準(zhǔn)確的中文譯名為甚高速集成電路的硬件描述語(yǔ)言。
1.共同點(diǎn)
Verilog HDL和VHDL作為描述硬件電路設(shè)計(jì)的語(yǔ)言,其共同的特點(diǎn)在于。
· 能形式化地抽象表示電路的結(jié)構(gòu)和行為。
· 支持邏輯設(shè)計(jì)中層次與領(lǐng)域的描述。
· 可借用高級(jí)語(yǔ)言的精巧結(jié)構(gòu)來(lái)簡(jiǎn)化電路的描述。
· 具有電路仿真與驗(yàn)證機(jī)制以保證設(shè)計(jì)的正確性。
· 支持電路描述由高層到低層的綜合轉(zhuǎn)換。
· 硬件描述與實(shí)現(xiàn)工藝無(wú)關(guān)(有關(guān)工藝參數(shù)可通過(guò)語(yǔ)言提供的屬性包括進(jìn)去)。
· 便于文檔管理,易于理解和設(shè)計(jì)重用。
2.不同點(diǎn)
但是Verilog HDL和VHDL又各有其自己的特點(diǎn)。
由于Verilog HDL早在1983年就已推出,因而Verilog HDL擁有更廣泛的設(shè)計(jì)群體,成熟的資源也遠(yuǎn)比VHDL豐富。
與VHDL相比,Verilog HDL的最大優(yōu)點(diǎn)是:它是一種非常容易掌握的硬件描述語(yǔ)言,只要有C語(yǔ)言的編程基礎(chǔ),通過(guò)二十學(xué)時(shí)的學(xué)習(xí),再加上一段時(shí)間的實(shí)際操作,可在二~三個(gè)月內(nèi)掌握這種設(shè)計(jì)技術(shù)。
而掌握VHDL設(shè)計(jì)技術(shù)就比較困難。這是因?yàn)閂HDL不很直觀,需要有Ada編程基礎(chǔ)。
目前版本的Verilog HDL和VHDL在行為級(jí)抽象建模的覆蓋范圍方面也有所不同。一般認(rèn)為Verilog HDL在系統(tǒng)級(jí)抽象方面比VHDL略差一些,而在門級(jí)開關(guān)電路描述方面比VHDL強(qiáng)得多。
Verilog HDL程序基本結(jié)構(gòu)
Verilog HDL是一種用于數(shù)字邏輯電路設(shè)計(jì)的語(yǔ)言。用Verilog HDL描述的電路設(shè)計(jì)就是該電路的Verilog HDL模型。Verilog HDL既是一種行為描述的語(yǔ)言,也是一種結(jié)構(gòu)描述的語(yǔ)言。也就是說(shuō),既可以用電路的功能描述,也可以用元器件和它們之間的連接來(lái)建立所設(shè)計(jì)電路的Verilog HDL模型。Verilog模型可以是實(shí)際電路的不同級(jí)別的抽象。這些抽象的級(jí)別和它們對(duì)應(yīng)的模型類型共有以下5種。
· 系統(tǒng)級(jí)(system):用高級(jí)語(yǔ)言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊的外部性能的模型。
· 算法級(jí)(algorithm):用高級(jí)語(yǔ)言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)算法的模型。
· RTL級(jí)(Register Transfer Level):描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理這些數(shù)據(jù)的模型。
· 門級(jí)(gate-level):描述邏輯門以及邏輯門之間的連接的模型。
· 開關(guān)級(jí)(switch-level):描述器件中三極管和儲(chǔ)存節(jié)點(diǎn)以及它們之間連接的模型。
一個(gè)復(fù)雜電路系統(tǒng)的完整Verilog HDL模型是由若干個(gè)Verilog HDL模塊構(gòu)成的,每一個(gè)模塊又可以由若干個(gè)子模塊構(gòu)成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶所設(shè)計(jì)的模塊交互的現(xiàn)存電路或激勵(lì)信號(hào)源。利用Verilog HDL語(yǔ)言結(jié)構(gòu)所提供的這種功能就可以構(gòu)造一個(gè)模塊間的清晰層次結(jié)構(gòu)來(lái)描述極其復(fù)雜的大型設(shè)計(jì),并對(duì)所作設(shè)計(jì)的邏輯電路進(jìn)行嚴(yán)格的驗(yàn)證。
Verilog HDL行為描述語(yǔ)言作為一種結(jié)構(gòu)化和過(guò)程性的語(yǔ)言,其語(yǔ)法結(jié)構(gòu)非常適合于算法級(jí)和RTL級(jí)的模型設(shè)計(jì)。這種行為描述語(yǔ)言具有以下功能。
· 可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。
· 用延遲表達(dá)式或事件表達(dá)式來(lái)明確地控制過(guò)程的啟動(dòng)時(shí)間。
· 通過(guò)命名的事件來(lái)觸發(fā)其他過(guò)程里的激活行為或停止行為。
· 提供了條件、if-else、case、循環(huán)程序結(jié)構(gòu)。
· 提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)(task)程序結(jié)構(gòu)。
· 提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。
· 提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符。
· Verilog HDL語(yǔ)言作為一種結(jié)構(gòu)化的語(yǔ)言也非常適合于門級(jí)和開關(guān)級(jí)的模型設(shè)計(jì)。因其結(jié)構(gòu)化的特點(diǎn)又使它具有以下功能。
— 提供了完整的一套組合型原語(yǔ)(primitive);
— 提供了雙向通路和電阻器件的原語(yǔ);
— 可建立MOS器件的電荷分享和電荷衰減動(dòng)態(tài)模型。
Verilog HDL的構(gòu)造性語(yǔ)句可以精確地建立信號(hào)的模型。這是因?yàn)樵赩erilog HDL中,提供了延遲和輸出強(qiáng)度的原語(yǔ)來(lái)建立精確程度很高的信號(hào)模型。信號(hào)值可以有不同的強(qiáng)度,可以通過(guò)設(shè)定寬范圍的模糊值來(lái)降低不確定條件的影響。
Verilog HDL作為一種高級(jí)的硬件描述編程語(yǔ)言,有著類似C語(yǔ)言的風(fēng)格。其中if語(yǔ)句、case語(yǔ)句等和C語(yǔ)言中的對(duì)應(yīng)語(yǔ)句十分相似。如果讀者已經(jīng)掌握C語(yǔ)言編程的基礎(chǔ),那么學(xué)習(xí)Verilog HDL并不困難,只要對(duì)Verilog HDL某些語(yǔ)句的特殊方面著重理解,并加強(qiáng)上機(jī)練習(xí)就能很好地掌握它,利用它的強(qiáng)大功能來(lái)設(shè)計(jì)復(fù)雜的數(shù)字邏輯電路。下面將介紹Verilog HDL中的基本結(jié)構(gòu)和語(yǔ)法。
 
加法器
 
module adder ( count,sum,a,b,cin );   //加法器模塊端口聲明
      input [2:0] a,b;                         //端口說(shuō)明
      input   cin;
      output count;
      output [2:0] sum;
      assign {count,sum} = a + b + cin;     //加法器算法實(shí)現(xiàn)
endmodule
 
這個(gè)例子通過(guò)連續(xù)賦值語(yǔ)句描述了一個(gè)名為adder的三位加法器可以根據(jù)兩個(gè)三比特?cái)?shù)a、b和進(jìn)位(cin)計(jì)算出和(sum)和進(jìn)位(count)。從例子中可以看出整個(gè)Verilog HDL程序是嵌套在module和endmodule聲明語(yǔ)句里的。
 

比較器

module compare ( equal,a,b );     //比較器模塊端口聲明
        output equal;                //輸出信號(hào)equal
        input [1:0] a,b;             //輸入信號(hào)a、b
        assign equal=(a==b)?1:0; //如果a、b 兩個(gè)輸入信號(hào)相等,輸出為1,否則為0
endmodule
 
這個(gè)程序通過(guò)連續(xù)賦值語(yǔ)句描述了一個(gè)名為compare的比較器。對(duì)兩比特?cái)?shù)a、b進(jìn)行比較,如a與b相等,則輸出equal為高電平,否則為低電平。在這個(gè)程序中,“/*........*/”和“//.........”表示注釋部分,注釋只是為了方便程序員理解程序,對(duì)編譯是不起作用的。

使用原語(yǔ)的三態(tài)驅(qū)動(dòng)器。

module trist2(out,in,enable);   //三態(tài)啟動(dòng)器模塊端口聲明
     output out;                      //端口說(shuō)明
     input   in, enable;
     bufif1 mybuf(out,in,enable); //實(shí)例化宏模塊bufif1
endmodule
 
這個(gè)例子描述了一個(gè)名為trist2的三態(tài)驅(qū)動(dòng)器。程序通過(guò)調(diào)用一個(gè)在Verilog語(yǔ)言庫(kù)中現(xiàn)存的三態(tài)驅(qū)動(dòng)器實(shí)例元件bufif1來(lái)實(shí)現(xiàn)其功能
自行設(shè)計(jì)的三態(tài)驅(qū)動(dòng)器。
 
module trist1(out,in,enable);   //三態(tài)啟動(dòng)器模塊端口聲明
     output out;                      //端口說(shuō)明
     input in, enable;
     mytri tri_inst(out,in,enable);//實(shí)例化由mytri模塊定義的實(shí)例元件tri_inst
endmodule
 
     module mytri(out,in,enable); //三態(tài)啟動(dòng)器模塊端口聲明
     output out;                            //端口說(shuō)明
     input in, enable;
     assign out = enable? in : 'bz;    //三態(tài)啟動(dòng)器算法描述
endmodule
 
這個(gè)例子通過(guò)另一種方法描述了一個(gè)三態(tài)門。在這個(gè)例子中存在著兩個(gè)模塊。模塊trist1調(diào)用由模塊mytri定義的實(shí)例元件tri_inst。模塊trist1是頂層模塊。模塊mytri則被稱為子模塊。
通過(guò)上面的例子可以看到。
· Verilog HDL程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容都是嵌在module和endmodule兩個(gè)語(yǔ)句之間。每個(gè)模塊實(shí)現(xiàn)特定的功能。模塊是可以進(jìn)行層次嵌套的。正因?yàn)槿绱?才可以將大型的數(shù)字電路設(shè)計(jì)分割成不同的小模塊來(lái)實(shí)現(xiàn)特定的功能,最后通過(guò)頂層模塊調(diào)用子模塊來(lái)實(shí)現(xiàn)整體功能。
· 每個(gè)模塊要進(jìn)行端口定義,并說(shuō)明輸入輸出口,然后對(duì)模塊的功能進(jìn)行行為邏輯描述。
· Verilog HDL程序的書寫格式自由,一行可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分寫多行。
· 除了endmodule語(yǔ)句外,每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有分號(hào)。
· 可以用“/*.....*/”和“//.......”對(duì)Verilog HDL程序的任何部分作注釋。一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增強(qiáng)程序的可讀性和可維護(hù)性。

相關(guān)技術(shù)應(yīng)用閱讀 相關(guān)技術(shù)資料下載
∷相關(guān)文章評(píng)論∷    (評(píng)論內(nèi)容只代表網(wǎng)友觀點(diǎn),與本站立場(chǎng)無(wú)關(guān)。 [更多評(píng)論...]
 
 

 

 
關(guān)于本站- 意見(jiàn)反饋 - 網(wǎng)站導(dǎo)航 - 幫助 - 隱私政策 - 聯(lián)系我們 - 使用條款 - 安全承諾 - 友情連接 - 歡迎投稿
站長(zhǎng)QQ:39550527 Powered by: 颶風(fēng)網(wǎng)絡(luò)(電路圖
Copyright 2006-2008 Elecfans.Com.電子發(fā)燒友: 粵ICP備07065979號(hào)All Rights Reserved