while 迴圈語句實現的是一種「條件迴圈」 ,只有在指定的迴圈條件為真時才會重複執行
迴圈體,如果表示式條件在開始不為真(包括假、x 以及 z) ,那麼過程語句將永遠不會被執
行。while 迴圈的語法為:
while (迴圈執行條件表示式) begin
語句塊
end
在上述格式中, 「迴圈執行條件表示式」代表了迴圈體得到繼續重複執行時必須滿足的
條件,通常是乙個邏輯表示式。在每一次執行迴圈體之前,都需要對這個表示式是否成立進
行判斷。 「語句塊」代表了被重複執行的部分,可以為單句或多句。
while 語句在執行時,首先判斷迴圈執行條件表示式是否為真,如果真,執行後面的語
句塊, 然後再重新判斷迴圈執行條件表示式是否為真, 為真的話, 再執行一遍後面的語句塊,
如此不斷,直到條件表示式不為真。因此,在執行語句中,必須有改變迴圈執行條件表示式
的值的語句,否則迴圈就變成死迴圈。
module mult_8b_while(
a, b, q
); parameter bsize = 8;
input [bsize-1 : 0] a, b;
output [2*bsize-1 : 0] q;
reg [2*bsize-1 : 0] q, a_t;
reg [bsize-1 : 0] b_t;
reg [bsize-1 : 0] cnt;
always @(a or b) begin
q = 0;
a_t = a;
b_t = b;
cnt = bsize;
while(cnt > 0) begin
if (b_t[0]) begin
q = q + a_t;
end
else begin
q = q;
end
cnt = cnt - 1;
a_t = a_t << 1;
b_t = b_t >> 1;
end
end
endmodule
Verilog中的函式
verilog中的函式 verilog hdl與大多數可程式語言一樣,將使用率很高的 按照軟體工程的思想,寫成函式,這樣,該函式可以被多次呼叫。verilog中函式常用語三種情況 verilog中的函式與c語言中的函式的主要不同之處是 在verilog中,呼叫函式時,需要將乙個或則多個自變數傳給函式...
verilog中的task用法
定義乙個任務。task task demo 任務定義結構開頭,命名為 task demo input 7 0 x,y 輸入埠說明 output 7 0 tmp 輸出埠說明 if x y 給出任務定義的描述語句 tmp x else tmp y endtask 上述 定義了乙個名為 task demo...
Verilog中generate的用法
一 generate verilog 2001新增了generate迴圈,允許產生module和primitive的多個例項化,同時也可以產生多個variable,net,task,function,continous assignment,initial和always。在generate語句中可以...