Verilog語(yǔ)法基礎(chǔ)
一、Verilog HDL
Verilog HDL是一種用于數(shù)字系統(tǒng)設(shè)計(jì)的語(yǔ)言。用Verilog HDL描述的電路設(shè)計(jì)就是該電路的Verilog HDL模型也稱為模塊。Verilog HDL既是一種行為描述的語(yǔ)言也是一種結(jié)構(gòu)描述的語(yǔ)言。這也就是說(shuō),無(wú)論描述電路功能行為的模塊或描述元器件或較大部件互連的模塊都可以用Verilog語(yǔ)言來(lái)建立電路模型。如果按照一定的規(guī)矩編寫,功能行為模塊可以通過(guò)工具自動(dòng)地轉(zhuǎn)換為門級(jí)互連模塊。Verilog模型可以是實(shí)際電路的不同級(jí)別的抽象。這些抽象的級(jí)別和它們對(duì)應(yīng)的模型類型共有以下五種:
1.1、 系統(tǒng)級(jí)(system): 用語(yǔ)言提供的高級(jí)結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊外部性能的模型。
1.2、 算法級(jí)(algorithm): 用語(yǔ)言提供的高級(jí)結(jié)構(gòu)實(shí)現(xiàn)算法運(yùn)行的模型。
1.3、 RTL級(jí)(Register Transfer Level):描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理和控制這些數(shù)據(jù)流動(dòng)的模型。
1.4、 門級(jí)(gate-level):描述邏輯門以及邏輯門之間的連接的模型。
1.5、 開(kāi)關(guān)級(jí)(switch-level):描述器件中三極管和儲(chǔ)存節(jié)點(diǎn)以及它們之間連接的模型。
二、Verilog HDL模塊
一個(gè)復(fù)雜電路系統(tǒng)的完整Verilog HDL模型是由若干個(gè)Verilog HDL模塊構(gòu)成的,每一個(gè)模塊又可以由若干個(gè)子模塊構(gòu)成。其中有些模塊需要綜合成具體電路,而有些模塊只是與用戶所設(shè)計(jì)的模塊有交互聯(lián)系的現(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ǔ)言具有以下功能:
(1)、可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。
(2)、用延遲表達(dá)式或事件表達(dá)式來(lái)明確地控制過(guò)程的啟動(dòng)時(shí)間。
(3)、通過(guò)命名的事件來(lái)觸發(fā)其它過(guò)程里的激活行為或停止行為。
(4)、提供了條件、if-else、case、循環(huán)程序結(jié)構(gòu)。
(5)、提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)(task)程序結(jié)構(gòu)。
(6)、提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。
(7)、提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符。
Verilog HDL作為一種高級(jí)的硬件描述編程語(yǔ)言,與C語(yǔ)言的風(fēng)格有許多類似之處。其中有許多語(yǔ)句如: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ù)字邏輯電路系統(tǒng)。
三、模塊的結(jié)構(gòu)
3.1.模塊的結(jié)構(gòu)
Verilog的基本設(shè)計(jì)單元是“模塊”(block)。一個(gè)模塊是由兩部分組成的,一部分描述接口,另一部分描述邏輯功能,即定義輸入是如何影響輸出的。下面舉例說(shuō)明:
請(qǐng)看上面的例子: 程序模塊旁邊有一個(gè)電路圖的符號(hào)。在許多方面,程序模塊和電路圖符號(hào)是一致的,這是因?yàn)殡娐穲D符號(hào)的引腳也就是程序模塊的接口。而程序模塊描述了電路圖符號(hào)所實(shí)現(xiàn)的邏輯功能。以上就是設(shè)計(jì)一個(gè)簡(jiǎn)單的Verilog程序模塊所需的全部?jī)?nèi)容。從上面的例子可以看出,Verilog結(jié)構(gòu)位于在module和endmodule聲明語(yǔ)句之間,每個(gè)Verilog程序包括四個(gè)主要部分:端口定義、I/O說(shuō)明、內(nèi)部信號(hào)聲明、功能定義。
-
Verilog
+關(guān)注
關(guān)注
30文章
1374瀏覽量
114522 -
語(yǔ)法
+關(guān)注
關(guān)注
0文章
45瀏覽量
10644
發(fā)布評(píng)論請(qǐng)先 登錄
Verilog HDL語(yǔ)法學(xué)習(xí)筆記
FPGA 入門必看:Verilog 與 VHDL 編程基礎(chǔ)解析!
如何使用FPGA實(shí)現(xiàn)SRIO通信協(xié)議
你覺(jué)得哪個(gè)軟件寫verilog體驗(yàn)最好?有什么優(yōu)勢(shì)?
請(qǐng)問(wèn)verilog文件開(kāi)頭部分的@00080000是什么意思?
使用NucleiStudio生成tb仿真需要的.verilog文件
語(yǔ)法糾錯(cuò)和testbench的自動(dòng)生成
如何解決將e203的rtl導(dǎo)入vivado后報(bào)語(yǔ)法錯(cuò)誤的問(wèn)題
nuclei studio生成的c語(yǔ)言文件是不支持c的語(yǔ)法嗎?
程序編譯運(yùn)行正常但是顯示語(yǔ)法錯(cuò)誤,為什么?
為什么我選擇VHDL入門
verilog模塊的調(diào)用、任務(wù)和函數(shù)
FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理
一文詳解Verilog HDL
Verilog語(yǔ)法基礎(chǔ)
評(píng)論