Verilog的generate的用法

转载 2016年08月31日 14:45:48
生成语句可以动态的生成verilog代码,当对矢量中的多个位进行重复操作时,或者当进行多个模块的实例引用的重复操作时,或者根据参数的定义来确定程序中是否应该包含某段Verilog代码的时候,使用生成语句能大大简化程序的编写过程。
       生成语句生成的实例范围,关键字generate-endgenerate用来指定该范围。生成实例可以是以下的一个或多个类型:
       (1)模块;(2)用户定义原语;(3)门级语句;(4)连续赋值语句;(5)initial和always块。
       generate语句有generate-for,generate-if,generate-case三种语句。
generate-for语句
(1) 必须有genvar关键字定义for语句的变量。
(2)for语句的内容必须加begin和end(即使就一句)。
(3)for语句必须有个名字。
例1:assign语句实现
module test(bin,gray);
       parameter SIZE=8;
       output [SIZE-1:0] bin;
       input [SIZE-1:0] gray;
       genvar i; //genvar i;也可以定义到generate语句里面
       generate
              for(i=0;i<SIZE;i=i+1)
              begin:bit
                     assign bin[i]=^gray[SIZE-1:i];
              end
       endgenerate
endmodule     
等同于下面语句
assign bin[0]=^gray[SIZE-1:0];
assign bin[1]=^gray[SIZE-1:1];
assign bin[2]=^gray[SIZE-1:2];
assign bin[3]=^gray[SIZE-1:3];
assign bin[4]=^gray[SIZE-1:4];
assign bin[5]=^gray[SIZE-1:5];
assign bin[6]=^gray[SIZE-1:6];
assign bin[7]=^gray[SIZE-1:7];
例2:
generate
       genvar i;
       for(i=0;i<SIZE;i=i+1)
       begin:shifter
              always@(posedge clk)
                     shifter[i]<=(i==0)?din:shifter[i-1];
       end
endgenerate
相当于
always@(posedge clk)
       shifter[0]<=din;
always@(posedge clk)
       shifter[1]<=shifter[0];
always@(posedge clk)
       shifter[2]<=shifter[1];
.................
       ......................
always@(posedge clk)
       shifter[SIZE]<=shifter[SIZE-1];
generate-if,generate-case和generate-for语句类似。

转载自:http://lihaichuan.blog.51cto.com/498079/1118866

Verilog中generate的用法

一:generate Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function...
  • kobesdu
  • kobesdu
  • 2013年10月09日 17:59
  • 29696

关于generate用法的总结【Verilog】

Abtract generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复。这些语句可以包括模块实例引用的语句、连续赋值语句、always语句、initial语句和...
  • BBS_vip
  • BBS_vip
  • 2015年06月26日 20:21
  • 3405

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Verilog中生成语句(generate)的用法

一:generate Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function...

Verilog中的批处理generate和缩减运算符

最近在写贪吃蛇程序时遇到了一个问题,贪吃蛇的每节参数必须全部定义,相当于一个结构体,里面有坐标和方向,当我想把贪吃蛇的长度从2节变为多节时,遇到了一个很大的问题,虽然后面每节的代码和前面的近似,但是代...

verilong generate语句用法

Verilog-2001之generate语句的用法 Verilog-1995 支持通过以声明实例数组的形式对primitive和module进行复制结构建模。而在Verilog-2001里,新增加...

关于generate用法的总结【Verilog】

 转载自http://www.cnblogs.com/nanoty/archive/2012/11/13/2768933.html Abtract     generate语句允许细...

verilog中generate的用法

一:generate Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function...
  • pine222
  • pine222
  • 2015年07月27日 16:49
  • 531

Verilog-generate语句的用法

  • 2016年05月20日 10:10
  • 238KB
  • 下载

Verilog中generate用法

  • 2012年03月18日 11:35
  • 29KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Verilog的generate的用法
举报原因:
原因补充:

(最多只允许输入30个字)