题解 | #使用generate…for语句简化代码#
使用generate…for语句简化代码
https://www.nowcoder.com/practice/618cb8d16a2c4e87b9e305f6659efe40
使用generate…for语句简化代码
比较generate for 循环和本身的for循环区别:
- generate for
必须使用genvar对循环变量进行声明。例如声明循环变量 genvar index;
使用generate for(index = 0;index < 8; index = index + 1) begin :名字....... end endgenerate来进行编写循环体,generate语句中定义的for语句,必须要有begin,为后续增加标签做准备。begin必须要有名称,因为标签会作为generate循环的实例名称
其中,generate for(循环变量初值;循环变量结束条件;循环具体执行操作)
generate for 多次用于assign语句对信号赋值.。是并行赋值
- for
对循环变量依旧需要声明,一般采用integer->对应的循环变量为整数
for(index = 0;index < 8; index = index + 1) begin ....... end
for(循环变量初值;循环变量结束条件;循环具体执行操作)
for语句常推荐用于always语句块中。
总结:
在循环、条件、分支语句中调用模块,必须使用generate dor,其余情况可随意。
`timescale 1ns/1ns module gen_for_module( input [7:0] data_in, output [7:0] data_out ); genvar i; generate for(i = 0; i < 8;i = i + 1) begin : label assign data_out[i] = data_in[7-i]; end endgenerate endmodule