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

2014-4-28 14:24 1345 16 16 分类: FPGA/CPLD

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= 8'b0; 
      end
endgenerate
endmodule

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /2 下一条