为什么我的mux不能在Verilog中生成输出?

为什么我的mux不能在Verilog中生成输出?,verilog,Verilog,我已经写了我认为可以工作的多路复用器,但是我的输出顽固地保持在高阻抗。有人能给我提供指导吗 module mux_in #(parameter WIDTH = 1, parameter LOG_CHOICES = 1) ( input [LOG_CHOICES - 1 : 0] choice, input [(1 << LOG_CHOICES) * WIDTH - 1 : 0] data_i, output [WIDTH - 1 : 0] data_o )

我已经写了我认为可以工作的多路复用器,但是我的输出顽固地保持在高阻抗。有人能给我提供指导吗

module mux_in #(parameter WIDTH = 1, parameter LOG_CHOICES = 1)
(
    input  [LOG_CHOICES - 1 : 0] choice,
    input  [(1 << LOG_CHOICES) * WIDTH - 1 : 0] data_i,
    output [WIDTH - 1 : 0] data_o
);
    assign data_o = data_i[WIDTH * choice + WIDTH - 1 : WIDTH * choice];
endmodule

这不应编译,因为范围表达式不是常量

assign data_o = data_i[WIDTH * choice + WIDTH - 1 : WIDTH * choice];
试试这个

assign data_o = data_i[WIDTH * choice + WIDTH - 1 -: WIDTH];

这是什么?你能发布测试台吗?您的输出与默认参数不匹配。如果您将问题编辑为包含模块的实例化,则会很有帮助,这样我们可以查看您连接的端口以及为模块参数指定的值。
assign data_o = data_i[WIDTH * choice + WIDTH - 1 -: WIDTH];