Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO POLITÉCNICO NACIONAL Escuela Superior de Cómputo Bello Muñoz Edgar Alejandro Fundamentos de Diseño Digital Profesor: Fernando Aguilar Sánchez Práctica 7 Operaciones aritméticas Fecha de entrega: 2 de mayo de 2021 Introducción Circuitos combinatorios Un circuito combinacional consiste en compuertas lógicas cuyas salidas en cualquier momento están determinadas por la combinación actual de entradas. Un circuito combinacional realiza una operación que se puede especificar lógicamente con un conjunto de funciones booleanas. Un circuito combinacional consta de variables de entrada, compuertas lógicas y variables de salida. Las compuertas lógicas aceptan señales de las entradas y generan señales para las salidas. Este proceso transforma información binaria, de los datos de entrada dados a los datos de salida requeridos. Sumadores La suma más sencilla que se puede realizar es la de dos números de un bit cada uno, de cuatro maneras posibles: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 10. El sumador que se encarga de realizar esta operación (la más simple de todas) se llama semisumador o medio sumador Las tres primeras operaciones producen una suma de un dígito pero cuando el sumando y el consumando son iguales a 1, la suma binaria consta de dos cifras. Cuando la suma da lugar a un bit significativo adicional, el acarreo obtenido de la suma de dos bits se suma al siguiente par de bits significativos de orden superior. Si queremos aumentar el número de bits de los sumandos, debemos tener una variable que se ocupe de los acarreos que aparezcan en las sumas parciales. La unidad básica de este tipo de sumadores se llama sumador completo. Consta de dos entradas de un bit para las variables A y B, y de una entrada correspondiente al bit de acarreo de entrada. Un grupo de cuatro bits se denomina nibble. Un sumador básico en paralelo de 4 bits se implementa mediante cuatro sumadores completos, los bits menos significativos de cada número que se suma, se introducen en el sumador completo que está más a la derecha; los bits de orden más alto se introducen sucesivamente en los siguientes sumadores, aplicando los bits más significativos de cada número al sumador que está más a la izquierda. La salida de acarreo de cada sumador se conecta a la entrada de acarreo del siguiente sumador de orden superior. Estos acarreos se denominan acarreos internos. Restadores En la diferencia, cada bit del sustraendo se resta de su correspondiente bit del minuendo para formar el bit de la diferencia. El préstamo ocurre cuando el bit del minuendo es menor al bit del sustraendo, de tal forma que se presta un 1 de la siguiente posición significativa. La resta se implementa mediante un sumador. El método consiste en llevar al minuendo a una de las entradas y el sustraendo en complemento 2 a la otra entrada. Un medio restador es un circuito combinacional que sustrae dos bits y produce su diferencia. También tiene la salida para especificar si se ha tomado un 1. Se designa el bit minuendo por x y el bit sustraendo mediante y. Para llevar a cabo x – y, tienen que verificarse las magnitudes relativas de x y y. Si x >= y, se tienen tres posibilidades; 0 - 0 = 0, 1 – 0 = 1 y, 1 - 1 = 0. El resultado se denomina bit de diferencia. Si x < y, tenemos 0 – 1 y es necesario tomar un 1 de la siguiente etapa más alta. El 1 que se toma de la siguiente etapa más alta añade dos al bit minuendo, de la misma forma que en el sistema decimal lo que se toma añade 10 a un dígito minuendo. Con el minuendo igual a 2, la diferencia llega a ser 2 – 1 = 1. El medio restador requiere dos salidas. Una salida genera la diferencia y se denotará por el símbolo D. La segunda salida, denotada B para lo que se toma, genera la señal binaria que informa a la siguiente etapa que se ha tomado un 1. Un restador completo es un circuito combinacional que lleva a cabo una sustracción entre dos bits, tomando en cuenta en un 1 se ha tomado por una etapa significativa más baja. Este circuito tiene tres entrada y dos salidas. Las tres entradas x, y y z, denotan al minuendo, sustraendo y a la toma previa, respectivamente. Las dos salidas, D y B, representan la diferencia y la salida tomada, respectivamente. Desarrollo Medio sumador Tabla de verdad # 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 𝑆𝑢𝑚𝑎 (𝐴, 𝐵) = 𝐴 ⊕ 𝐵 𝐶𝑎𝑟𝑟𝑦 (𝐴, 𝐵) = 𝐴𝐵 Circuito lógico Circuito a bloques Simulación del circuito Sumador completo Tabla de verdad # 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 𝑆𝑢𝑚𝑎(𝐴, 𝐵, 𝐶) = 𝐴 ⊕ 𝐵 ⊕ 𝐶 𝐶𝑜𝑢𝑡 = 𝐵𝐶 + 𝐴𝐶 + 𝐴𝐵 Circuito lógico Circuito a bloques Simulación del circuito Medio restador Tabla de verdad # 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 𝑅𝑒𝑠𝑡𝑎 (𝑋, 𝑌) = 𝑋 ⊕ 𝑌 𝑃𝑟é𝑠𝑡𝑎𝑚𝑜 (𝑋, 𝑌) = �̅�𝑌 Circuito lógico Circuito a bloques Simulación del circuito Restador completo Tabla de verdad # 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 𝑅𝑒𝑠𝑡𝑎 (𝑋, 𝑌, 𝑍) = 𝑋 ⊕ 𝑌 ⊕ 𝑍 𝑃𝑜𝑢𝑡(𝑋, 𝑌, 𝑍) = �̅�𝑌 + �̅�𝑍 + 𝑌𝑍 Circuito lógico Circuito a bloques Simulación del circuito Sumador de 4 bits Tabla de verdad (10 combinaciones) # Cin A3 A2 A1 A0 B3 B2 B1 B0 Cout ∑3 ∑2 ∑1 ∑0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 0 1 0 0 2 0 1 1 0 1 0 1 1 0 1 0 0 1 1 3 0 1 1 1 0 0 1 1 1 1 0 1 0 1 4 0 1 1 1 1 1 0 1 0 1 1 0 0 1 5 0 0 1 0 0 1 1 0 1 1 0 0 0 1 6 0 0 0 1 1 1 0 1 0 0 1 1 0 1 7 0 1 0 0 0 0 1 1 0 0 1 1 1 0 8 0 1 1 0 1 0 1 0 1 1 0 0 1 0 9 0 1 1 1 1 1 1 0 0 1 1 0 1 1 10 0 1 1 0 0 1 0 1 1 1 0 1 1 1 Simulación del circuito Circuito lógico Circuito a bloques Implementación del sumador completo de 4 bits en VHD 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) ABD (A(3) xor B(3))); end arqsuma; Implementación de medio sumador, sumador completo, medio restador y restador completo en VHDL library ieee; use ieee.std_logic_1164.all; entity suma is port(A,B,Cin,Pin: in std_logic; Semisuma,Carry,Suma,Cout,Semiresta,Prestamo,Resta,Pout: 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 --Implementación medio sumador Semisuma<=A xor B; Carry<=A and B; --Implementación sumador completo Suma<=A xor B xor Cin; Cout<=(B and C) or (A and C) or(A and B); --Implementación medio restador Semiresta<=Semisuma; Prestamo<= not A and B; --Implementación restador completo Resta<=A xor B xor Pin; Pout<=(not A and B) or (not A and C) or (B and C); end arqsuma; Conclusiones Con esta práctica se aprendió más acerca del el diseño de circuitos sumadores y restadores, y como su implementación se basa en el uso de circuitos combinacionales y compuertas lógicas parapoder resolver los problemas en binario de bits a bits. A pesar de resolver un problema simple de aritmética, son un elemento muy útil y el diseño y análisis de circuitos con mayor complejidad, al igual que permiten determinar registros y análisis de procesos repetitivos. Referencias • Floyd, T. (2010). Fundamentos de Sistemas Digitales. México: Pearson Educación. • Morris, M. (2007). Diseño digital. Cuarta Edición. México: Pearson • Educación.Quiroga, P. (2010). Arquitectura de Computadoras. México:Alfaomega.
Compartir