desktop

Proyecto calculadora

Hola, otra manera más eficiente, pero también más complejo, es hacer un divisor cómo el que plantee, pero de aproximación sucesiva.
Es decir volvemos al ejem. inicial.
Queremos dividir 10 entre 3
Entonces, habilitamos el bit más ponderante del divisor 1000.
Multiplicamos 1000*0011=desborde.
Ahora multiplicamos 0100*0011=desborde.
Luego multiplicamos 0010*0011=menor que diez.
Aquí mantenemos el bit en alto porque la comprobación es menor y por último probamos con el bit menor.
0011*0011= menor que diez.
En conclusión, el sistema va, probando del bit de mayor peso hacia el menor. Es decir en cuatro pasos se alcanza el valor más próximo.
Si, luego de que se comprueba que el resultado es menor, entonces ese bit se mantiene en alto y se continúa la selección bit a bit hacia el menor peso.
Aclarando aún más
(A) sería ntro. divisor.
(B) Ntro. dividendo.
(X) valor 0 o 1 según comprobación.
1er. Paso 1000*(A) < B
2do. Paso X100*(A) " " "
3er. Paso XX10*(A) " " "
4to. Paso XXX1*(A) " " "

Cómo generar la lógica?
Puede hacerse con un latch D de cuatro bits con el agregado de compuertas OR en su entrada y a su salida. Luego con un secuenciador tipo 4017, generar el barrido de bits del mayor al menor.
Ésto lo implemente una vez en un ADC de 16 bits para digitalizar audio.
 
Última edición:
No pillo el concepto de la división binaria, he estado hablando con un matemático, y dice que debería ser como una multiplicación inversa, he montado una cuadricula de restadoras similar al multiplicador, con su acarreo de entrada y su acarreo de salida, pero no me sale nada lógico. ¿wué estoy hacienda mal?.
 

Adjuntos

  • unidad de división.jpg
    unidad de división.jpg
    43 KB · Visitas: 45
  • Divisor de restas en cascada.jpg
    Divisor de restas en cascada.jpg
    410.5 KB · Visitas: 52
Pandacba, eso que comentas ya lo hice ayer, y lo colgué en la respuesta 19, pero sí lees mi comentario, verás que no es muy exacta, veo la solución muy aleatoria, poner un contador binario que busque el número que multiplicado por el divisor sea igual o se aproxime más sin pasarse del dividendo, no me parece una solución lógica, seguro que tiene que haber otra idea que desarrolle el divisor de una manera más lógica.

Un saludo, y sigo buscando.
 
Pandacba, eso que comentas ya lo hice ayer, y lo colgué en la respuesta 19, pero sí lees mi comentario, verás que no es muy exacta, veo la solución muy aleatoria, poner un contador binario que busque el número que multiplicado por el divisor sea igual o se aproxime más sin pasarse del dividendo, no me parece una solución lógica, seguro que tiene que haber otra idea que desarrolle el divisor de una manera más lógica.

Un saludo, y sigo buscando.
Hola, has leído el post #21?
Dame hasta mañana y subo algún esquema orientativo.
 
Última edición:
Es la forma como nos enseñaro a dividir en la escuela.....
El sistema de resta que te comente es lo más aproximado.
Una calculador Fate de aquellos años tenía tres tableros uno encima del otro lleno de circuitos lógicos, en total eran algo más de cien.
y se basan como te dije más arriba en la resta, el resultado es el contador

También busca 74LS382
 
Si, lo he leído esta mañana, hablas de utilizar un Flip Flop tipo D, y un contador decimal, pero no veo la utilidad real, en sí sería un circuito muy parecido al realizado anteriormente.
Ah... el último párrafo no lo entiendo "Ésto lo implemente una vez en un ADC de 16 bits para digitalizar audio".
Mensaje automáticamente combinado:

Pandacba, ¿has visto el esquema del matemático que me ha sugerido, pero que no me ha salido nada? o ¿bien lo he hecho mal?
Toda la mañana he estado dándole vueltas , y tengo muchos conceptos, pero no me sale nada positivo.
 
ya tienes el restador que funciona solo debea añadir que haga lo siguiente
Tomado como base estoa
A-B=C si C =0 fin si C es mayor que B +1 to counter hacer A=C y de nuevo A+B=C si C=0 fin si C>B +1 al contador cuando llegua a C= 0 o menor que B tu contdor es el resultado
para ello echa mano a todo los complementos por ejemplo la comparación haces con los CI's comparadores

 
Hola colegas!!
Ya he realizado el esquema de una división de 4 bits, sin duda es el más difícil de las 4 reglas de las matemáticas. Partiendo porqué nadie hace una división a mano, y los que se acuerdan, lo hacen por aproximación, o sea buscan un valor que multiplicado por del divisor sea el dividendo o se aproxime más sin pasarse, pero a la vieja usanza, cómo yo lo he hecho, restando el divisor del dividendo hasta que sea cero o sea menos que el valor del divisor.
Cuándo no se tiene el concepto claro de lo que quieres, no te sale nada bueno, eso me pasó a mí, después de hacer la suma, la resta y la multiplicación binaria de 4 bits, ataqué el divisor sin una idea clara, y todos los proyectos que iniciaba fracasaban; divisor en cascada, divisor en paralelo, registros de desplazamientos... y un sin fin de ideas se me pasaron por la cabeza, pero fue cuándo decidí hacer restas con papel y lápiz, y no pensar en el resultado, sino como los tontos, cuando descubrí el diagrama del esquema. Yo comparaba los números, y sí el divisor era menor o igual restaba, y eso lo hacía tantas veces podía, y después contaba las veces que había realizado la resta. Y esa era la idea, por eso he puesto un comparador de 4 bits, y una sumadora, que con el truco de A+B = A + el invertido de B más el complemento, para que sólo pille el dividendo la primera vez, he puesto un selector de datos, que por medio del contador binario, cuándo ha hecho la primera resta, y marca 1, le cambia al selector de datos para que pille la resta, y no el dividendo original. Para que los datos de la restas vuelvan al principio he utilizado unos Flip Flop FIFO, o sea básculas tipo D que dejan pasar los datos en paralelo, con cada pulso que registra el contador binario, lo que quiere decir que por cada Clock, se resta y se vuelve a subir el resultado arriba, para que vuelva a comparar, cuándo el comparador dice A<B, quiere decir que el divisor es más pequeño que el parcial de restas que queda, y es ahí que el contador recibe un ENABLE, se paraliza. El resultado es el valor del contador que ha contado las restas, y lo que queda del dividendo es el resto.

Muchas gracias a todos por vuestra ayuda e ideas.

Post data: aún queda pulirlo un poco, sí pongo un 0 en el divisor, el sistema no para, ya que intenta restarlo, siempre sale el mismo resultado y es un ciclo cerrado, pero con unas puertas lógicas haré que se resetee y marque 0.
 

Adjuntos

  • Divisor real.jpg
    Divisor real.jpg
    477.3 KB · Visitas: 74
Gracias Pandacba, no sé que quieres decir con "que el dividendo sea >0", la calculadora no tiene que tener números negativos, ni comas, sí el dividendo es cera, y pones cualquier número en el divisor, el circuito se para, porque en la primera comparación de los 4 bits, saldría A<B, y el contador marcaría cero, ya que inhabilitaría el contador.
 
Que el divisor sea 0 es un pequeño fleco, que lo ajustaré con algunas puertas AND sobre el Reset o ENABLE del contador, no me preocupa mucho ese detalle. Me gusta cómo ha quedado, porque poniendo el clock muy lento, puedes ver como va restando cada vez que el comparador a dejado pasar el número, y como se queda el resto paralizado cuando el comparador le dice al contador que pare, porque ya es más bajo que el divisor.
Los estudiantes de hoy deberían saber hacer restas a la vieja usanza, y saber que es un resto de un dividendo, hoy todo es con decímales, cómo si todo se pudiera trocear, por ejemplo: tengo 10 autos y se lo quiero dejar a mis 3 hijos, cuanto autos se quedarán cada uno, en la calculadora sale que 3,33 autos le correspondería a mis 3 hijos, pero un auto no se puede dividir, y la verdad sería, que 3 autos tendrían cada hijo, y un auto quedaría de resto.
 
Lo que has aprendido haciendo las operaciones básicas te da la dimensión de lo que se podía lograr con los CI lógicos, te da una perspectiva distinta y un manejo de información que solo así se logra.
Cuando tengas todo depurado sería bueno que publiques tu trabajo y te armes un tutorial si te animas
 
Hola colega!!!

Llevo mucho tiempo utilizando el aplicativo Crocodile Technology, pero se me está haciendo pequeño para los diseños de circuitos digitales, tengo también el aplicativo Livewire, sin embargo es muy complicado de utilizar, tardas mucho en formar un circuito digital, estoy mirando los simuladores de circuitos digitales que hay en el mercado, incluso los online, pero no me decido por ninguno, mis proyectos suelen ser digitales; puertas lógicas, contadores, sumadoras, decodificadores, multiplexores, flip-flop, comparadores, ALU... etcétera. ¿algún consejo?, ¿algún aplicativo especifico?

Gracias de antemano.
 
Gracias Roberto, tengo los dos que me comentas, y sí el MultiSim es más complicado de utilizar, mientras que el Proteus parece más sencillo, pero con menos librerías, la verdad es que cuándo te acostumbras a un simulador, pillas una rutina, que dificulta pasarte a otro... bueno tendré que adaptarme a lo nuevo, sí quiero progresar, y el Proteus parece que es el más extendido por el foro.

Gracias.
 
Es el más extendido por el foro y el que más dolor de cabeza trae, el Multisim no es díficil de manejar, tiene opciones muy poderosas y herramientas únicas de desarrollo, Multisim es una parte de muchas herramientas muy poderosas como labview y otros que te permitiran llegar más lejos
Mensaje automáticamente combinado:

Logisim es un producto interesante, multimedia logic.14
Atanua es otro buen producto
 
Última edición:
Atrás
Arriba