您的位置:首页 > 其它

(原创)verilog2001中generate的精妙用法

2008-12-24 22:50 417 查看
verilog2001中有generate这个语法,近日有用到,简单归纳如下:

语法:

1。genvar后面的for,变量必须是genvar变量;generate+if,不如`ifdef `else `endif;

2。for里必须有begin,哪怕只有一句;

3。begin必须有名称,原因见4;

4。这里例化的模块名称是inst[j].unit;

5。generate语句可以看作是标准化为块的综合指令。

应用实例:

generate可以用for,case,if。其中,generate实例化多个器件很简洁。

案例
generate

genvar j ;

for(j=0;j<=INST_NUM;j=j+1)

begin : inst

dff #(PARAMETER) unit(

.clk(clk),

.ena(ena),

.in(in),

.out(out)

) ;

end

endgenerate

generate还可以进行多个assign赋值!

案例
module anytest_v(

input clk,

input[7:0] datain,

output[7:0] dataout,

output finish

);

wire[7:0] mem[31:0];

wire[32*8-1:0] xxx;

//reg[7:0] i;

generate

genvar i;

for(i=0;i<=31;i=i+1)

begin :wiertech

assign mem[i]= 8'b0;

end

endgenerate

endmodule

其他相关文章,请看我大哥的这篇笔记(筆記) 如何將memory轉成vector? (SOC) (Verilog) 真 OO无双
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: