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

时间:2018-11-17 05:27:03

标签: system-verilog vivado

我正在使用系统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];,但这似乎很笨拙。

1 个答案:

答案 0 :(得分:1)

您可以使用端口表达式。

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

请注意,.clk等效于.clk(clk),等等。