practice.v(7) 文本附近的 Verilog HDL 语法错误 "or";期待“)”
Verilog HDL syntax error at practice.v(7) near text "or"; expecting ")"
我已将设置更改为与模块同名。存储此文件的文件夹中没有其他 Verilog 文件。不知道语法有什么问题
module test(A,B,F);
input A;
input [1:0]B;
output F;
reg F;
always @(*)
if({A,B}==3'b001 or {A,B}==3'b010 or {A,B}==3'b100 or {A,B}==3'b101)
F=1;
else F=0;
endmodule
Verilog 中的逻辑或运算符是 ||
,而不是 or
。
or
是 Verilog 中的合法关键字,但不能在该上下文中使用。它可以用作内置的原始或门,或用于敏感列表。
您可能希望它表现为逻辑 OR 运算符,在这种情况下您可以使用 ||
代替:
if({A,B}==3'b001 || {A,B}==3'b010 || {A,B}==3'b100 || {A,B}==3'b101)
或者,您可以在您的工具中启用 SystemVerilog 功能并使用集合成员 inside
运算符:
module test(A,B,F);
input A;
input [1:0]B;
output F;
assign F = ({A,B} inside {3'b001, 3'b010, 3'b100, 3'b101});
endmodule
此代码更易于理解,并且扩展性更好,因为它更容易 add/remove 比较值。
我已将设置更改为与模块同名。存储此文件的文件夹中没有其他 Verilog 文件。不知道语法有什么问题
module test(A,B,F);
input A;
input [1:0]B;
output F;
reg F;
always @(*)
if({A,B}==3'b001 or {A,B}==3'b010 or {A,B}==3'b100 or {A,B}==3'b101)
F=1;
else F=0;
endmodule
Verilog 中的逻辑或运算符是 ||
,而不是 or
。
or
是 Verilog 中的合法关键字,但不能在该上下文中使用。它可以用作内置的原始或门,或用于敏感列表。
您可能希望它表现为逻辑 OR 运算符,在这种情况下您可以使用 ||
代替:
if({A,B}==3'b001 || {A,B}==3'b010 || {A,B}==3'b100 || {A,B}==3'b101)
或者,您可以在您的工具中启用 SystemVerilog 功能并使用集合成员 inside
运算符:
module test(A,B,F);
input A;
input [1:0]B;
output F;
assign F = ({A,B} inside {3'b001, 3'b010, 3'b100, 3'b101});
endmodule
此代码更易于理解,并且扩展性更好,因为它更容易 add/remove 比较值。