Implementando la división de enteros en hardware

1

Estoy tratando de descubrir cómo crear una manera eficiente de dividir números de 5 bits en hardware (usando registros, registros de desplazamiento, comparadores, Muxes, lógica básica puertas, desplazadores de bits, extensores de bits y sustractores).

Sé que solo puedo restar iterativamente el divisor del dividendo hasta que el resultado sea menor que el dividendo, pero eso requiere un número desconocido de tics de reloj. Estoy buscando una manera de hacer que toda la división se realice en 6 tics del reloj (suponiendo que todos los circuitos anteriores hagan su trabajo en un solo tic).

Tengo problemas para comenzar porque los únicos métodos que se me ocurren son los métodos de bucle.

Cualquier consejo sobre cómo abordar este problema es muy apreciado.

    
pregunta user8363

1 respuesta

2

Un buen enfoque es comenzar con el dividendo en un registro cuyo ancho sea igual al ancho combinado del divisor y el cociente deseado. Luego, compare repetidamente la parte superior de ese registro con el divisor. Si es mayor o igual, resta el divisor y desplaza el registro a la izquierda, poniendo un "1" en el LSB. Si es menos, gire a la izquierda, poniendo un "0" en el LSB. Iterar eso una vez por cada bit del cociente. La parte inferior del registro de dividendos se dejará con el cociente, mientras que la parte superior se mantendrá con el resto.

Dependiendo de cómo haga exactamente las cosas, puede ser necesario manejar la primera o la última iteración especialmente, pero el enfoque anterior es bastante sencillo.

    
respondido por el supercat

Lea otras preguntas en las etiquetas