Instituto Politécnico Nacional
Escuela Superior de Computo
ESCOM
Fundamentos de Sistemas
Digitales
Practica No. 7
Tema: Operaciones Aritméticas
Integrantes:
• Astudillo Pérez Edwin Uriel
• Moya Rivera Mia Paulina
• Pacheco Ramos Fernando
• Ramírez Embarcadero Valeria
• Sandoval Vásquez Gonzalo
Docente: Fernando Aguilar Sánchez
Fecha: 09-06-2024
Introducción Teórica
Las operaciones aritméticas son esenciales para los sistemas digitales y
computacionales porque permiten el procesamiento de datos en una variedad de
aplicaciones tecnológicas. Nos concentramos en diseñar e implementar circuitos
para operaciones básicas como el sumador medio, el sumador completo, el
restador medio, el sumador completo y el sumador completo de 4 bits en este
estudio. Cada uno de estos circuitos es esencial para realizar sumas y restas, que
son necesarias para cualquier operación matemática más compleja en un sistema
digital.
El Sumador Medio puede sumar dos bits y generar una suma y un acarreo,
mientras que el Sumador Completo puede sumar tres bits, incluido un bit de
acarreo de una posición anterior. Por otro lado, el Restador Medio resta dos bits, lo
que da como resultado una diferencia y un bit de préstamo, mientras que el
Restador Completo resta tres bits. El sumador completo de cuatro bits puede
realizar sumas en palabras de cuatro bits, que son comunes en procesadores y
otros sistemas digitales.
Las tablas de verdad se crearon para cada uno de estos circuitos y describen
todas las combinaciones potenciales de entradas y salidas. Las funciones
canónicas, que son expresiones algebraicas que muestran el comportamiento
lógico de los circuitos, se derivaron de estas tablas. Posteriormente, se diseñaron
los circuitos lógicos utilizando puertas lógicas básicas como AND, OR y XOR. Los
circuitos también se representaron utilizando diagramas de bloques, que ofrecen
una visión más abstracta y modular del diseño.
Se crearon dos programas para VHDL, un lenguaje de descripción de hardware
que permite modelar y simular el comportamiento de circuitos digitales. El primer
programa implementa un Medio Sumador, un Sumador Completo, un Medio
Restador y un Sumador Completo, mientras que el segundo programa se enfoca
en crear un Sumador Completo de 4 bits. VHDL es esencial para la síntesis de
estos circuitos en hardware real.
El uso de sumadores y restadores en las unidades aritmético-lógicas de los
procesadores tiene un impacto significativo en el rendimiento y la eficiencia de los
sistemas informáticos. Antes de la implementación física, la capacidad de modelar
estos circuitos en VHDL permite una exploración detallada de su comportamiento,
lo que resulta en un diseño más optimizado y libre de errores. Además, el enfoque
en la construcción de circuitos modulares y escalables, como el Sumador
Completo de 4 bits, ejemplifica cómo conceptos básicos se pueden ampliar para
manejar operaciones más complejas, sentando las bases para la innovación en el
diseño de hardware y la creación de dispositivos electrónicos más potentes y
versátiles.
El estudio y la implementación de estos elementos aritméticos en VHDL brindan
una comprensión profunda y práctica del diseño de sistemas digitales, lo cual es
esencial para el desarrollo de tecnologías avanzadas en el campo de la ingeniería
electrónica e informática.
Materiales empleados
✓ 1 Circuito Integrado GAL22V10
✓ 10 Resistores 330 Ohms
✓ 10 Resistores 1K Ohms
✓ 10 Leds
✓ Dip switch
Desarrollo Experimental
1.- Medio Sumador:
# a b Suma Carry
0 0 0 0 0
1 0 1 1 0
2 1 0 1 0
3 1 1 0 1
Funciones Canónicas (min):
𝑆𝑢𝑚𝑎(𝑎, 𝑏) = ∑(1,2) 𝐶𝑎𝑟𝑟𝑦(𝑎, 𝑏) = ∑(3)
𝑚 𝑚
= 𝑎̅𝑏 + 𝑎𝑏̅ = 𝑎̅𝑏 + 𝑎𝑏̅
=𝑎⨁𝑏
2.- Sumador Completo:
# a b Cin Suma Cout
0 0 0 0 0 0
1 0 0 1 1 0
2 0 1 0 1 0
3 0 1 1 0 1
4 1 0 0 1 0
5 1 0 1 0 1
6 1 1 0 0 1
7 1 1 1 1 1
Funciones Canónicas (min):
𝑆𝑢𝑚𝑎(𝑎, 𝑏, 𝑐) = ∑(1,2,4,7) = 𝑎⨁𝑏⨁𝑐
𝑚
𝐶𝑜𝑢𝑡(𝑎, 𝑏, 𝑐) = ∑(3,5,6,7) = 𝑏𝑐 + 𝑎𝑐 + 𝑎𝑏
𝑚
3.- Medio Restador:
# x y Resta Préstamo
0 0 0 0 0
1 0 1 1 1
2 1 0 1 0
3 1 1 0 0
Funciones Canónicas (min):
𝑅𝑒𝑠𝑡𝑎(𝑥, 𝑦) = ∑(1,2) = 𝑥⨁𝑦
𝑚
𝑃𝑟é𝑠𝑡𝑎𝑚𝑜(𝑥, 𝑦) = ∑(1) = 𝑥̅ 𝑦
𝑚
4.- Restador Completo:
# x y Pin Resta Pout
0 0 0 0 0 0
1 0 0 1 1 1
2 0 1 0 1 1
3 0 1 1 0 1
4 1 0 0 1 0
5 1 0 1 0 0
6 1 1 0 0 0
7 1 1 1 1 1
Funciones Canónicas (min):
𝑅𝑒𝑠𝑡𝑎(𝑥, 𝑦, 𝑧) = ∑(1,2,4,7) = 𝑥⨁𝑦⨁𝑧
𝑚
𝑃𝑜𝑢𝑡(𝑥, 𝑦, 𝑧) = ∑(1,2,3,7) = 𝑥̅ 𝑦 + 𝑥̅ 𝑧 + 𝑦𝑧
𝑚
Codigo completo
library ieee;
use ieee.std_logic_1164.all;
entity todo1bit is
port (
A, B, Cin_Bin : in std_logic;
SELECCION : in std_logic_vector(1 downto 0);
RESULTADO, ACARREO_PRESTADO : out std_logic
);
end todo1bit;
architecture operaciones of todo1bit is
signal SUMA_HA, CARRY_HA : std_logic;
signal SUMA_FA, CARRY_FA : std_logic;
signal DIFF_HS, BORROW_HS : std_logic;
signal DIFF_FS, BORROW_FS : std_logic;
begin
-- 1/2 Sumador
SUMA_HA <= A xor B;
CARRY_HA <= A and B;
-- Sumador Completo
SUMA_FA <= A xor B xor Cin_Bin;
CARRY_FA <= (A and B) or (Cin_Bin and (A xor B));
-- 1/2 Restador
DIFF_HS <= A xor B;
BORROW_HS <= (not A) and B;
-- Restador Completo
DIFF_FS <= A xor B xor Cin_Bin;
BORROW_FS <= (not A and B) or (Cin_Bin and (not A xor B));
-- Selección de operación
process (SELECCION, SUMA_HA, CARRY_HA, SUMA_FA, CARRY_FA, DIFF_HS, BORROW_HS,
DIFF_FS, BORROW_FS)
begin
case SELECCION is
when "00" =>
RESULTADO <= SUMA_HA;
ACARREO_PRESTADO <= CARRY_HA;
when "01" =>
RESULTADO <= SUMA_FA;
ACARREO_PRESTADO <= CARRY_FA;
when "10" =>
RESULTADO <= DIFF_HS;
ACARREO_PRESTADO <= BORROW_HS;
when "11" =>
RESULTADO <= DIFF_FS;
ACARREO_PRESTADO <= BORROW_FS;
when others =>
RESULTADO <= '0';
ACARREO_PRESTADO <= '0';
end case;
end process;
end operaciones;
Sumador completo:
library ieee;
use ieee.std_logic_1164.all;
entity suma is
port (
A, B : in std_logic_vector(3 downto 0);
S : out std_logic_vector(3 downto 0);
Cout : out std_logic
);
end suma;
architecture arqsuma of suma is
signal C : std_logic_vector(2 downto 0);
ATTRIBUTE synthesis_off OF C : SIGNAL IS true;
begin
S(0) <= A(0) xor B(0);
C(0) <= A(0) and B(0);
S(1) <= (A(1) xor B(1)) xor C(0);
C(1) <= (A(1) and B(1)) or (C(0) and (A(1) xor B(1)));
S(2) <= (A(2) xor B(2)) xor C(1);
C(2) <= (A(2) and B(2)) or (C(1) and (A(2) xor B(2)));
S(3) <= (A(3) xor B(3)) xor C(2);
Cout <= (A(3) and B(3)) or (C(2) and (A(3) xor B(3)));
end arqsuma;
Sumador completo de 4 bits
# C0 A3 A2 A1 A0 B3 B2 B1 B0 Ci ∑3 ∑2 ∑1 ∑0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 1 0 0 0 1
2 0 0 0 0 1 0 0 0 1 0 0 0 1 0
3 0 0 0 0 1 0 0 0 1 1 0 0 1 1
4 0 0 0 1 0 0 0 1 0 0 0 1 0 0
5 0 0 0 1 0 0 0 1 0 1 0 1 0 1
6 0 0 1 0 0 0 1 0 0 0 0 1 1 0
7 0 0 1 0 0 0 1 0 0 1 0 1 1 1
8 0 1 0 0 0 1 0 0 0 0 1 0 0 0
9 0 1 0 0 0 1 0 0 0 1 1 0 0 1
10 0 1 0 0 0 1 0 0 1 0 1 0 1 0
Conclusiones
Astudillo Pérez Edwin Uriel:
En esta práctica, aprendimos cómo funcionan diferentes operaciones aritméticas
en binario usando dos bits, como el medio sumador y el sumador completo. Esto
nos dio una buena introducción para entender cómo se realizan las operaciones
en binario, y con el sumador completo de 4 bits, obtuvimos una mejor idea de
estas operaciones usando tablas de verdad para ver cómo deben interactuar las
entradas con las salidas.
Moya Rivera Mia Paulina:
En conclusión, el estudio y la implementación de circuitos aritméticos como
sumadores medios, sumadores completos, restadores medios, restadores
completos y sumadores completos de cuatro bits son esenciales para el desarrollo
y la optimización de sistemas digitales. Estos circuitos no solo facilitan las
operaciones de suma y resta, que son fundamentales en cualquier procesamiento
matemático, sino que también proporcionan una base sólida para la creación de
hardware más complejo y eficiente. Para modelar y simular estos circuitos, se
utiliza VHDL. Esto permite un diseño más preciso y libre de errores. Las tablas de
verdad se crearon para describir todas las combinaciones potenciales de entradas
y salidas, y se derivaron de ellas funciones canónicas.
Pacheco Ramos Fernando:
En esta práctica aprendimos como funcionan distintas operaciones aritméticas en
binario con dos bits las cuales son: el medio sumador, el sumador completo, el
medio restador y el restador completo lo cual nos dio una buena introducción para
saber como se hacen las operaciones en binario, y con el sumador completo de 4
bits tener una noción mas acertada de estas mismas ayudándonos con las tablas
de verdad para analizar como debían de interactuar las entradas con las salidas.
Ramírez Embarcadero Valeria:
En esta práctica vimos como cómo sumar y restar en sistemas binarios con dos
bits, conseguimos entender mejor cómo funcionan los números en dispositivos
digitales, aprender sobre circuitos de suma y resta, y usar lenguajes como VHDL,
nos da una visión más profunda de cómo se construyen y mejoran los sistemas
digitales que usamos todos los días, desde computadoras hasta aparatos
electrónicos más simples.
Sandoval Vásquez Gonzalo:
La práctica nos brindó la oportunidad de familiarizarse y trabajar con el lenguaje
VHDL, lo que es fundamental para el diseño de sistemas digitales, con esto,
ganaoms experiencia en la escritura y depuración de código VHDL para describir
el comportamiento de las compuertas lógicas. A través de la implementación
práctica de compuertas lógicas como AND, OR, XOR, NAND, NOR, etc,pudimos
profundizar la comprensión del funcionamiento de estas operaciones a nivel de
circuito.La práctica incluyó la verificación de las tablas de verdad de las
compuertas lógicas implementadas, ayudandonos a confirmar que el
comportamiento de las compuertas en el simulador VHDL coincidía con lo
esperado teóricamente. El conjunto de todo esto nos proporcionó una oportunidad
para desarrollar habilidades prácticas en el manejo de herramientas y equipos de
laboratorio.
Referencias Bibliográficas
Compuertas lógicas. (s. f.). https://www.logicbus.com.mx/compuertas-logicas.php
Marcos, S. M. (2014). Introducción a la programación en VHDL.
https://docta.ucm.es/entities/publication/3152080b-11fa-466c-88c7-61ed262828a6