我收到第二个模块声明的语法错误,我已在评论中指出。我正在使用在线Verilog模拟器,因此它不会告诉我什么样的错误。我真的很困惑,因为我按照与第一个模块相同的设置,我没有在那里得到错误。是否与重用变量有关?我尝试改变它们,似乎没有用。
module MagnitudeComparator4Bit(input [3:0] a, input [3:0] b, output eq, output lt, output gt);
assign eq = a==b;
assign lt = a < b;
assign gt = a > b;
endmodule
module 8bitMagCompare(input [7:0] a, input [7:0] b, output EQ, output LT, output GT); //SYNTAX ERROR
wire w1, w2, w3, w4;
MagnitudeComparator4Bit MagComp1(a[7:4], b[7:4], w1, LT, GT);
MagnitudeComparator4Bit MagComp2(a[3:0], b[3:0], w2, w3, w4);
assign EQ = w1 && w2;
endmodule
module MagCompareTB;
reg a, b;
wire EQ, LT, GT;
8bitMagCompare testcompare(a, b, EQ, LT, GT);
initial begin
$monitor("%d A=%a, B=%b, EQ=%b, LT=%b, GT=%b", $time, a, b, EQ, LT, GT);
#10 a = 00000000;
b = 00000000;
#10 a = 10000000;
b = 00000000;
#10 a = 00000000;
b = 10000000;
end
endmodule
答案 0 :(得分:0)
很明显你错过了它:第二个模块名称以数字开头!
但我对第二个模块的代码也不满意。如果第一个(MS)实例报告相同,则应使用第二个(LS)实例的所有结果。
尝试使用例如00010000和00010001。