Colaboración para una ALU que Divide

Tengo un circuito en Proteus el cual esta basado en el algoritmo de la división, este consiste en restar sucesivamente el dividendo del divisor. Mi problema es como parar el siclo generado cuando hago esta resta. este es el archivo que tengo en proteus me podrían ayudar se los agrade seria.
 

Adjuntos

  • DIVIDIR.rar
    17.4 KB · Visitas: 64
¿Podrías poner el circuito en imágen? tengo problemas para abrirlo con la versión que tengo de proteus...
 
Hola Daniel Meza

Espero Te Sirva la imagen que te adjunto.
El circuito es un poco grande como para distinguir los componentes.

saludos
a sus ordenes
 

Adjuntos

  • Bórrame 6.jpg
    Bórrame 6.jpg
    261.7 KB · Visitas: 102
Gracias MCarlos...
Se tiene A/B, el ciclo de división se debe de detener cuando B>A, esta salida está presente en el comparador y la puedes usar para habilitar/deshabilitar el contador de ciclos. Para implementar el contador de ciclos utiliza algún CI contador de esos que tienen entrada de habilitación.
 
De antemano muchas gracias, necesito que me hagan el favor y me ayuden con mi ALU que divide, ya se en que salida del comparador debo conectar algo pero no se que es porfavor necesito que me ayuden.

Esta es la imagen que tengo.



El ciclo se puede observar en la salida del residuo gracias a los logicprobe.
 

Adjuntos

  • Diseño en Proteus.rar
    29.2 KB · Visitas: 46
Última edición por un moderador:
Hola juangato

Hay muchas cosas por mejorar en tu circuito.
Según vi, el circuito solo hace la primer resta. Posteriormente solo suma el resultado de esa resta con él mismo.
Algo más o menos así:
8 / 2.
8 – 2 = 6, 6 + 6 = 12 y así consecutivamente hasta que en una de esas aparece un 4 que sería el resultado de:
8 / 2 = 4. con cero en el residuo.

Ahora bien, mencionas en tu mensaje:
El ciclo se puede observar en la salida del residuo gracias a los logicprobe.

Si esos LogicProbe muestran el residuo dónde se muestra el resultado de la División ??.

El procedimiento de la división por restas consecutivas es más o menos así: -tomando los mismos números anteriores-
8 / 2
8 – 2 = 6, cuenta +1. (+) Ha efectuado una resta.
6 – 2 = 4, cuenta +1. Ha efectuado dos restas.
4 – 2 = 2, cuenta +1. Ha efectuado tres restas.
2 – 2 = 0, cuenta +1. (=) Ha efectuado cuatro restas.
4

Para efectuar una resta con un sumador (74LS83) lo que se hace es que uno de los dos operandos se complementa a 2 y se suman los 2 operandos “A” + “B”.

Según se ve en tu circuito Tú complementas a 1 el operando “A” y lo sumas al operando “B” pero hay que dejar a nivel alto(1) la entrada C0(13) del tu primer sumador para que efectivamente sea complemento a 2 el operando “A”.

Así tendríamos la primer resta. Hay que llevar cuenta de ello.
Luego al resultado que sale del primer sumador es al que hay que restarle de nuevo el operando “A”
Actualmente tenemos 6 que al ser sumado al complemento a 2 del operando “A” nos da 4.
Así tendríamos la segunda resta. Hay que llevar cuenta de ello.

Y así seguimos hasta que el resultado sea cero o menor de 2 en este caso por supuesto.
Cuando una de estas condiciones ocurra - resultado sea cero o menor de 2- hay que interrumpir los pulsos que le llegarían al contador que está contando cuantas veces se efectúan las restas.
En las salidas de este contador tendríamos el Cociente. Y el residuo estaría a la salida del sumador que realmente lo utilizamos como restador.

No comprendo para qué tienes tantos Clocks en tu circuito. Los 3 que tienes generan la misma frecuencia y están en fase. Así que con uno solo funcionaría tu circuito.

Creo que es más fácil ver como va operando tu circuito si en vez de ponerle un Clock le pones un interruptor para ir viendo como avanza.

Dale una verificada al circuito que te adjunto, es tu circuito solo que tiene el interruptor que te menciono. Éste debe ser normalmente cerrado NC, cada que lo presiones debe abrir y luego cerrar.

Por medio del comparador de magnitud que tienes en tu circuito se “Detecta” cuando hay que interrumpir los pulsos que está contando el contador que cuenta las veces que se efectúan las restas.
Y esto es cuando el resultado sea menor que el divisor QA<B. Así se llama la salida del 74LS85.
Con una compuerta OR de 2 entradas lo puedes lograr. Una de sus entradas se conecta al 74LS85 QA<B(7) y la otra entrada de la OR al Clock. Su salida al contador de restas.

saludos
a sus ordenes
 

Adjuntos

  • Bórrame 7.jpg
    Bórrame 7.jpg
    285 KB · Visitas: 82
  • DIVIDIR (1).zip
    21.3 KB · Visitas: 60
Señor MrCarlos de antemano mis agradecimientos por interesarse en mi proyecto, mis disculpas por_no expresarme correctamente en cuanto a los temas de electronica.

La verdad es que estudio tecnología en sistemas y en este momento estoy viendo una materia llamada Arquitectura de Computadoras 1, por ende el profesor la enfoca mucho a los sistemas digitales. Por lo que he podido entender es que tengo que hacer una tabla de verdad y que a_partir de ella cree un circuito combinacional el cual me_muetre en sus salidas el valor de verdad de la tabla.


- Puedo utilizar cualquier circuito.
-El profe me_dijo que tenia que ser con B.S + C.2.
-Tambien que no me complicara con flip-flop, que mínino tenia que ser secuencial.

Mas o_menos entiendo que lo puedo hacer con decodificadores, obligando que con compuertas me_salga correctamente el valor de verdad de la tabla.

El numero de bits pueden ser 7 bits los cuales pienso repartir asi: 4 bits para el dividendo y tres para el divisor incluyendo el bit de signo.

ejemplo:

dividendo = 0100 representa cuatro positivo.

divisor = 010 representa dies positivo.

La salida del cociente, por que segun entiendo solo debo representar el cociente debera mostra el resulta con bit signo en cualquier elemento ej: led, display etc.

Si_me puedes ayudar lo agradecería.
 
Última edición por un moderador:
Hola juangato

Qué avances hay con tu diseño ??
Practicaste con el circuito que te adjunté en mi mensaje #6 ??

Me gustaría que me explicaras qué quiere decir esto:
-El profe me dijo que tenía que ser con B.S + C.2.
Lo cual mencionas en tu mensaje #7.

De tus respuestas depende que te siga ayudando. Espero que esa ayuda no te llegue tarde.

saludos
a sus ordenes
 
Señor MrCarlos muchas gracia, a lo que se refiere el profesor con esa sigla es
C.2= complemento a dos.
B.S= bit de signo

el bit de signo como lo comente anterior mente debera ir incluido, que daria asi dividendo bit mas significativo es el bit de signo y los tres bit restantes magnitud y lo mismo con el divisor que es de 3 bits.
 
Hola juangato
Te faltó responder a estas preguntas:
Qué avances hay con tu diseño ??
Practicaste con el circuito que te adjunté en mi mensaje #6 ??

Si no hay avances y no practicaste con el circuito que te adjunté eso me dice que estás esperando que otro haga el circuito por ti.
De una vez te digo: Tú vas a hacer el circuito, yo solo te voy a guiar para que lo logres.

El circuito que te adjunto ahora es el Corazón del divisor por restas consecutivas.
Debes “Jugar” un rato con él para que lo comprendas.

Te describo cómo funcionan los IC’s que lo conforman. Esto te lo debes aprender de memoria:

74LS83 (U1) Sumador binario natural suma A + B y presenta el resultado en sus S’s. Actualmente configurado para que reste A – B pues por las entradas B le llega el complemento a 2 del Divisor.

74LS85 (U2) Comparador de magnitud, compara A Con B y manifiesta en su salidas QA<B, QA=B, QA>B si A es mayor, igual o menor que B. Las entradas de control A<B, A=B y A>B deben estar programadas como se ven en el circuito.

74LS174 (U3) cinco Flip-Flip’s Tipo D. Los niveles Lógicos que tengan sus entradas D’s pasan a sus Q’s después de un pulso de transición positiva en su entrada Clk. Para borrar las Q’s a 0 solo hay que hacer cierta su entrada MR y es cierta cuando es baja.

74LS244 U4 es un IC tipo buffer y los datos que tenga en sus entradas A’s aparecen en sus salidas Y’s cuando su entrada de control OE es cierta baja. Mientras esta entrada OE no sea cierta sus salidas Y’s quedan en el tercer estado, abierto(Desconectadas).

Para iniciar la simulación los interruptores y el botón deben estar como aparecen originalmente en el circuito.
Tiempo 00, cerrado.
Tiempo Tr, abierto.
Avance, abierto.
Vamos a Dividir A(Hex) = 10(Dec) entre 2.
Al presionar el botón RUN del simulador ya está restando (El sumador) 10 – 2 y mostrando el resultado en sus S’s.
Es igual a 8, Cierto ??

Esto se debe a que T00 es cierta y los datos en las entradas A’s de U4:B aparecen en sus salidas Y’s y a ese valor se le resta el valor del Divisor.

Presiona una vez el botón Avance, Nota que el resultado del sumador ahora aparece en las salidas Q’s de U3.
Es 8, Cierto ??
Esto es por que 10 – 2 = 8

Nota el cambio en las S’s del sumador al cambiar los interruptores:
Tiempo 00, ábrelo.
Tiempo restar, ciérralo.
(En ese orden).
Aparece un 6 Cierto ??
Esto es porque 8 – 2 = 6

Sigue presionando el botón hasta que la señal Fin = 0 en la compuerta AND sea efectivamente 0.
Contaste cuantas restas se efectuaron ??

Si no, vuelve a empezar y cuenta cuantas restas se efectuaron y ese número será el cociente de la división por restas consecutivas. Si hay un residuo, este aparecerá en las terminales llamadas R8, R4, R2 y R1.

Crees poder agregar la circuiteria para reemplazar los conmutadores y el botón ??

Inténtalo para continuar con lo del BIT de signo.

saludos
a sus ordenes
 

Adjuntos

  • Bórrame 9.jpg
    Bórrame 9.jpg
    340.9 KB · Visitas: 44
  • The Heart.zip
    17.1 KB · Visitas: 32
Buenas noches señor MrCarlos por adelantado mil gracia, estuve analizando el ultimo archivo que adjunto hablo #10, porsierto muy interesante gracias a su magnifica explicacion he podido entender como funciona. una de mis dudas es en cuanto al funcionamiento del comparador mi pregunta es:

Existen unas entradas llamadas A<B, A=A, A>B.No comprendo porque a la entrada A=B resive una señal alta asea un 1, y a las otras dos bajas.

Tambien que pasa cuando le ingreso F y F en principio los interructores inician como lo dijiste

Tiempo 00, cerrado.
Tiempo Tr, abierto.

Hasta ese momento todo tranaja bien, prero si cambio aplico el sigiente paso

Tiempo 00, ábrelo.
Tiempo restar, ciérralo.
(En ese orden).

Megenera un uno (1),lo cula creo que no deberia suceder no entiendo.

"Meprodia ayudar diciendome como funciona el contador que pena tanto".

Muchisimas gracias por su ayuda muy buen trabajo pranticamente lo hizo todo.Espero su respuesta pronto.

Le adjunto lo del residuo.Lo de el contador estoy investigando bien.
 

Adjuntos

  • ALU DIVIDE.rar
    17 KB · Visitas: 30
Última edición:
Hola juangato

Respecto a la primer pregunta que haces:
Existen unas entradas llamadas A<B, A=A, A>B.No comprendo porque a la entrada A=B resive una señal alta asea un 1, y a las otras dos bajas.

Te equivocaste en el segundo término: No es A=A sino A=B. Pero en fin, Te entiendo.
Este tipo de preguntas al respecto del el Cómo funciona un circuito integrado te las puedes responder más rápido si estudias las hojas de datos del circuito integrado en cuestión.
Esta vez tuviste que esperar hasta que te respondiera.
Esas entradas que mencionas se deben programar de aquella forma porque así lo dictan las hojas de datos y porque si no lo haces cuando armes el circuito en la realidad no funcionará como lo esperas.
Además esas entradas se utilizan cuando quieres comparar un número de 2 cifras. Serían 8 BIT’s para las decenas y otros 8 BIT’s para las unidades.
Las salidas QA<B, QA=B y QA>B del comparador de las decenas se conectan respectivamente a las entradas A<B, A=B y A>B del comparador de las unidades. Y las entradas A<B, A=B y A>B del comparador de las decenas se conectan como actualmente están en tu circuito. Esta configuración se llama “En cascada”.
De ese modo el comparador de las decenas le “Informa” al comparador de las unidades que el estado de las decenas es A<B o A=B o A>B con lo que se puede determinar cuando el número de 2 cifras es igual.

La segunda pregunta es más sencillo responderla: F / F = 1 ... cierto ??
Así que cuando tanto el divisor como el dividendo son iguales el resultado es 1 porque F dividido entre F es igual a 1.

saludos
a sus ordenes
 
Lo que no comprendo es porque en el display que puse en el archivo que adjunte en el #11.Se supone es la salida del residuo en principio sale el cero locual es correco pero cuando aplico el segundo paso de los interructores hocea gurdo en los flip-flop. presiono el boton y habilito el buffer.Luego aplico:

Tiempo 00, ábrelo.
Tiempo restar, ciérralo.
(En ese orden).

en la salida del residuo ose nuevo display sale uno se supone que es el residuo no.

Muchas garacia por su colaboracion.Espero su respuesta.

Que pena pedir tanto pero me podria ayudar con el contador.Gracia de nuevo.
 
Hola juangato

Bien, Fíjate en la salida del comparador, la que se llama QA<B. Te está diciendo que el valor de A es menor al valor de B así que ya no tienes que cambiar los interruptores ni presionar el botón. Si lo haces provocas un error por eso el 1 en el residuo.

Dicho de otro modo: el valor del residuo A es menor que el dividendo B así que ya no tienes que restar de nuevo moviendo los interruptores o el botón.

Para lo del contador que me pides que te ayude.
Puedes agregar un contador binario natural como por ejemplo el 74LS191.
Lo que hay que contar son los pulsos que salen de la compuerta AND U6:A PIN 3. la señal se llama Clock.
En las Q’s del contador se conecta el Display ya sea con decodificador o como el que agregaste en el residuo.

Al agregar ese contador notarás que da el cociente –1, así que de alguna manera tendrás que sumarle 1 al
Cociente para que el resultado sea correcto.

Inténtalo no es tan difícil.

saludos
a sus ordenes
 
Buenas noches señor MyCarlos, he estado tratando de implementar el contador 74ls191 que me recomendo, pero la verdad no he podido hacerlo funcionar, necesito que me haga el favor y me ayude.

Le adjunto el archivo con el contador funcionando pero sin conectatar.

Laverda es que he estado tratando de implementarlo pero nada, le agradeseria si me colabora es urgente, yo entiendo que el que debe crearlo soy yo pero la verdad no entiendo como conectarlo espero su respuesta lo mas pronto posible gracias.
 

Adjuntos

  • ALU DIVIDE.rar
    18.5 KB · Visitas: 16
Hola señor MyCarlos de antemano gracia por su colaboracion, Lecuento que despues de tanto intentar pude implementar el cociento selo adjunto para que lo mire.

Porfavor necesito que me ayude con lo de la divicion por cero mostrando una vandera la cual diga que esto es indefinido no valido.

Tambien necesito que si el divisor es mayor que el dividendo muestre una bander lacual diga que es incorrecto.

Muchas gracias.
 

Adjuntos

  • ALU DIVIDE TOTAL.rar
    18.6 KB · Visitas: 37
Hola juangato

Para que un contador “Cuente” hay que meterle los pulsos por su entrada CLK tu la estás metiendo por su entrada PL.
Te mencioné:
Lo que hay que contar son los pulsos que salen de la compuerta AND U6:A PIN 3. (Que Ahora Es A10:A PIN 3) la señal se llama Clock.
En las Q’s del contador se conecta el Display ya sea con decodificador o como el que agregaste en el residuo.
Pero hiciste otra cosa.

Y te falta lo del BIT de signo. Pero esto lo vas a hacer Tú solo.
Efectúa estas operaciones en la calculadora de Windows:
10 / 2 = 5
10 / -2 = -5
-10 / 2 = -5
-10 / -2 = 5
Notas que cuando los signos son diferentes en el dividendo y en el divisor el resultado es negativo ??
Pero cuando son iguales el resultado es positivo ??

Entonces puedes utilizar una compuerta OR exclusiva para que cuando los BIT’s de Signo sean diferentes en el dividendo respecto al divisor encienda un LED en su salida indicando que el cociente es negativo.

Lo que menciones en tu siguiente mensaje ya venía desde el principio. La señal se llama Error.

saludos
a sus ordenes
 

Adjuntos

  • Divisor P R C.zip
    24.2 KB · Visitas: 68
Última edición:
Señor MrCarlos estoy muy agradecido con usted ya que gracia a su colaboración pude presentar el proyecto.

Si puedo agradecerle de alguna manera espero me lo diga.

Muchas gracias esta pagina me párese genial.

Gracias a los creadores de la pagina y a todos los que colaboran en ella, sigan adelante con ella
 
Atrás
Arriba