例如結果5bit,若輸入的高16bit全零,結果的最高位就置0,否則置1,依次兩分。
---------------附壹個找高位的1的,低位類似
reg [31:0] data;
reg [ 4:0] position;
reg [15:0] sel1;
reg [ 7:0] sel2;
reg [ 3:0] sel3;
reg [ 2:0] sel4;
always @(*) begin
if(|data[31:16] == 0) begin
position[4] = 0;
sel1 = data[15:0];
end
else begin
position[4] = 1;
sel1 = data[31:16];
end
end
always @(*) begin
if(|sel1[15:8] == 1'b0) begin
position[3] = 0;
sel2 = sel1[7:0];
end
else begin
position[3] = 1;
sel2 = sel1[15:8];
end
end
always @(*) begin
if(|sel2[7:4] == 1'b0) begin
position[2] = 0;
sel3 = sel2[3:0];
end
else begin
position[2] = 1;
sel3 = sel2[7:4];
end
end
always @(*) begin
if(|sel3[3:2] == 1'b0) begin
position[1] = 0;
sel4 = sel3[1:0];
end
else begin
position[1] = 1;
sel4 = sel3[3:2];
end
end
always @(*) begin
if(sel4[1] == 1'b0) begin
position[0] = 0;
end
else begin
position[0] = 1;
end
end