仅使用输出端口位的子集?

Use only a subset of output port bits?

这是一个一般的 Verilog 问题。假设我实例化了一些带有 32 位输出端口的模块,但我只对低 8 位感兴趣。

wire [7:0] my_8bits;
some_module inst (
  ...
  .out_32bit_port(my_8bits);   // out_32bit_port is a 32-bit output port
);

这将生成一条警告,提示我连接到输出端口的信号与端口大小不匹配。当然,在这种情况下,我完全知道我做了什么,我可以忽略警告。

我如何编写代码以消除所有警告?

消除宽度不匹配警告的一种方法是创建 32 位线,将其连接到实例,然后将 8 位线驱动为连续分配:

wire [31:0] out_32bit_port;
wire [7:0] my_8bits = out_32bit_port[7:0];

some_module inst (
      .out_32bit_port (out_32bit_port)
);

另一种方法是创建一个 24 位线并将其与实例端口连接中的 8 位线连接:

wire [7:0] my_8bits;
wire [23:0] unused;

some_module inst (
      .out_32bit_port ({unused, my_8bits})
);