<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > Verilog HDL基礎j教程之:程序基本結構

Verilog HDL基礎j教程之:程序基本結構

作者: 時(shí)間:2013-08-22 來(lái)源:網(wǎng)絡(luò ) 收藏

是一種用于數字邏輯電路設計的語(yǔ)言。用 描述的電路設計就是該電路的 模型。Verilog HDL既是一種行為描述的語(yǔ)言,也是一種結構描述的語(yǔ)言。也就是說(shuō),既可以用電路的功能描述,也可以用元器件和它們之間的連接來(lái)建立所設計電路的Verilog HDL模型。Verilog模型可以是實(shí)際電路的不同級別的抽象。這些抽象的級別和它們對應的模型類(lèi)型共有以下5種。

本文引用地址:http://dyxdggzs.com/article/189527.htm

  • 系統級(system):用高級語(yǔ)言結構實(shí)現設計模塊的外部性能的模型。
  • 算法級(algorithm):用高級語(yǔ)言結構實(shí)現設計算法的模型。
  • RTL級(Register Transfer Level):描述數據在寄存器之間流動(dòng)和如何處理這些數據的模型。
  • 門(mén)級(gate-level):描述邏輯門(mén)以及邏輯門(mén)之間的連接的模型。
  • 開(kāi)關(guān)級(switch-level):描述器件中三極管和儲存節點(diǎn)以及它們之間連接的模型。

一個(gè)復雜電路系統的完整Verilog HDL模型是由若干個(gè)Verilog HDL模塊構成的,每一個(gè)模塊又可以由若干個(gè)子模塊構成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶(hù)所設計的模塊交互的現存電路或激勵信號源。利用Verilog HDL語(yǔ)言結構所提供的這種功能就可以構造一個(gè)模塊間的清晰層次結構來(lái)描述極其復雜的大型設計,并對所作設計的邏輯電路進(jìn)行嚴格的驗證。

Verilog HDL行為描述語(yǔ)言作為一種結構化和過(guò)程性的語(yǔ)言,其語(yǔ)法結構非常適合于算法級和RTL級的模型設計。這種行為描述語(yǔ)言具有以下功能。

  • 可描述順序執行或并行執行的結構。
  • 用延遲表達式或事件表達式來(lái)明確地控制過(guò)程的啟動(dòng)時(shí)間。
  • 通過(guò)命名的事件來(lái)觸發(fā)其他過(guò)程里的激活行為或停止行為。
  • 提供了條件、if-else、case、循環(huán)結構。
  • 提供了可帶參數且非零延續時(shí)間的任務(wù)(task)結構。
  • 提供了可定義新的操作符的函數結構(function)。
  • 提供了用于建立表達式的算術(shù)運算符、邏輯運算符、位運算符。
  • Verilog HDL語(yǔ)言作為一種結構化的語(yǔ)言也非常適合于門(mén)級和開(kāi)關(guān)級的模型設計。因其結構化的特點(diǎn)又使它具有以下功能。
    • 提供了完整的一套組合型原語(yǔ)(primitive);
    • 提供了雙向通路和電阻器件的原語(yǔ);
    • 可建立MOS器件的電荷分享和電荷衰減動(dòng)態(tài)模型。

Verilog HDL的構造性語(yǔ)句可以精確地建立信號的模型。這是因為在Verilog HDL中,提供了延遲和輸出強度的原語(yǔ)來(lái)建立精確程度很高的信號模型。信號值可以有不同的強度,可以通過(guò)設定寬范圍的模糊值來(lái)降低不確定條件的影響。

Verilog HDL作為一種高級的硬件描述編程語(yǔ)言,有著(zhù)類(lèi)似C語(yǔ)言的風(fēng)格。其中if語(yǔ)句、case語(yǔ)句等和C語(yǔ)言中的對應語(yǔ)句十分相似。如果讀者已經(jīng)掌握C語(yǔ)言編程的,那么學(xué)習Verilog HDL并不困難,只要對Verilog HDL某些語(yǔ)句的特殊方面著(zhù)重理解,并加強上機練習就能很好地掌握它,利用它的強大功能來(lái)設計復雜的數字邏輯電路。下面將介紹Verilog HDL中的基本結構和語(yǔ)法。

Verilog HDL程序入門(mén)

首先來(lái)看幾個(gè)Verilog HDL程序,然后從中分析Verilog HDL程序的特性。

例1:加法器。

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í)現

endmodule

這個(gè)例子通過(guò)連續賦值語(yǔ)句描述了一個(gè)名為adder的三位加法器可以根據兩個(gè)三比特數a、b和進(jìn)位(cin)計算出和(sum)和進(jìn)位(count)。從例子中可以看出整個(gè)Verilog HDL程序是嵌套在module和endmodule聲明語(yǔ)句里的。

例2:比較器。

module compare ( equal,a,b ); //比較器模塊端口聲明

output equal; //輸出信號equal

input [1:0] a,b; //輸入信號a、b

assign equal=(a==b)?1:0; //如果a、b 兩個(gè)輸入信號相等,輸出為1,否則為0

endmodule

這個(gè)程序通過(guò)連續賦值語(yǔ)句描述了一個(gè)名為compare的比較器。對兩比特數a、b進(jìn)行比較,如a與b相等,則輸出equal為高電平,否則為低電平。在這個(gè)程序中,“/*........*/”和“//.........”表示注釋部分,注釋只是為了方便程序員理解程序,對編譯是不起作用的。

例3:使用原語(yǔ)的三態(tài)驅動(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)驅動(dòng)器。程序通過(guò)調用一個(gè)在Verilog語(yǔ)言庫中現存的三態(tài)驅動(dòng)器實(shí)例元件bufif1來(lái)實(shí)現其功能。

例4:自行設計的三態(tài)驅動(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)門(mén)。在這個(gè)例子中存在著(zhù)兩個(gè)模塊。模塊trist1調用由模塊mytri定義的實(shí)例元件tri_inst。模塊trist1是頂層模塊。模塊mytri則被稱(chēng)為子模塊。

通過(guò)上面的例子可以看到。

  • Verilog HDL程序是由模塊構成的。每個(gè)模塊的內容都是嵌在module和endmodule兩個(gè)語(yǔ)句之間。每個(gè)模塊實(shí)現特定的功能。模塊是可以進(jìn)行層次嵌套的。正因為如此,才可以將大型的數字電路設計分割成不同的小模塊來(lái)實(shí)現特定的功能,最后通過(guò)頂層模塊調用子模塊來(lái)實(shí)現整體功能。
  • 每個(gè)模塊要進(jìn)行端口定義,并說(shuō)明輸入輸出口,然后對模塊的功能進(jìn)行行為邏輯描述。
  • Verilog HDL程序的書(shū)寫(xiě)格式自由,一行可以寫(xiě)幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分寫(xiě)多行。
  • 除了endmodule語(yǔ)句外,每個(gè)語(yǔ)句和數據定義的最后必須有分號。
  • 可以用“/*.....*/”和“//.......”對Verilog HDL程序的任何部分作注釋。一個(gè)好的、有使用價(jià)值的源程序都應當加上必要的注釋,以增強程序的可讀性和可維護性。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Verilog HDL 基礎 程序

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>