未知的verilog错误'期待'endmodule"'

Ale*_*avi 3 verilog

在verilog中,我有一个错误,我无法通过.这是代码的第一位,然后是最后一位

 module Decoder(op,funct,aluop,mwr,mreg,mrd,alusrc,regdst,regwr,btype);
  input[5:0] op,funct;
  output[2:0] aluop;
  output[1:0] btype;
  output mwr,mreg,mrd,alusrc,regdst,regwr;
  wire aluop,mwr,mreg,mrd,alusrc,regdst,regwr,btype;
  case(op)
      6'b000000: begin
          case(funct)
              6'b001010:
                  assign aluop = 3'b010;
              6'b001100:
                  assign aluop = 3'b111;
              6'b010001:
                  assign aluop = 3'b011;
              default:
                  assign aluop = 3'b000;          
          endcase
          assign btype = 2'b00;
          assign mwr = 1'b0;
          assign mreg = 1'b0;
          assign mrd = 1'b0;
          assign alusrc = 1'b0;
          assign regdst = 1'b1;
          assign regwr = 1'b1;
          end
Run Code Online (Sandbox Code Playgroud)

...

  default: begin
      assign aluop = 3'b000;
        assign mwr = 0;
        assign mreg = 0;
        assign mrd = 0;
        assign alusrc = 0;
        assign btype = 2'b00;
        assign regdst = 0;
        assign regwr = 0;
        end
endcase
Run Code Online (Sandbox Code Playgroud)

endmodule

它一直给我以下错误

错误(10170):Decoder.v(7)附近文本"case"的Verilog HDL语法错误; 期待"endmodule"错误(10170):Decoder.v(14)附近文本"6"的Verilog HDL语法错误; 期待"endmodule"

它还在每个结束语句以及默认和结束时执行此操作

我不知道它为什么这样做,我对verilog相当新.

提前致谢

Tim*_*Tim 6

我相信你只能使用一个case声明或if/else一个always块内.我不确定为什么你的错误信息没有说一些更有帮助的东西,但这可能是问题所在.

尝试重写您的代码,如下所示:

//change wire types to reg type

always @*
begin
  case (op)
    6'b000000: begin
      aluop = 3'b000
    end
    ...
  endcase
end
Run Code Online (Sandbox Code Playgroud)