本文主要介紹verilog常用的循環(huán)語句,循環(huán)語句的用途,主要是可以多次執(zhí)行相同的代碼或邏輯。
verilog的循環(huán)語句主要有:for循環(huán)、while循環(huán)、foever循環(huán)和repeat循環(huán)。
注意注意,for循環(huán)在正式FPGA設(shè)計(jì)中部分情況下可綜合,其余幾個(gè)循環(huán)語句均不可綜合,主要用于testbench。
一、For循環(huán)
for 循環(huán)會將一段代碼執(zhí)行固定次數(shù)。
雖然它通常用于testbench,但也可以在可綜合的 verilog 代碼中使用,比如 for 循環(huán)處理verilog數(shù)組。
1、語法
for (
說明:
更新循環(huán)變量,注意只能用類似i=i+1或i=i-1。
2、代碼示例
for 循環(huán)實(shí)現(xiàn)移位寄存器
reg [5:0] shift [0:3];
wire [5:0] init_data = 'd10;
wire [6*4-1] shift_com_w;
//將輸入賦值給數(shù)組的第一個(gè)數(shù)
shift[0] <= init_data;
//使用for循環(huán)語句來將數(shù)組整體向左移動
for (i = 1; i < 4; i = i + 1) begin
shift[i] <= shift[i-1];
end
//合并數(shù)組,易于輸出模塊
for (i = 0; i < 4; i = i + 1) begin
assign shift_com_w[i*6+:6] = shift[i];
end
二、Forever循環(huán)
verilog 中的forever循環(huán)會創(chuàng)建一個(gè)連續(xù)執(zhí)行的代碼塊,并無限循環(huán)。
forever循環(huán)只能在testbench中使用,常用于生成激勵時(shí)鐘信號。 注意forever循環(huán)無法被綜合。
1、語法
forever begin
// 循環(huán)執(zhí)行的語句
end
3、代碼示例
創(chuàng)建一個(gè)10Mhz的時(shí)鐘
initial begin
clk = 1'b0;
forever begin
#5 clk = ~clk;
end
end
三、Repeat循環(huán)
repeat循環(huán)執(zhí)行指定次數(shù)的循環(huán)代碼塊。 注意該語句不可綜合。
1、語法
repeat (
說明: 用來確定重復(fù)循環(huán)的次數(shù)
2、代碼示例
檢測到上升沿,信號翻轉(zhuǎn)一次。
repeat (6) begin //重復(fù)6次
@(posedge sig_a) //上升沿
sig_b = ~sig_b; //翻轉(zhuǎn)
end
四、While 循環(huán)
while循環(huán)的每次迭代之前都會判斷指定條件是否滿足,如果為真,就執(zhí)行條件內(nèi)的循環(huán)代碼塊; 否則,就不會執(zhí)行。 注意該語句不可綜合。
1、語法
while
說明: 循環(huán)執(zhí)行條件。
2、代碼示例
創(chuàng)建一個(gè)從 0 到 3 的integer型變量,然后在循環(huán)的每次迭代中打印這個(gè)變量的值。
integer i;
while (i < 4) begin
$display("i = %0d", i);
i = i + 1;
end
-
FPGA
+關(guān)注
關(guān)注
1624文章
21538瀏覽量
600474 -
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26446 -
Verilog
+關(guān)注
關(guān)注
28文章
1335瀏覽量
109847 -
代碼
+關(guān)注
關(guān)注
30文章
4694瀏覽量
68078 -
變量
+關(guān)注
關(guān)注
0文章
608瀏覽量
28286
發(fā)布評論請先 登錄
相關(guān)推薦
評論