描述
在某个module中包含了很多相似的连续赋值语句,请使用generata…for语句编写代码,替代该语句,要求不能改变原module的功能。
module template_module(
input [7:0] data_in,
output [7:0] data_out
);
assign data_out [0] = data_in [7];
assign data_out [1] = data_in [6];
assign data_out [2] = data_in [5];
assign data_out [3] = data_in [4];
assign data_out [4] = data_in [3];
assign data_out [5] = data_in [2];
assign data_out [6] = data_in [1];
assign data_out [7] = data_in [0];
endmodule
输入描述:
data_in:8bit位宽的无符号数
输出描述:
data_out:8bit位宽的无符号数
解答:
分析:
本题目就是简单的使用generate...for语句将多个句子进行整合。
代码如下:
`timescale 1ns/1ns
module gen_for_module(
input logic [7:0] data_in,
output logic [7:0] data_out
);
genvar i;
generate for (i=0;i<8;i=i+1) begin
assign data_out[i] = data_in[7-i];
end
endgenerate
endmodule