Proyecto calculadora

#1
Hola colegas!!!

Estoy diseñando una calculadora, y los requisitos son; utilizar puertas lógicas, sumadores tipo 7483, comparadores tipo 7485, multiplexores, desplazamiento de registros, y un ALU 74181 (Unidad lógica aritmética), ¿qué tiene que hacer la calculadora?, sumar restar, multiplicar y dividir, 4 bit binarios, y se tiene que visualizar en displays de 7 segmentos.
Aún no tengo un esquema, he estudiado el datasystem del ALU 74183, y parece ideal, suma y resta 4 bit, pero no veo cómo hacer la multiplicación y la división, creo recordar que desplazando a la derecha un número binario lo multiplico por 2, y sí lo desplazo a la izquierda lo divido por 2, pero sí lo tengo que multiplicar por 3, 5 7, 9, ¿cómo lo hago?.

Post-data: el signo (+/-), queda excluido de la calculadora.
------- Mensaje actualizado: -------

Tengo hecho algunos proyectos parciales del proyecto calculadora, pero sin la ALU 74181:

Son un sumador de 3 bits, otro de 4 bits y un restador de 3 bits
------- Mensaje actualizado: -------

Alguien sabe algún simulador de Pc que pueda utilizar el integrado 74181 (unidad lógica aritmética), yo tengo el aplicativo Crocodrile Technology y el Livewire, para hacer simulaciones y no tengo la librería que incluya este integrado.
 

Adjuntos

Última edición:
#3
Alguien sabe algún simulador de Pc que pueda utilizar el integrado 74181 (unidad lógica aritmética), yo tengo el aplicativo Crocodrile Technology y el Livewire, para hacer simulaciones y no tengo la librería que incluya este integrado
 
#6
Ya he instado el simulador Multisim, y estoy practicando con el 74181 ALU (unidad lógica aritmética), pero sigo sin tener una idea clara del proceso de multiplicación y división, el Pdf que me adjunta Pandacba está en portugués, y después de traducirlo, entiendo que utiliza desplazadores de registros, flip flop y EPROM, esto último no puedo utilizarlo por prohibición en las bases del proyecto, deduzco que hay dos programas en Visual Basic en una RAM que se ejecutan en un microprocesador AT 28C64, imposible en mi proyecto.
No he puesto ningún esquema, salvo los parciales de suma y resta, porqué no tengo claro el concepto de la operativa, no es por vagancia, ni quiero que alguien me pegue un esquema completo de una calculadora, sino que me de una idea del concepto de la multiplicación y división de dos números binarios, que no sea por dos, que entiendo que con un desplazador de registro en paralelo lo consigo. Sólo necesito una idea, después armaré el esquema y discutiremos si está bien hecho o es mejor utilizar otras puertas lógicas.

Gracias de antemano.
 
#8
He realizado un multiplicador de 4 bits binario que funciona bien, es por el método que Pandacba me comenta, utilizando sumadores en cascada, con puertas AND como multiplicador individual, ahora tengo que decodificar la salida binaria a un código BDC para visualizarlo en display de 7 segmentos (yo había realizado uno que codificaba hasta 30 decimal)
¿Qué os parece? alguna sugerencia.
 

Adjuntos

#10
Siguiendo con el proyecto calculadora, ya tengo la opción de multiplicación en paralelo, para ello utilizo dos integrados IC 74284 y IC 74285, lo he probado con el aplicativo ISIS (mi primera vez), reduce mucho la opción anterior de la multiplicación por sumadores parciales.
Mi siguiente objetivo parcial es hacer un divisor de 4 bits, ¿alguna sugerencia?
 

Adjuntos

#12
Hola colegas.

La operativa a una división binaria es bastante complicada, no sigue una pauta definida. Qué yo sepa no hay un IC circuito integrada que haga esta operación, para la suma sí hay varios, y para la multiplicación también, aunque con sumadores en cascada se puede realizar la multiplicación, ya que multiplicar es una suma sucesiva. Sobre la resta, el truco está en sumar el minuendo con el inverso de sustraendo, y sumarle un uno (A-B = A+(invertir B)+1), con un sumador tipo IC 7483 invierte las entradas del número B y le sumas el acarreo de entrada, y ya está, pero dividir no es una sucesión de restas, ni conozco ningún truco, bueno, sí tuviera que dividir por 2 desplazaría a la derecha los bits, pero no es el caso, la división a de ser por cualquier número binario de 4 bits (0000 a 1111).
Sí analizo la resta, es una comparación de números que multiplico por el divisor para ver si caben en el dividendo, y el coeficiente es el resultado de la división. Si me olvido de las calculadoras y de mis conocimientos en matemáticas, y me posiciono a la antigua usanza a realizar una división de dos números, la metodología es multiplicar el divisor por 1, y comparar si es igual al dividendo, sino repetir la multiplicación por 2, y comparar, sino por 3 y así sucesivamente hasta que coincida, o sea el que más se aproxime sin pasarse al valor del dividendo.
De esto deduzco que voy a necesitar un comparador tipo IC 7485, registros de desplazamiento y algún contador binario.

Cualquier ayuda es bienvenida.
 
#13
Así como el producto es una suma sucecisa, la división es una resta sucesiva.
Dividir un número A por otro B, es restar B a A hasta que el resto sea 0 o meor que b, la cantidad de restas será el cociente
 
#15
Así como la resta es lo contrario a la suma, la divsión es lo contrario al producto.
A*B=C e implica sumar B tantas veces como lo indica A
Entonces C/B=A
Si A=4 y B=3 =>12 (3+3+3+3)
C/B=A implica que 12/3=4 (12-3=9-3=6-3=3-3=0) la cantidad de veces que se resto 3 es el cociente cuando el resto es 0 o menor que B
 
#16
Tienes razón, esa formula también es valida, pero inviable en un circuito lógico, habría que restar tantas veces el divisor del dividendo (15-1=14-1=13... hasta que 1-1=0), que tendría que poner 15 sumadoras en cascadas y entre medio un circuito comparador, además un contador que cuente cuántas veces se puede restar para que salgo el coeficiente, o sea el resultado.
 
#17
No se me ocurre nada, estoy bloqueado, no logro encontrar una idea lógica para desarrollar un divisor de 4 bits binario.

Si alguien sabe algo, aunque sea una pista o una idea.
Gracias de antemano.
 
#18
Hola, otra manera de dividir sin cociente fraccionario, consiste en dividir a lo tradicional cómo se haría con papel y lápiz.
Por ejem. si quieres dividir 10 entre 3.
Multiplica 3 por un número alto, digamos 15, que es el máximo número en binario a 4 bits.
Luego, cómo generará desborde por ser mayor que diez, reduces el factor, hasta que el producto sea igual o menor a 10.
 
#19
Hola colegas.

Ya he realizado un esquema del divisor, pero no me ha gustado mucho porqué lo veo muy inexacto, cumple con el enunciado del proyecto (sin comas y sin signos +/-), sin embargo tomaré este esquema como un previo al definitivo divisor.
Dentro del proyecto calculadora, el divisor es sin duda el más complicado de realizar. La idea de hacer una sucesión de restas, no es viable por su complejidad y tamaño, mi primera aproximación fue la de pillar el divisor y con un registro de desplazamiento moverlo hacía la derecha, después compararlo, sí daba igual o menos que el dividendo, restar (sumar el inverso más el complemento), sino desplazar el divisor una posición a la izquierda, y volver a comparar, además había que realizar el coeficiente (el resultado), de forma simultanea, y de mayor valor a menor, dependiendo sí el divisor podía restar o no, (un 1 si resta y un 0 sino resta), cuándo intenté plasmar esto con circuito integrados convencionales, sin EPROM me pareció imposible.
La idea de Roberto es la que he pillado, la de calcular cuál es el número del coeficiente que multiplicado por el divisor es igual o se aproxima más, sin sobrepasar el dividendo, aprovechando el esquema de la multiplicación donde A x B = C, he puesto un contador binario en la posición de A y lo he puesto ha contar del 15 al 0 (1111 hasta 0000), todos los números de ese contador se multiplican con B, el divisor, mientras 2 comparadores de 4 bits analizan el resultado C con el valor del dividendo, cuándo sale que son iguales, o es la primera vez que cambia a por debajo del valor de dividendo, mando una señal al contador para que pare ENABLE, el valor que dar lo visualizo y es el coeficiente, o sea el resultado de A/B.

Post data: necesito más ayuda sobre divisores binarios.
 

Adjuntos

#20
Otra forma es sustraer el número de esta forma A -B=C luego compara C con B si es igual o mayor hacer A=C y cada vez que haces esto se aumenta un contador hasta que da 0 o menor que B
Te comento que las primeras calculadoras digitales basada en circuitos TTL tenian varias decenas de CI's
 

Temas similares

Arriba