Verilog Mips指令单周期数据路径

Verilog Mips指令单周期数据路径,verilog,Verilog,我想在modelsim中构建4:1多路复用器 为什么会出现这个错误 编译错误:对网络“out”的非法引用 out需要是一个reg类型,以便在always块中分配 IEEE标准1364-1995及以上 module mult4_to_1_32(out,i0,i1,i2,i3,s0); output [31:0] out; input [31:0]i0,i1,i2,i3; input [1:0]s0; always @(s0) begin case(s0) 2'b00: out=i0;

我想在modelsim中构建4:1多路复用器

为什么会出现这个错误

编译错误:对网络“out”的非法引用


out
需要是一个
reg
类型,以便在always块中分配

  • IEEE标准1364-1995及以上

    module mult4_to_1_32(out,i0,i1,i2,i3,s0);
    output [31:0] out;
    input [31:0]i0,i1,i2,i3;
    input [1:0]s0;
    always @(s0)
    begin
      case(s0)
        2'b00: out=i0;      
        2'b01: out=i1;  
        2'b10: out=i2;
        2'b11: out=i3;  
        default: out=i0;    
        endcase
    end
    endmodule
    
    output reg [31:0] out;
    
  • IEEE标准1364-2001及以上(重新开始)

其他问题,
i0
3
始终
块的敏感度列表中。这就推断出复杂的锁存逻辑

  • IEEE标准1364-1995及以上

    module mult4_to_1_32(out,i0,i1,i2,i3,s0);
    output [31:0] out;
    input [31:0]i0,i1,i2,i3;
    input [1:0]s0;
    always @(s0)
    begin
      case(s0)
        2'b00: out=i0;      
        2'b01: out=i1;  
        2'b10: out=i2;
        2'b11: out=i3;  
        default: out=i0;    
        endcase
    end
    endmodule
    
    output reg [31:0] out;
    
  • IEEE标准1364-2001及以上(重新开始)

always @* // or @(*)