我有下面显示的Verilog代码,当我编译它时,我收到以下错误消息,代码的第一行突出显示:
错误:
必须使用端口模式声明标识符:busy。
代码:
module main(clk, rst, start, busy, ready, cnt, s, a);
input clk, rst;
input [3:0] start, s, a, cnt_A;
output ready;
output [3:0] cnt;
wire busy, ready;
wire [3:0] cnt;
assign start[0] = s[0] & a[0];
assign start[1] = s[1] & a[1];
assign start[2] = s[2] & a[2];
assign start[3] = s[3] & a[3];
//assign cnt_A = 4'd12;
counter ucounter(.clk(clk), .rst(rst), .start(start), .busy(busy), .ready(ready), .cnt_A(cnt_A), .cnt(cnt));
always @ (posedge clk or posedge rst) begin
if (!rst) begin
start <= 4'b0000;
s <= 4'b1000;
a <= 4'b0010;
end
else if (!busy) begin
s <= s >>> 1;
end
else if (ready) begin
a <= a >>> 3;
end
end
assign cnt = cnt;
endmodule
答案 0 :(得分:0)
cnt_A
被列为不在端口列表中的输入。
module main(clk, rst, start, busy, ready, cnt, s, a); // <-- No cnt_A
// ...
input [3:0] start, s, a, cnt_A; // <- cnt_A here
Tim指出忙在端口列表中但未声明为输入或输出。
start
的分配也不起作用。您无法分配输入。
答案 1 :(得分:0)
busy
位于端口列表中,但未在模块中列为输入或输出。