Verilog HDL基礎(chǔ)知識6之語法結(jié)構(gòu)
雖然 Verilog 硬件描述語言有很完整的語法結(jié)構(gòu)和系統(tǒng),這些語法結(jié)構(gòu)的應(yīng)用給設(shè)計(jì)描述帶來很多方便。但是 Verilog是描述硬件電路的,它是建立在硬件電路的基礎(chǔ)上的。有些語法結(jié)構(gòu)是不能與實(shí)際硬件電路對應(yīng)起來的,比如 for 循環(huán),它是不能映射成實(shí)際的硬件電路的,因此,Verilog 硬件描述語言分為可綜合和不可綜合語言。下面我們就來簡單的介紹一下可綜合與不可綜合。
本文引用地址:http://cafeforensic.com/article/202402/455549.htm(1) 所謂可綜合,就是我們編寫的Verilog代碼能夠被綜合器轉(zhuǎn)化為相應(yīng)的電路結(jié)構(gòu)。因此,我們常用可綜合語句來描述數(shù)字硬件電路。
(2) 所謂不可綜合,就是我們編寫的 Verilog 代碼無法綜合生成實(shí)際的電路。因此,不可綜合語句一般我們在描述數(shù)字硬件電路時是用不到的,不過,我們可以用它來仿真、驗(yàn)證我們描述的數(shù)字硬件電路
Verilog的關(guān)鍵字
由于我們是將 Verilog 用于描述數(shù)字硬件電路,所以我們只需要掌握可以被綜合器綜合的那部分關(guān)鍵字就可以了。下面我們列出了常用的可綜合關(guān)鍵字,如下。
首先我們介紹的是 module 和 endmodule,它們是成對使用的,模塊是 Verilog 設(shè)計(jì)中基本功能塊,一個最簡單的模塊是由模塊命名、端口列表兩個部分組成。整個模塊是由 module 開頭,endmodule 結(jié)尾,module 后面緊跟著的是模塊名,每個模塊都有它自己的名字。
input、output和 inout 用于端口定義,wire 和 reg 是用來聲明數(shù)據(jù)類型,parameter 是用來聲明參數(shù)類型,always 是過程賦值語句,assing 是連續(xù)賦值語句。
if 和 else 成對使用,是條件判斷語句,和 C語言中的 if 和 else 是一樣的功能,begin 和 end 也是成對使用,相當(dāng)于 C 語言中的大括號。
case、endcase 和 default 成對使用,是一個多分支條件語句,和 C 語言中的 switch 一樣的功能。
posedege、negedge 和 or 這三個關(guān)鍵字是和 always 關(guān)鍵字聯(lián)合使用的,posedge 是上升沿觸發(fā),negedge 是下降沿觸發(fā),posedge or negedge 是既有上升沿又有下降沿。在Verilog中,注意關(guān)鍵字使用小寫。
Verilog的基本程序框架
Verilog 是一種用于數(shù)字邏輯電路設(shè)計(jì)的語言,我們以數(shù)字電路中最簡單的與門為例,來作為入門學(xué)習(xí)的第一個程序。與門的 Verilog 代碼如下。
module yumen
(
a, b, c
);
input a;
input b;
output c;
assign c = a & b;
endmodule
下面我們就來簡單的介紹一下這個代碼,在這個代碼中,a 和 b 是與門的輸入,c 是與門的輸出,也就是說,該代碼實(shí)現(xiàn)了一個 2 輸入的與門電路。這里我們需要說明的是,大家不必過分去苛求細(xì)節(jié)的語法,只要著眼于基本程序框架就行。通過上面的程序我們給大家總結(jié)如下:
1.Verilog HDL 程序是由模塊構(gòu)成的,每個模塊的內(nèi)容都是嵌在 module 和 endmodule兩個語句之間。
2.每個模塊要進(jìn)行端口定義,并說明輸入輸出口,然后對模塊的功能進(jìn)行行為邏輯描述。
3.Verilog HDL 程序的書寫格式自由,一行可以寫幾個語句,一個語句也可以分寫多行。
4.除了 endmodule 語句外,每個語句和數(shù)據(jù)定義的最后必須有分號。
評論