列表

详情


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_in:8bit位宽的无符号数

输出描述

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

上一题