1、generate用法
- 定義genvar,作爲generate中的循環變量;
- generate語句中定義的for語句,必須要有begin,爲後續增加標籤做準備;
- begin必須要有名稱,也就是必須要有標籤,因爲標籤會作爲generate循環的實例名稱;
- 可以使用在generate語句中的類型主要有:
module(模塊)
UDP(用戶自定義原語)
門級原語
連續賦值語句
nitial或always語句 - 基本結構如下:
genvar 循環變量名;
generate
1. generate-loop循環語句
2. generate-conditional條件語句
3. generate-case分支語句
4. 嵌套的generate語句
endgenerate
generate-for例子:
##一個參數化的gray-code to binary-code 轉換器,這裏採用複製產生多個assign語句的形式來實現
module gray2bin1 (bin, gray);
parameter SIZE = 8;
parameter SIZE = 8;
input [SIZE-1:0] gray;
genvar i;
generate
for(i=0; i<SIZE; i=i+1)
begin: bit
assign bin[i] = ^gray[SIZE-1:i];
end
endgenerate
endmodule
generate-if例子:
generate if(MUX_NUM == 0)begin : mux4_1
always@(*)begin
data_out = data_in0;
end
end else if(MUX_NUM = 1) begin : mux3_1
always@(*)begin
data_out = data_in1;
end
end else begin : mux2_1
always@(*)begin
data_out = data_in2;
end
end endgenerate
generate-case例子:
generate
case(MUX_NUM)
0:begin:mux_2
end
1:begin: mux_3
end
2:begin: mux_4
end
default:begin
end
endcase
end endgenerate
2、