verilog如何连接端口数组

时间:2016-09-30 00:58:05

标签: verilog system-verilog ports

我是初学者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无法编译。有什么建议吗?

2 个答案:

答案 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

注意端口声明和端口连接的语法。