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