我是初学者yo verilog,刚刚遇到了将我的某个模块的端口分配给标准端口(如SW [0])的问题。
假设我有两个模块
module top(SW, LEDR); input [3:0]SW; output [3:0]LEDR; bottom b0 ( **.in(SW[3:0]); // I am planning to associate SW[0] to in[0], SW[1] to in[1] etc.** .out(LEDR[0]); ); endmodule
module bottom(in[3:0], out);
input [3:0]in;
output out;
assign out = in[0] | in[1] | in[2]; endmodule
。在(SW [3:0]); //我打算将SW [0]与[0],SW [1]关联到[1]等。我做错了,verilog无法编译。有什么建议吗?
答案 0 :(得分:1)
分号是端口连接的错误语法。用逗号分隔每个端口(最后没有任何内容)。另外,在[3:0]
模块的端口列表中删除bottom
。
module bottom(in, out);
input [3:0]in;
output out;
assign out = in[0] | in[1] | in[2];
endmodule
module top(SW, LEDR);
input [3:0]SW;
output [3:0]LEDR;
bottom b0 (
.in(SW[3:0]),
.out(LEDR[0])
);
endmodule
答案 1 :(得分:1)
这可能适合你
module top(
input [3:0] SW,
output [3:0]LEDR
);
bottom b0 (
.in(SW),
.out(LEDR[0])
);
endmodule
module bottom(
input [3:0] in,
output out
);
assign out = {<<{in}}; // bit-reverse
endmodule
注意端口声明和端口连接的语法。