zoukankan      html  css  js  c++  java
  • (原创)verilog2001中generate的精妙用法

    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无双

  • 相关阅读:
    关于xcode中证书安装问题
    iOSOpenDev 安装流程
    openCV
    POJ2081(Recaman's Sequence)
    POJ1163(The Triangle)
    POJ3620(Avoid The Lakes)
    POJ1160(Post Office)
    POJ3177(Redundant Paths) or POJ3352(Road Construction)
    POJ1953(World Cup Noise)
    POJ1904(King's Quest)
  • 原文地址:https://www.cnblogs.com/adamite/p/1361878.html
Copyright © 2011-2022 走看看