Informe Diseño Logico
Informe Diseño Logico
Informe Diseño Logico
Facultad Tecnológica
Introducción............................................................................................................................................3
Objetivos................................................................................................................................................. 3
Objetivo general:............................................................................................................................... 3
Objetivos específicos:........................................................................................................................3
Desarrollo................................................................................................................................................4
Hardware................................................................................................................................... 11
Análisis de resultados...........................................................................................................................12
Repositorio............................................................................................................................................ 14
Conclusiones......................................................................................................................................... 14
Referencias............................................................................................................................................15
Seguimiento...........................................................................................................................................16
2
Introducción
busca proporcionar una herramienta que permita ingresar, almacenar y operar con números
Objetivos
Objetivo general:
Objetivos específicos:
8, 16 y 24 bits.
simulaciones de Arduino.
3
Desarrollo
indefinida de números binarios de n bits, con el fin de realizar la suma de estos números en el
circuito. El primer paso es identificar claramente las funciones que el programa debe cubrir
para cumplir con los requisitos del sistema. Estas funciones son:
procesamiento.
los números binarios e imprimirá el proceso paso a paso en la consola, permitiendo al usuario
esta función mostrará el proceso en la consola para que el usuario pueda corroborar los
resultados obtenidos.
flujo correspondientes a cada una, lo que permite analizar de manera gráfica y sencilla el
4
Función para la entrada de datos
Este método tiene como principal función validar que el dato ingresado únicamente
contenga caracteres de (0,1) y que corresponde con el tamaño de bits indicado por el usuario
en dado caso que se cumplan estas condiciones guardar el dato en un arreglo, en caso
En este caso nuestra función simula el método de suma convencional que podríamos
hacer de forma manual en una hoja de papel debido a que su lógica maneja el mismo
organizarlos
desde su cifra menos significativa hasta la más significativa, paso siguiente identificar
el tamaño máximo del número más grande entre el grupo de números y si algún número tiene
menos bits que el de mayor tamaño del grupo rellenar las cifras faltantes con 0, para
comenzar con la suma cifra a cifra desde la cifra menos significativa y actualizando el
5
acarreo, se imprime la operación paso a paso junto con el acarreo por medio de consola. Al
final de terminar con todos los bits por sumar el método válido si queda algún acarreo. De
existir el acarreo se divide entre 2, actualizando su valor hasta que se reduzca a cero (esto es
parte del manejo del acarreo cuando se propaga más allá de la longitud de los números
binarios originales).
Para finalizar se muestra el resultado final de la suma binaria, que incluye todos los
6
Función de conversión de binario a decimal:
Nuestro método de conversión de números en base dos (binarios) a una cifra en base
10 (decimales) recibe un número binario y lo opera con el método de la potencia, en este caso
para garantizar que el número se empiece a operar desde su cifra menos significativa, lo
invertimos y empezamos a tomar cifra a cifra para multiplicarlo por su base (en este caso 2) y
por el exponente, el cual aumenta 1 mientras que exista una cifra del número a convertir al
final se suma cada resultado de estas operaciones para conseguir el número decimal con esto
7
Una vez definidos los algoritmos para cada función, podemos unificar el
funcionamiento del programa en un diagrama de flujo general. Este diagrama muestra cómo
una visión clara del flujo lógico y la interacción entre las funciones, desde la captura de
las librerías básicas del lenguaje. Este enfoque asegura simplicidad y claridad, sin recurrir a
Este proceso de migración permitió traducir las etapas del algoritmo en funciones
así que el código final refleje el comportamiento del diagrama, pero de manera óptima dentro
8
Fig. 5. Método suma de binarios Python
9
Modelado de solución (Hardware)
Arduino al manejar el lenguaje C/C++ no tiene nativamente arreglos dinámicos como si los
tiene Python, tampoco es compatible con la típica librería <vector.h> de C++, por lo que en Arduino
se optó por crear un vector estático de 20 posiciones para ingresar y guardar datos binarios, este vector
Al realizar el método de suma con los elementos del vector estático de Strings, sucedía un
2 soluciones, añadiendo una pausa (delay) antes de asignarle valores al String, o reemplazando el
String por un arreglo estático de Char, se decidió la segunda opción para mejorar la estabilidad del
código.
10
Función de conversión de binario a decimal:
cambios, debido a que las potencias pueden ser números realmente grandes, se salen de los límites del
tipo de dato Int, por lo que se cambió a un tipo de datos unsigned long, para evitar todo tipo de
errores de desbordamiento, no se utiliza ninguna librería externa para crear la potencia, sino que en
Hardware
Se utilizó un Arduino Uno físicamente para ejecutar todas las pruebas y realizar la migración,
en el proceso se planeaba utilizar una pantalla lcd de 16 casillas sin embargo por limitaciones de
espacio fue necesario utilizar el monitor serial, sin embargo se tiene creado todo el plano que iba a ser
necesario usando la pantalla LCD I2C, placas de pruebas y botones.
11
Análisis de resultados
Software
Resultado prueba 1: sumar todos los números de 24 bits con todos los de 16 bits y los de 8
bits
Resultado prueba 2: sumar los dos últimos números de 24 bits más los dos primeros de 16
bits más todos los de 8 bits
Resultado prueba 3: sumar los dos últimos números de cada grupo (8, 16, 24) bits
Resultado prueba 4: sumar todos los números de 24 bits más el primero de 16 bits más el 1
de 8 bits
12
Hardware
Resultado prueba 1: sumar todos los números de 24 bits con todos los de 16 bits y los de 8
bits
Resultado prueba 2: sumar los dos últimos números de 24 bits más los dos primeros de 16
bits más todos los de 8 bits
Resultado prueba 3: sumar los dos últimos números de cada grupo (8, 16, 24) bits
Resultado prueba 4: sumar todos los números de 24 bits más el primero de 16 bits más el 1
de 8 bits
Las primeras versiones presentaron problemas con números de longitudes dispares y errores
en el manejo del acarreo. Sin embargo, mediante la optimización gradual, se logró un código Python
13
preciso y eficiente, capaz de manejar entradas variables. Paralelamente, el circuito Arduino, tras un
binarios, estableciendo una base sólida para futuras aplicaciones en aritmética binaria.
Repositorio
Para mayor accesibilidad al código, se creó un repositorio donde se encuentran los algoritmos
creados para python y para arduino.
Enlace : https://github.com/Dylier/Dise-oLogico-.git
Conclusiones
la lógica para ingresar, almacenar y realizar operaciones de suma entre los números binarios,
junto con la conversión de los resultados a formato decimal, aseguró la precisión y exactitud
simulaciones y aplicaciones físicas. Esto resalta la capacidad del sistema para integrarse en
14
Referencias
16-sept-2024].
https://platzi.com/clases/3221-pensamiento-logico/50673-suma-y-resta-de-binarios/.
[Accedido: 22-agos-2024].
15
Seguimiento
16