将 8 位值传递给 1 位端口?

Passing an 8-bit value to a 1-bit port?

我正在使用 System Verilog。我的顶层设计文件有一个 1 位输出 bsOut。我还使用了一个名为 shift_reg 的寄存器,它从端口 dOut 输出一个 8 位数字。我想这样做:

module FinalTop (
    input clk,
    output bsOut
    );
Shift_Reg shift_reg(.clk(clk), .dOut(bsOut));

我相信 Vivado/Basys3 将通过仅使用 LSB 截断 dOut --> bsOut,但是如果我想指定不同的位怎么办?比如我要发送.dOut[7](bsOut)怎么办?显然这行不通(我试过了),但我不知道如何正确地做到这一点。我可以制作一个 logic [7:0] dOutTemp = dOut,然后是 assign bsOut = dOutTemp[7];,但这看起来很笨重。

您可以使用端口表达式。

module FinalTop (
    input clk,
    output .bsOut(dOut[7])
    );
logic [7:0] dOut;
Shift_Reg shift_reg(.clk, .dOut);

注意.clk等同于.clk(clk)