當前位置:編程學習大全網 - 編程軟體 - verilog編程問題,找出壹個數據中的第壹個'1'

verilog編程問題,找出壹個數據中的第壹個'1'

兩分法,用按位或判斷是否全零。

例如結果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

  • 上一篇:虛擬化如何提高測試和開發工作人員的生產力
  • 下一篇:JS部分怎麽寫才能把form表單裏的數據輸出出來
  • copyright 2024編程學習大全網