Red de conocimiento informático - Problemas con los teléfonos móviles - Problema de programación de Verilog, encuentre el primer '1' en un dato

Problema de programación de Verilog, encuentre el primer '1' en un dato

Dicotomía: use OR bit a bit para determinar si hay todos ceros.

Por ejemplo, si el resultado es de 5 bits, si los 16 bits superiores de la entrada son todos ceros, el bit más alto del resultado se establecerá en 0; de lo contrario, se establecerá en 1, y el resultado se dividirá en dos puntos.

--------------Adjunto se encuentra un método para encontrar el bit alto 1, el bit bajo es similar

reg [31:0 ] datos;

reg [ 4:0] posición;

reg [15:0] sel1;

reg [ 7:0] sel2;

reg [ 3:0] sel3;

reg [ 2:0] sel4;

siempre @(*) comenzar

if( |datos[31:16 ] == 0) inicio

posición[4] = 0;

sel1 = datos[15:0];

fin

else inicio

posición[4] = 1;

sel1 = datos[31:16];

fin

fin

siempre @(*) comenzar

if(|sel1[15:8] == 1'b0) comenzar

posición[ 3] = 0;

sel2 = sel1[7:0];

fin

si no comienza

posición[3] = 1;

sel2 = sel1[15:8];

fin

fin

siempre @(*) comienzo

if( |sel2[7:4] == 1'b0) comenzar

posición[2] = 0;

sel3 = sel2[3:0];

fin

si no comenzar

posición[2] = 1;

sel3 = sel2[7:4];

fin

fin

siempre @(*) comenzar

if(|sel3[3:2] == 1'b0) comenzar

posición[1] = 0;

sel4 = sel3[1:0];

fin

si no comenzar

posición[1 ] = 1;

sel4 = sel3[3:2];

fin

fin

siempre @(*) comenzar

if(sel4[1] == 1'b0) comenzar

posición[0] = 0;

finalizar

else comienza

posición[0] = 1;

fin

fin