Contando el número de ceros de MSB

0

¿Hay una forma lógica de contar el número de ceros más significativos?

Por ejemplo

5 leading zeros                    5
00000100 -> combinational logic -> 00000101
1 leading zero                     1
01000000 -> combinational logic -> 00000001
0 leading zeros                    0
11111000 -> combinational logic -> 00000000

Editar: usando puertas

    
pregunta jackana3

3 respuestas

1

Aquí hay una solución alternativa, más clásica.

Simulator.IO

Tenga en cuenta que realmente puede reducir esto en una puerta OR ya que el término "6 OR 7" se usa tanto en el Bit 1 como en el Bit 2 del codificador.

    
respondido por el Trevor_G
1

El enfoque más simple es producir una salida "de un solo calor" para el bit menos significativo que está precedido por todos los "ceros" [solo habrá uno de esos bits]. Cada bit del conteo será entonces el "o" de la mitad de las salidas de un solo calor. Por ejemplo, en un sistema de 8 bits, uno puede obtener un recuento de tres bits de bits iniciales al sumar las salidas 0, 2, 4 y 6 de una operación en caliente para el LSB de la cuenta, las salidas 0, 1 de una operación en caliente. 4 y 5 para el bit medio del conteo, y las salidas 0, 1, 2 y 3 para el MSB del conteo.

Si el número de bits es grande, puede tener sentido colocar en cascada puertas O más pequeñas en lugar de gigantes de tamaño N / 2. Si se hace esto, las puertas más pequeñas se pueden compartir en varios términos. Por ejemplo, si N es 16, la compuerta OR que se usa para combinar los hots 0, 1, 2 y 3 podría combinarse con la de los hots 8, 9, 10 y 11 para producir el bit 2 de el conteo, y con un hots 4, 5, 6 y 7 para producir el bit 3 del conteo.

    
respondido por el supercat
0

Un montón de agregadores es razonablemente escalable.

Esto utiliza la estructura de sumador de contador de bit bastante típica con la adición de la lógica de filtrado de secuencia O en el frente.

Simulator.IO

    
respondido por el Trevor_G

Lea otras preguntas en las etiquetas