将 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)
等
我正在使用 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)
等