¿Cómo construir un circuito lógico de división? [cerrado]

Entiendo la división en binario, pero aplicarla en un circuito es confuso. hasta ahora he construido circuitos sumadores/resta y multiplicación. Creo que debería tener bits adicionales para bits radix. esquema simple que me da una patada sobre el circuito lógico de división tal vez.

Esto es demasiado amplio, solo mire las opciones que ofrece Wikipedia sobre los algoritmos de división . No puede implementar un divisor de enteros de lógica digital "simple".
La división normalmente se realiza mediante una serie de multiplicaciones, con cada bit de salida seleccionado secuencialmente.
Debe usar un CPLD muy pequeño para hacer su división. Altera y Xilinx dan las primitivas requeridas para esto.

Respuestas (1)

Los residuos parciales individuales deben derivarse de los residuos parciales previamente calculados en la cadena. Entonces es más complicado.

Esto es solo para dar una patada, por así decirlo. No lo he revisado bien. Pero creo que se reduce a un enfoque. Sin embargo, es combinatorio. No estoy seguro si quieres eso.

esquemático

simular este circuito : esquema creado con CircuitLab

Lo anterior es un dividendo de 8 bits (A) y un divisor de 4 bits (B). (Bueno, si no me equivoqué al escribirlo, lo cual podría haber hecho). Se están produciendo cambios de carril. Si observa una salida mux, verá que el bit de orden superior de la salida simplemente se descarta y los 3 bits de orden inferior se cambian de carril a los tres superiores de un nuevo bus, donde su LSB proviene del siguiente bit de A (dividendo). La entrada del lado A del siguiente sumador es entonces una composición, como se describe. Además, el "mux" superior no es realmente un mux. Acabo de usar ese símbolo para un comparador, en su lugar. esta probando A [ 7 : 4 ] B [ 3 : 0 ] , ya que si esa parte de A es mayor o igual entonces la división requerirá un cociente mayor a 4 bits. Con suerte, eso es más claro.

La salida de sus mux 2: 1 está en el mismo cable que las entradas A. Esto puede ser aceptable suponiendo que pueda cortar las entradas A, pero no puede hacerlo en su esquema. Entonces, la salida del mux 2: 1 estará en contienda constante con las entradas A. ¿O esas líneas se fusionan en 4:0? Me refiero a la unión A[1] con [3:0]->[4:1]
@jbord39: Hay cambios de carril allí. ¿No los ves? ¡Puede que necesite editar eso en algo más pequeño!
@ jbord39: Con suerte, eso está más claro. También es posible que deba pensar más en los detalles. Pero la idea básica es negar B (razón por la cual el acarreo siempre se establece en '1') y realizar cada etapa como se muestra.
Todo un esquema interpretativo. Es posible que desee etiquetar los nodos antes y después de cada cambio de carril. Por ejemplo, el área que produce Q[2] (que es el CO del sumador anterior[3] si lo entiendo correctamente). El CO de anteriorAdder[2:0] se utiliza como selección para 2to1Mux[2:0]. Tal vez incluso solo poner el # de puertas paralelas representadas por cada símbolo lo haría mucho más claro.
@jbord39: Desearía saber cómo usar este editor para hacer líneas de autobús más gruesas también. Entonces, una línea delgada podría verse como un solo bit. No estoy seguro. Voy a ver si puedo mejorar el diagrama. Déjame pensar un momento.
@jbord39: Bueno, lo intenté de nuevo. Se está volviendo tedioso hacerlo mucho mejor. Con suerte, eso aclara las cosas (y / o aclara cualquier error que cometí).