Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
modelsim中的Verilog错误-接近“=&引用;:语法错误,意外'=';,应为标识符或类型\标识符或NETTYPE\标识符_Verilog_Simulation_Hdl_Modelsim - Fatal编程技术网

modelsim中的Verilog错误-接近“=&引用;:语法错误,意外'=';,应为标识符或类型\标识符或NETTYPE\标识符

modelsim中的Verilog错误-接近“=&引用;:语法错误,意外'=';,应为标识符或类型\标识符或NETTYPE\标识符,verilog,simulation,hdl,modelsim,Verilog,Simulation,Hdl,Modelsim,我在modelsim 10.4中遇到以下错误: 错误:(vlog-13069)D:/divya/verilog/pipelined alu/alu.v(5):靠近“=”:语法错误,意外的“=”,需要标识符或类型标识符或NETTYPE标识符 守则: module func(output reg[15:0] out,input[15:0] a,b,input[3:0] select); case(select) 0:out=a+b; 1:out=a-b; 2:out=a*b; 3:out

我在modelsim 10.4中遇到以下错误:

错误:(vlog-13069)D:/divya/verilog/pipelined alu/alu.v(5):靠近“=”:语法错误,意外的“=”,需要标识符或类型标识符或NETTYPE标识符

守则:

module func(output reg[15:0] out,input[15:0] a,b,input[3:0] select);


case(select)

0:out=a+b;

1:out=a-b;

2:out=a*b;

3:out=a;

4:out=b;

5:out=a&b;

6:out=a|b;

7:out=a^b;

8:out=~a;

9:out=~b;

10:out=a>>1;
11:out=a<<1;

default:out=16'hxxxx;

endcase

endmodule
模块功能(输出寄存器[15:0]输出,输入[15:0]a、b,输入[3:0]选择);
案例(精选)
0:out=a+b;
1:out=a-b;
2:out=a*b;
3:out=a;
4:out=b;
5:out=a&b;
6:out=a | b;
7:out=a^b;
8:out=~a;
9:out=~b;
10:out=a>>1;

11:out=a在实现上述组合逻辑时,需要确保将功能描述放在程序块中,就像
始终@(*)
赋值
语句一样(使用哪一个取决于逻辑长度和其他次要因素)。下面是一些格式的代码(请记住,编码风格不仅仅是为了美观;它还有助于发现错误并使阅读代码更容易!):

模块功能(输出寄存器[15:0]输出,
输入[15:0]a,b,
输入[3:0]选择);//我喜欢将io分成多行,以便于阅读
始终@(*)开始//需要将逻辑放入程序块中!
案例(精选)
0:out=a+b;
1:out=a-b;
2:out=a*b;//注意,与这里的所有其他操作相比,这需要相当多的逻辑,组合乘法需要很多门
3:out=a;
4:out=b;
5:out=a&b;
6:out=a | b;
7:out=a^b;
8:out=~a;
9:out=~b;
10:out=a>>1;
11:out=a
module func(output reg [15:0] out,
            input [15:0] a, b,
            input [3:0] select); // I like to break up io on multiple lines to make it easier to read

  always @(*) begin // Need to put logic in a procedural block!
    case(select)
    0: out = a + b;
    1: out = a - b;
    2: out = a * b; // Note that this would take quite a bit of logic compared to all the other operations here, combinational multiply take alot of gates
    3: out = a;
    4: out = b;
    5: out = a & b;
    6: out = a | b;
    7: out = a ^ b;
    8: out = ~a;
    9: out = ~b;
    10: out = a >> 1;
    11: out = a << 1;
    default: out = 16'hxxxx;
    endcase
  end
endmodule