Verilog 无效模块项错误
Verilog invalid module item error
我正在编写一个模块,通过使用 verilog 中的行为建模重复减法来计算商和余数。我收到以下代码的 "invalid module item" 错误:
module divider (dividend, divisor, quotient, remainder ) ;
input [7:0] dividend ; // eight input lines modeled as a bus
input [7:0] divisor ; // select lines bundled as a bus
output reg [7:0] quotient ;
output reg [7:0] remainder ;
reg [7:0] r;
reg [7:0] q;
assign q = 0;
for(r = dividend; r >= divisor; r = r - divisor)
assign q = q + 1;
assign remainder = r;
assign quotient = q;
endmodule
module main;
reg [7:0] dd;
assign dd = 12;
reg [7:0] dr;
assign dr = 5;
reg [7:0] q;
reg [7:0] r;
divider(dd, dr, q, r);
$display("quotient %d", q);
$display("remainder %d",r);
endmodule
这似乎是一个一般性错误,不知道如何解决。
确切的错误信息:
23: syntax error
23: error: invalid module item.
24: syntax error
24: error: invalid module item.
出现这些错误消息是因为 $display
语句必须位于程序块中,例如 initial
。在这种情况下,$monitor
可能更有用:
module main;
reg [7:0] dd;
assign dd = 12;
reg [7:0] dr;
assign dr = 5;
reg [7:0] q;
reg [7:0] r;
divider(dd, dr, q, r);
initial begin
$monitor("quotient: %d; remainder: %d", q, r);
end
endmodule
参考免费的 IEEE 标准 1800-2012。
我正在编写一个模块,通过使用 verilog 中的行为建模重复减法来计算商和余数。我收到以下代码的 "invalid module item" 错误:
module divider (dividend, divisor, quotient, remainder ) ;
input [7:0] dividend ; // eight input lines modeled as a bus
input [7:0] divisor ; // select lines bundled as a bus
output reg [7:0] quotient ;
output reg [7:0] remainder ;
reg [7:0] r;
reg [7:0] q;
assign q = 0;
for(r = dividend; r >= divisor; r = r - divisor)
assign q = q + 1;
assign remainder = r;
assign quotient = q;
endmodule
module main;
reg [7:0] dd;
assign dd = 12;
reg [7:0] dr;
assign dr = 5;
reg [7:0] q;
reg [7:0] r;
divider(dd, dr, q, r);
$display("quotient %d", q);
$display("remainder %d",r);
endmodule
这似乎是一个一般性错误,不知道如何解决。 确切的错误信息:
23: syntax error
23: error: invalid module item.
24: syntax error
24: error: invalid module item.
出现这些错误消息是因为 $display
语句必须位于程序块中,例如 initial
。在这种情况下,$monitor
可能更有用:
module main;
reg [7:0] dd;
assign dd = 12;
reg [7:0] dr;
assign dr = 5;
reg [7:0] q;
reg [7:0] r;
divider(dd, dr, q, r);
initial begin
$monitor("quotient: %d; remainder: %d", q, r);
end
endmodule
参考免费的 IEEE 标准 1800-2012。