Hola,
Quien haya visto el circuito de
este hilo habrá comprobado que para dividir en coma o punto fijo necesito dividir con resultado entero. No es que tenga que ser así, pero el algoritmo que he utilizado lo necesita. El problema está que si le pedimos al sintetizador que nos haga una división entera para dos números cualquiera consume bastantes recursos.
Para ello he utilizado el método de sumas sucesivas en vez de restas, el método es muy similar. En vez de ir restando el divisor al dividendo y esperar llegar a 0 o negativo, voy sumando el divisor sucesivamente hasta alcanzar o sobrepasar al dividendo.
El diseño tiene presente 0/0 y n/0, producirá una señal (tic) de error y el cociente siempre será 0 en estos casos.
Para quien sienta interés o lo necesite dejo este enlace a mi Github:
Y tengo probado otra forma más eficiente de hacer estas divisiones enteras, donde consume menos recursos, la velocidad máxima de reloj es más alta, y realiza la operación en unos pocos ciclos (número de bits utilizados + 1). Además de dar el cociente también da el resto. Será en cajitas de código en verilog para Icestudio, con tres versiones: 8, 16 y 32 bits. Durante esta semana creo que lo sacaré. Este algoritmo no es mío y cuando lo publique pondré de dónde lo he sacado.
Saludos.