alu_test.v

来自「32位RISC单片机verilog源码内包含说明文档经过他人测试通过」· Verilog 代码 · 共 149 行

V
149
字号
//`timescale 1ns/1ps

module alu_test;
    reg [3:0] op = 4'b0001;
    reg [31:0] s1 = 32'h0000_0000;
    reg [31:0] s2 = 32'h0000_0000;
    reg [31:0] imm_32 = 32'h0000_0000;
    reg imm_en = 1'b0;
    wire [31:0] alu_o;
    wire [4:0] flag_o;
    reg [1:0] mux_1 = 2'b00;
    reg [1:0] mux_2 = 2'b00;
    reg [31:0] fdata_ex = 32'h0000_0000;
    reg [31:0] fdata_mem = 32'h0000_0000;
    wire [31:0] s2_fwd;
    reg c_in = 1'b0;

    
    alu UUT (
        .op(op),
        .s1(s1),
        .s2(s2),
        .imm_32(imm_32),
        .imm_en(imm_en),
        .alu_o(alu_o),
        .flag_o(flag_o),
        .mux_1(mux_1),
        .mux_2(mux_2),
        .fdata_ex(fdata_ex),
        .fdata_mem(fdata_mem),
        .s2_fwd(s2_fwd),
        .c_in(c_in));

    initial begin
    	#50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0004;
        op = 4'h1;
        c_in = 1'b0;
     #50;
        s1 = 32'hffff_ffff;
        s2 = 32'hffff_ffff;
        op = 4'h1;
        c_in = 1'b0;
    	#50;
        s1 = 32'h7fff_ffff;
        s2 = 32'h0000_0001;
        op = 4'h1;
        c_in = 1'b0;
     #50;
        s1 = 32'hffff_fff0;
        s2 = 32'h0000_00ff;
        op = 4'h1;
        c_in = 1'b0;
   	 #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0004;
        op = 4'h3;
        c_in = 1'b1;
     #50;
        s1 = 32'h0000_0004;
        s2 = 32'h0000_0001;
        op = 4'h3;
        c_in = 1'b1;
 	  #50;
        s1 = 32'hffff_ffff;
        s2 = 32'h0000_000f;
        op = 4'h3;
        c_in = 1'b1;
     #50;
        s1 = 32'h0000_0004;
        s2 = 32'h0000_0002;
        op = 4'h3;
        c_in = 1'b1;
 	  #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h3;
        c_in = 1'b1;
     #50;
        s1 = 32'h0000_0004;
        s2 = 32'h0000_0002;
        op = 4'h4;
        c_in = 1'b0;
 	  #50;
        s1 = 32'h0000_0004;
        s2 = 32'h0000_0002;
        op = 4'h4;
        c_in = 1'b1;
     #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h4;
        c_in = 1'b0;
  	  #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h4;
        c_in = 1'b1;
     #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h1;
        c_in = 1'b1;
        imm_32 = 32'h0000_00ff;
        imm_en = 1'b1;
     #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h1;
        c_in = 1'b1;
        imm_32 = 32'h0000_0000;
        imm_en = 1'b0;
        mux_1 = 2'b01;
        mux_2 = 2'b01;
        fdata_ex = 32'h0000_0002;
        fdata_mem = 32'h0000_0003;
     #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h1;
        c_in = 1'b1;
        imm_32 = 32'h0000_0000;
        imm_en = 1'b0;
        mux_1 = 2'b01;
        mux_2 = 2'b10;
        fdata_ex = 32'h0000_0002;
        fdata_mem = 32'h0000_0003;
     #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h1;
        c_in = 1'b1;
        imm_32 = 32'h0000_0000;
        imm_en = 1'b0;
        mux_1 = 2'b10;
        mux_2 = 2'b10;
        fdata_ex = 32'h0000_0002;
        fdata_mem = 32'h0000_0003;
     #50;
        s1 = 32'h0000_0001;
        s2 = 32'h0000_0001;
        op = 4'h1;
        c_in = 1'b1;
    end
    
endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?