VL8. 使用generate…for语句简化代码
描述
在某个module中包含了很多相似的连续赋值语句,请使用generata…for语句编写代码,替代该语句,要求不能改变原module的功能。
使用Verilog HDL实现以上功能并编写testbench验证。
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_out:8bit位宽的无符号数Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`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 : bit_rever assign data_out[i] = data_in[7-i]; end endgenerate endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`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 : bit_reverse assign data_out[i] = data_in[7-i]; end endgenerate endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`timescale 1ns/1ns module gen_for_module( input [7:0] data_in, output [7:0] data_out ); generate genvar i; for(i = 0;i < 8;i=i+1)begin:test assign data_out[i] = data_in[7-i]; end endgenerate endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`timescale 1ns/1ns module gen_for_module( input [7:0] data_in, output [7:0] data_out ); genvar i ; generate for(i=0;i<=7;i= i+1) assign data_out[i] = data_in[7-i]; endgenerate endmodule
Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06
`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: add assign data_out[i]=data_in[7-i]; end endgenerate endmodule