代码之家  ›  专栏  ›  技术社区  ›  Alex G

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

  •  0
  • Alex G  · 技术社区  · 6 年前

    我正在使用系统verilog。我的顶级设计文件有一个1位输出 bsOut . 我也在使用一个叫做 shift_reg ,从端口输出8位数字 dOut . 我想这样做:

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

    我相信vivado/basys3会截断 杜特 只使用LSB--> BSUT 但是如果我想指定一个不同的位呢?例如,如果我想发送 .dOut[7](bsOut) 是吗?很明显这不起作用(我试过了),但我不知道如何正确地做。我可以做一个 logic [7:0] dOutTemp = dOut 然后 assign bsOut = dOutTemp[7]; 但这似乎很笨拙。

    1 回复  |  直到 6 年前
        1
  •  1
  •   dave_59    6 年前

    可以使用端口表达式。

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

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