我有一个模块,最大输入为32位,输出为8位。我需要找到8位序列的最高值在我的输入。
这就是我想出来的。在我运行它之后,它给我一个8 'X‘的序列。
module exercitiul4(input [31:0] inpt, output [7:0] otpt);
reg [7:0] maxval;
always @ (inpt) begin
maxval = inpt[7:0]>maxval?inpt[7:0]:maxval;
maxval = inpt[15:8]>maxval?inpt[15:8]:maxval;
maxval = inpt[23:16]>maxval?inpt[23:16]:maxval;
maxval = inpt[31:24]>maxval?inpt[31:24]:maxval;
end
assign otpt = maxval;
endmodule
module exercitiul4_tb;
reg[31:0] nr_tb;
wire[7:0] out_tb;
exercitiul4 maTerminaProgramuAsta(.inpt(nr_tb), .otpt(out_tb));
initial begin
nr_tb = 128;
#1;
$display("%b", out_tb);
end
endmodule发布于 2022-10-22 18:45:04
您将maxval声明为reg类型,这意味着它在0时被初始化为X。
它保持在X,因为您不直接为它分配任何其他值。因为像inpt[7:0]>maxval一样,比较也返回X,所以maxval总是保持X。
初始化maxval的一种方法是将其直接分配给第一个输入值:
always @ (inpt) begin
maxval = inpt[7:0];
maxval = inpt[15:8]>maxval?inpt[15:8]:maxval;
maxval = inpt[23:16]>maxval?inpt[23:16]:maxval;
maxval = inpt[31:24]>maxval?inpt[31:24]:maxval;
endhttps://stackoverflow.com/questions/74163569
复制相似问题