1、結(jié)構(gòu)描述形式
從電路結(jié)構(gòu)的角度來(lái)描述電路模塊,稱為結(jié)構(gòu)描述形式。
Verilog HDL中定義了26個(gè)有關(guān)門級(jí)的關(guān)鍵字,比較常用的有8個(gè):
and nand nor or xor xnor buf not。
其調(diào)用格式為:
門類型 《實(shí)例名》(輸出,輸入1,輸入2,。。。。,輸入N)
eg. nand na01(na_out, a, b, c);
表示一個(gè)名字為na01的與非門,輸出為na_out,輸入為a,b,c。
2、數(shù)據(jù)流描述形式
對(duì)線型變量進(jìn)行操作,就是數(shù)據(jù)流描述形式。數(shù)據(jù)流描述一般采用assign連續(xù)賦值語(yǔ)句來(lái)實(shí)現(xiàn),主要用于實(shí)現(xiàn)組合功能。連續(xù)賦值語(yǔ)句右邊所有的變量受持續(xù)監(jiān)控,只要這些變量有一個(gè)發(fā)生變化,整個(gè)表達(dá)式就被重新賦值給左端。
其格式為:
assign L_s = R_s;
3、行為描述形式
從功能和行為的角度來(lái)描述一個(gè)實(shí)際電路,稱為行為級(jí)描述形式。行為描述主要包括過(guò)程結(jié)構(gòu)、語(yǔ)句塊、時(shí)序控制、流控制四個(gè)方面,主要用于時(shí)序邏輯功能的實(shí)現(xiàn)。
1、過(guò)程結(jié)構(gòu)
過(guò)程結(jié)構(gòu)采用下面四種過(guò)程模塊來(lái)實(shí)現(xiàn):
initial模塊 always模塊 任務(wù)(task)模塊 函數(shù)(function)模塊
(1)initial模塊
在進(jìn)行仿真時(shí),一個(gè)initial模塊從模擬0時(shí)刻開(kāi)始執(zhí)行,且在仿真過(guò)程中只執(zhí)行一次,在執(zhí)行完一次后,該initial就被掛起,不再執(zhí)行。如果仿真中有兩個(gè)initial模塊,則同時(shí)從0時(shí)刻開(kāi)始執(zhí)行
initial模塊是面向仿真的,是不可綜合的,通常被用來(lái)描述測(cè)試模塊的初始化、監(jiān)視、波形生成等功能。
其格式為:
initial
begin/fork
塊內(nèi)變量說(shuō)明
時(shí)序控制1 行為語(yǔ)句1;
。。。。
時(shí)序控制n 行為語(yǔ)句n;
end/join
其中,begin/end塊定義語(yǔ)句是串行執(zhí)行的,而fork/join塊語(yǔ)句中的語(yǔ)句定義是并行執(zhí)行的。
(2)always模塊
always模塊是一直重復(fù)執(zhí)行且可綜合的,多個(gè)always模塊是同時(shí)并行執(zhí)行的。其格式為:
always@(敏感時(shí)間列表)
begin/fork
塊內(nèi)變量說(shuō)明
時(shí)序控制1 行為語(yǔ)句1;
。。。。
時(shí)序控制n 行為語(yǔ)句n;
end/join
2、語(yǔ)句塊
語(yǔ)句塊就是在initial或always模塊中位于begin.。.end/fork.。.join塊定義語(yǔ)句之間的一組行為語(yǔ)句。
(1)begin.。.end
串行塊,塊內(nèi)的語(yǔ)句逐次逐條順序執(zhí)行。
(2)fork.。.join
并行塊,塊內(nèi)的語(yǔ)句都是各自獨(dú)立地同時(shí)開(kāi)始執(zhí)行。
3、時(shí)序控制
Verilog HDL提供兩種類型的顯示時(shí)序控制:延時(shí)控制和事件控制。
(1)延時(shí)控制
其格式如下:
# 延時(shí)數(shù) 表達(dá)式;
延時(shí)控制只能在仿真中使用,是不可綜合的。在綜合時(shí),所有的延時(shí)控制都會(huì)被忽略。
(2)事件控制
分為兩種:邊沿觸發(fā)事件和電平觸發(fā)事件控制。
邊沿觸發(fā):上升沿posedge,下降沿negedge。
4、流控制
流控制語(yǔ)句包括3類:跳轉(zhuǎn)、分支、循環(huán)。
(1)if語(yǔ)句
else分支可缺省,但會(huì)生成本不期望的鎖存器,所以不要省去。
(2)case語(yǔ)句
其格式如下:
case(變量)
情況1:語(yǔ)句1 ;
。。。。。
情況n:語(yǔ)句n;
default: 語(yǔ)句n+1;
endcase
default語(yǔ)句缺省也會(huì)生成鎖存器,所以不要省去。
if語(yǔ)句是串行執(zhí)行的,case語(yǔ)句是并行執(zhí)行的,選用if語(yǔ)句要占用額外的硬件資源。
(3)循環(huán)語(yǔ)句
for循環(huán)。
while循環(huán)。
forever循環(huán):forever語(yǔ)句必須寫在initial模塊中,用于產(chǎn)生周期性波形。
repeat循環(huán):執(zhí)行指定的循環(huán)數(shù),如果循環(huán)計(jì)數(shù)表達(dá)式的值不確定(x或z),那么循環(huán)次數(shù)按0處理,其格式:
repeat(表達(dá)式)
begin
。。。。。
end
編輯:jq
-
Verilog HDL
+關(guān)注
關(guān)注
17文章
125瀏覽量
50386
原文標(biāo)題:Verilog HDL語(yǔ)言(2) : Verilog HDL語(yǔ)言的描述語(yǔ)句
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論