我已经将设置更改为与模块相同的名称。存储此文件的文件夹中没有其他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 发布于 2022-01-16 02:49:09
or是Verilog中的一个合法关键字,但不能在这种情况下使用。它可以作为内置的原语或门,或在敏感列表中使用.
您可能希望它以逻辑或运算符的形式运行,在这种情况下,您将使用||:
if({A,B}==3'b001 || {A,B}==3'b010 || {A,B}==3'b100 || {A,B}==3'b101)或者,您可以在工具中启用SystemVerilog特性,并使用set成员资格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 这段代码更容易理解,而且扩展得更好,因为它更容易添加/删除比较值。
发布于 2022-01-16 02:09:03
Verilog中的逻辑OR运算符是||,而不是or。
https://stackoverflow.com/questions/70726873
复制相似问题