Tema 4 - Bloques combinacionales

Documentos relacionados
Tema 3 - Modelado con HDL a nivel RTL

El código concurrente esta destinado únicamente para el diseño de circuitos combinacionales.

Sistemas Digitales - Examen temas 1, 2 y 3 - (6 de Abril 2016)

VHDL. Lenguaje de descripción hardware

Sistemas Digitales I

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Septiembre de 2016

SISTEMAS DIGITALES VHDL

Laboratorio de Arquitectura de Computadoras

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) SEGUNDA CLASE DE VHDL

8. Multiplexores Digitales

DECODIFICADORES. Para cualquier código dado en las entradas solo se activa una de las N posibles salidas. 2 N

Sesión 1: Introducción al lenguaje VHDL. S1 1 Laboratorio de Estructura de Computadores Curso 04 / 05

Sistemas Electrónicos Digitales Curso de adaptación al Grado

VHDL: Código Secuencial. Arquitectura del Computador 2017

4. SUMADORES EN BINARIO PURO (I)

SISTEMAS DIGITALES CONTROL 1 (31/3/2014) APELLIDOS DNI: Firma NOMBRE MODELO DE EXAMEN A

Tema 5. Circuitos MSI

Sistemas Combinacionales

Tema 7 - Registros, contadores y memorias

Tema 2. Funciones Lógicas. Algebra de Conmutación. Representación de circuitos digitales. Minimización de funciones lógicas.

5. Decodificadores. Salida _1= A A A A = m = M ... Electrónica Digital. Tema

6. Codificadores. Electrónica Digital. Tema

TEMA 5.3 SISTEMAS DIGITALES

SINTAXIS BÁSICA DEL VHDL SIMPLIFICADO

Operadores y atributos en VHDL [1]

Sumadores. Tipos de sumadores: Half-adder. Full-Adder. Carry-Look-Ahead. Carry-select.

Laboratorio de Arquitectura de Computadoras

ÍNDICE CAPÍTULO 1. CÓDIGOS DE NUMERACIÓN CAPÍTULO 2. ÁLGEBRA DE CONMUTACIÓN Y FUNCIONES LÓGICAS... 37

Planificaciones Sistemas Digitales. Docente responsable: ALVAREZ NICOLAS. 1 de 5

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 1

A (A3, A2, A1, A0) B (B3, B2, B1, B0) A (A0, A1, A2, A3) B (B0, B1, B2, B3) 0 to 3. 3 downto 0

Tipos de datos en VHDL

Proyecto de Diseño 2

Subsistemas aritméticos y lógicos. Tema 8

UNIVERSIDAD CARLOS III DE MADRID. Ejercicios de VHDL. Circuitos Integrados y Microelectrónica. Luis Entrena. Celia López.

PRÁCTICA: LENGUAJE VHDL

Bloques estandarizados

2. Sumadores. Diagrama. Donde a y b son los bits a sumar, S el. resultado de la suma y C el acarreo generado. b EB. Circuito. Tabla de verdad.

Decodificadores/Demultiplexores. Grupo 9 Javier de Gregorio Menezo Laro de la Fuente Lastra Raúl Fernández Díaz

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores. Bloque 3: Sistemas secuenciales Tema 9: Módulos secuenciales básicos

CIRCUITOS MULTIPLEXORES Y DEMULTIPLEXORES

INTRODUCCIÓN A LOS VHDL. AUTOR: Cavallero, Rodolfo Antonio.

INGENIERÍA DE COMPUTADORES 3. Solución al Trabajo Práctico - Junio de 2013

ELECTRÓNICA DIGITAL 24-I Determinar el valor decimal de los números expresados en Complemento a 2. (0.25 puntos).

CODIFICADORES CON PRIORIDAD. Grupo 2

TEMA 1 FUNDAMENTOS DEL DISEÑO DEL HARDWARE DIGITAL

Arquitectura de Computadoras 2015 Práctico 03. Práctico 3. Álgebra de Boole. Método de Karnaugh. Circuitos lógicos combinatorios.

Practica No. 5 Diseño de un Multiplicador

Componentes Combinacionales. Circuitos Digitales, 2º de Ingeniero de Telecomunicación ETSIT ULPGC

Electrónica Digital. Fco. Javier Expósito, Manuel Arbelo, Pedro A. Hernández Dpto. de Física Fundamental y Experimental, Electrónica y Sistemas

Unidad Aritmético Lógica A.G.O. All Rights Reserved

PROBLEMA VHDL. 7 dig1. dig2. Entradas : Señales a[3..0] y b [3..0] en código GRAY Salida : Señales Dig1[6..0] y Dig2[6..0] para los visualizadores

Curso a Distancia INTRODUCCIÓN AL DISEÑO DIGITAL CON VHDL Y LÓGICA PROGRAMABLE. Ing. Arturo J. Miguel de Priego Paz Soldán.

VHDL. Carlos Andrés Luna Vázquez. Lección 5. Sentencias concurrentes

^6+1 2^5+1 2^2+1 2^1+1 2^ ^6+1 2^0-65.

Practica No. 5 Diseño de un Multiplicador

TEMA 7 ELECTRÓNICA DIGITAL: LÓGICA COMBINACIONAL

Unidad 3: Circuitos digitales.

Operación de circuitos lógicos combinatorios.

9. Dibujar el diagrama de tiempos de las siguientes asignaciones de señales.

TEMA III: OPERACIONES CON LOS DATOS

Sistemas Electrónicos Digitales. PRACTICA nº 8

Objetos de VHDL. Un objeto en VHDL es un elemento que contiene un valor de tipo específico de dato

Bloques funcionales combinacionales. Bloques para el encaminamiento y/o transferencia de datos

VI. Especificación del Comportamiento

VHDL. Lenguaje de descripción hardware Estructura Básica de diseño

Tema 2. Funciones Lógicas. Algebra de Conmutación. Minimización de funciones Lógicas. Introducción al VHDL.

LECCIÓN Nº 02 FUNCIONES DE LOGICA COMBINACIONAL (PARTE 1)

Circuitos Lógicos Combinatorios. Ing. Jorge Manrique 2004 Sistemas Digitales 1

Fundamentos de los Computadores Grado en Ingeniería Informática

Bloques Combinacionales

Circuitos electrónicos digitales. Unidades Aritméticas Lógicas. Departamento de Tecnología Electrónica Universidad de Sevilla

Sistemas Digitales I Taller No 2: Diseño de Circuitos combinacionales usando VHDL

ESTRUCTURA Y TECNOLOGIA DE COMPUTADORES II Curso PROBLEMAS TEMA 4: Unidad Aritmético Lógica

Universidad Autónoma de Querétaro Facultad de Ingeniería

VHDL Y FPGA LENGUAJE VHDL

Universidad Autónoma de Baja California

Oliverio J. Santana Jaria. Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Los objetivos de este tema son:

Sistemas Combinacionales y mas Verilog. Diseño de Sistemas con FPGA Tema 2 Patricia Borensztejn

Objetos de VHDL.! Un objeto en VHDL es un elemento que contiene. un valor de tipo específico de dato

Tema 3. Operaciones aritméticas y lógicas

TEMA 1 INTRODUCCIÓN A LOS SISTEMAS DIGITALES

Ing. Yesid E. Santafe Ramon CIRCUITOS LÓGICOS COMBINATORIOS

ARQUITECTURA DE COMPUTADORES INFORME DE LABORATORIO Nº 2 CÁRDENAS MOYA JOSÉ GABRIEL TUTOR ING. HAIMER GUTIERREZ

DESCRIPCIÓN DE CIRCUITOS DIGITALES

Módulos combinacionales básicos. Tema 7

UNIDAD II CIRCUITOS LÓGICOS COMBINATORIOS

Practicas tuteladas VHDL (curso 04-05)

ANALISIS Y DISEÑO DE CIRCUITOS ARITMÉTICOS

Electrónica Digital Departamento de Electrónica VHDL. Bioingeniería Facultad de Ingeniería - UNER

Transcripción:

- Bloques combinacionales Eduardo Rodríguez Martínez Departamento de Electrónica División de Ciencias Básicas e Ingeniería Universidad Autónoma Metropolitana Unidad Azcapotzalco Email: erm@correo.azc.uam.mx Sitio Web: http://kali.azc.uam.mx/erm/ 1121037 Diseño Lógico page 1

- Bloques combinacionales - (7.5 hrs.) 1. Diseño de circuitos combinacionales con bloques lógicos. 1.1. 1.2. 1.3. 1.4 Demultiplexores. 1.5 Sumador y unidades lógico aritméticas. 1.6. 2. VHDL para circuitos y bloques combinacionales de mediana complejidad. 2.1 Sentencia process e instructions secuenciales: if... then... else, case, and loop. 2.2 Paquetes aritméticos y operadores sobrecargados: Paquetes IEEE 1164, Numeric. Tipos std logic, std logic vector, signed y unsigned. Funciones de conversión entre tipos. Operador de concatenación. 1121037 Diseño Lógico page 2

- Bloques combinacionales - (7.5 hrs.) 1. Diseño de circuitos combinacionales con bloques lógicos. 1.1. 1.2. 1.3. 1.4 Demultiplexores. 1.5 Sumador y unidades lógico aritméticas. 1.6. 2. VHDL para circuitos y bloques combinacionales de mediana complejidad. 2.1 Sentencia process e instructions secuenciales: if... then... else, case, and loop. 2.2 Paquetes aritméticos y operadores sobrecargados: Paquetes IEEE 1164, Numeric. Tipos std logic, std logic vector, signed y unsigned. Funciones de conversión entre tipos. Operador de concatenación. 1121037 Diseño Lógico page 2

Bloques Lógicos. Multiplexor 2 a 1 Multiplexor 4 a 1 Bloques combinacionales page 3

Bloques Lógicos. Mux 4 a 1 implemetado con Mux 2 a 1 Mux 16 a 1 implementado con Mux 4 a 1 Bloques combinacionales page 4

Bloques Lógicos. OR Exclusiva Implementación de funciones usando multiplexores Operación mayorante u operador mediano Bloques combinacionales page 5

Bloques Lógicos. Ejemplo.- Implemente la función f = x 1 x 2 x 4 +x 1 x 2 x 3 + x 1 x 2 x 4 con un MUX de 8 a 1 (3 variables). f = m(2,3,6,8,11,12) I 0 I 1 I 2 I 3 I 4 I 5 I 6 I 7 x 4 m 0 m 1 m 2 m 3 m 4 m 5 m 6 m 7 x 4 m 8 m 9 m 10 m 11 m 12 m 13 m 14 m 15 f I 0 I 1 I 2 I 3 I 4 I 5 I 6 I 7 x 4 0 0 1 1 0 0 1 0 x 4 1 0 0 1 1 0 0 0 f x 4 0 x 4 1 x 4 0 x 4 0 Bloques combinacionales page 6

Bloques Lógicos. Teorema de expansión de Shannon. Cualquier función booleana f(x 1,...,x n ) puede escribirse en la forma: f(x 1,x 2,...,x n ) = x 1 f(0,x 2,...,x n )+x 1 f(1,x 2,...,x n ) donde el término f(0,x 2,...,x n ) se conoce como cofactor de f con respecto a x 1, y se denota como f x1 ; similarmente, el término f(1,x 2,...,x n ) se conoce como cofactor de f con respecto a x 1 y se denota como f x1. En general si la expansión se realiza con respecto de la variable x i, f xi denota el cofactor f(x 1,...,x i 1,1,x i+1,...,x n ), y la expansión se reduce a: f(x 1,...,x n ) = x i f xi +x i f xi Bloques combinacionales page 7

Bloques Lógicos. Ejemplo.- Considere la función mayorante en su forma de suma de productos: f(x 1,x 2,x 3 ) = x 1 x 2 +x 1 x 3 +x 2 x 3 = x 1 (0 x 2 +0 x 3 +x 2 x 3 )+x 1 (1 x 2 +1 x 3 +x 2 x 3 ) = x 1 (x 2 x 3 )+x 1 (x 2 +x 3 ) Ejemplo.- Considere la función XOR de tres entradas: f = x 1 x 2 x 3 = x 1 (x 2 x 3 )+x 1 (x 2 x 3 ) Bloques combinacionales page 8

Bloques Lógicos. Ejemplo.- Obtenga la implementación con multiplexores de la siguiente función usando la expansión de Shannon para cada una de las variables. f = x 1 x 3 +x 2 x 3 Bloques combinacionales page 9

Bloques Lógicos. Ejemplo.- Obtenga la implementación con multiplexores de la siguiente función usando la expansión de Shannon para cada una de las variables. Usando x 1 : f = x 1 x 3 +x 2 x 3 Usando x 3 : f = x 1 f x1 +x 1 f x1 f = x 3 f x3 +x 3 f x3 = x 3 (x 2 )+x 3 ( x 1 ) Bloques combinacionales page 9

Bloques Lógicos. Ejemplo.- Obtenga la implementación con multiplexores de la siguiente función usando la expansión de Shannon para cada una de las variables. Usando x 1 : f = x 1 x 3 +x 2 x 3 Usando x 3 : f = x 1 f x1 +x 1 f x1 = x 1 (x 3 +x 2 )+x 1 (x 2 x 3 ) f = x 3 f x3 +x 3 f x3 = x 3 (x 2 )+x 3 ( x 1 ) Bloques combinacionales page 9

Bloques Lógicos. Ejemplo.- Obtenga la implementación con multiplexores de la siguiente función usando la expansión de Shannon para cada una de las variables. Usando x 1 : f = x 1 x 3 +x 2 x 3 Usando x 3 : f = x 1 f x1 +x 1 f x1 = x 1 (x 3 +x 2 )+x 1 (x 2 x 3 ) f = x 3 f x3 +x 3 f x3 = x 3 (x 2 )+x 3 ( x 1 ) Usando x 2 : f = x 2 f x2 +x 2 f x2 Bloques combinacionales page 9

Bloques Lógicos. Ejemplo.- Obtenga la implementación con multiplexores de la siguiente función usando la expansión de Shannon para cada una de las variables. Usando x 1 : f = x 1 x 3 +x 2 x 3 Usando x 3 : f = x 1 f x1 +x 1 f x1 = x 1 (x 3 +x 2 )+x 1 (x 2 x 3 ) f = x 3 f x3 +x 3 f x3 = x 3 (x 2 )+x 3 ( x 1 ) Usando x 2 : f = x 2 f x2 +x 2 f x2 = x 2 ( x 1 x 3 )+x 2 ( x 1 + x 3 ) Bloques combinacionales page 9

Bloques Lógicos. Ejemplo.- Obtenga la implementación con multiplexores de la siguiente función usando la expansión de Shannon para cada una de las variables. Usando x 1 : f = x 1 x 3 +x 2 x 3 Usando x 3 : f = x 1 f x1 +x 1 f x1 = x 1 (x 3 +x 2 )+x 1 (x 2 x 3 ) f = x 3 f x3 +x 3 f x3 Usando x 2 : f = x 2 f x2 +x 2 f x2 = x 2 ( x 1 x 3 )+x 2 ( x 1 + x 3 ) Bloques combinacionales page 9

Bloques Lógicos. Ejemplo.- Obtenga la implementación con multiplexores de la siguiente función usando la expansión de Shannon para cada una de las variables. Usando x 1 : f = x 1 x 3 +x 2 x 3 Usando x 3 : f = x 1 f x1 +x 1 f x1 = x 1 (x 3 +x 2 )+x 1 (x 2 x 3 ) f = x 3 f x3 +x 3 f x3 = x 3 (x 2 )+x 3 ( x 1 ) Usando x 2 : f = x 2 f x2 +x 2 f x2 = x 2 ( x 1 x 3 )+x 2 ( x 1 + x 3 ) Bloques combinacionales page 9

Bloques Lógicos. El teorema de expansión de Shannon puede usarse para factorizar mas de una variable al mismo tiempo. Por ejemplo, la expansión para dos variables se escribe como: f(x 1,...,x n ) = x 1 x 2 f(0,0,x 3,...,x n ) + x 1 x 2 f(0,1,x 3,...,x n ) +x 1 x 2 f(1,0,x 3,...,x n ) +x 1 x 2 f(1,1,x 3,...,x n ) Bloques combinacionales page 10

Bloques Lógicos. Símbolo genérico de un decodificador. Bloques combinacionales page 11

Bloques Lógicos. Símbolo genérico de un decodificador. Decodificador 2 a 4. Bloques combinacionales page 11

Bloques Lógicos. Símbolo genérico de un decodificador. Decodificador 2 a 4. Decodificador 3 a 8 implementado con decodificadores 2 a 4. Bloques combinacionales page 11

Bloques Lógicos. Principales aplicaciones de los decodificadores: Selección de una palabra de memoria. Control de un buffer triestado. Decodificador BCD a siete segmentos. Demultiplexor. Bloques combinacionales page 12

Bloques Lógicos. Se usan generalmente para reducir el número de bits con que se representa cierta información. Símbolo para un codificador binario de 2 n a n. Cuando se contempla mas de una entrada activa a la ves, se necesita dar prioridad a las entradas. Codificador binario con prioridad y 0 = i 1 +i 3 y 1 = i 2 +i 3 z = i 0 +i 1 +i 2 +i 3 Bloques combinacionales page 13

Bloques Lógicos. Se usan generalmente para reducir el número de bits con que se representa cierta información. Símbolo para un codificador binario de 2 n a n. Cuando se contempla mas de una entrada activa a la ves, se necesita dar prioridad a las entradas. Codificador binario con prioridad Codificador binario 4 a 2. y 0 = i 1 +i 3 y 1 = i 2 +i 3 z = i 0 +i 1 +i 2 +i 3 Bloques combinacionales page 13

Bloques Lógicos. Se usan generalmente para reducir el número de bits con que se representa cierta información. Símbolo para un codificador binario de 2 n a n. Cuando se contempla mas de una entrada activa a la ves, se necesita dar prioridad a las entradas. Codificador binario con prioridad Codificador binario 4 a 2. y 0 = i 1 +i 3 y 1 = i 2 +i 3 z = i 0 +i 1 +i 2 +i 3 Bloques combinacionales page 13

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Bloques combinacionales page 14

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Definamos un conjunto de señales intermedias i 3, i 2, i 1,e i 0. Bloques combinacionales page 14

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Definamos un conjunto de señales intermedias i 3, i 2, i 1,e i 0. Cada i k = 1 si los bits correspondientes de A y B son iguales (i.e. i k = a k b k. Bloques combinacionales page 14

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Definamos un conjunto de señales intermedias i 3, i 2, i 1,e i 0. Cada i k = 1 si los bits correspondientes de A y B son iguales (i.e. i k = a k b k. La salida AeqB queda definida como AeqB = i 3 i 2 i 1 i 0. Bloques combinacionales page 14

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Definamos un conjunto de señales intermedias i 3, i 2, i 1,e i 0. Cada i k = 1 si los bits correspondientes de A y B son iguales (i.e. i k = a k b k. La salida AeqB queda definida como AeqB = i 3 i 2 i 1 i 0. Comparando los bits de A y B de izquierda a derecha, podemos saber si A > B. Bloques combinacionales page 14

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Definamos un conjunto de señales intermedias i 3, i 2, i 1,e i 0. Cada i k = 1 si los bits correspondientes de A y B son iguales (i.e. i k = a k b k. La salida AeqB queda definida como AeqB = i 3 i 2 i 1 i 0. Comparando los bits de A y B de izquierda a derecha, podemos saber si A > B. La posicion k en la cual los bits a k y b k difieren determina que A > B si a k = 1 y b k = 0. Bloques combinacionales page 14

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Definamos un conjunto de señales intermedias i 3, i 2, i 1,e i 0. Cada i k = 1 si los bits correspondientes de A y B son iguales (i.e. i k = a k b k. La salida AeqB queda definida como AeqB = i 3 i 2 i 1 i 0. Comparando los bits de A y B de izquierda a derecha, podemos saber si A > B. La posicion k en la cual los bits a k y b k difieren determina que A > B si a k = 1 y b k = 0. La salida AgtB queda definida como AgtB = a 3 b3 +i 3 a 2 b2 +i 3 i 2 a 1 b1 +i 3 i 2 i 1 a 0 b0. Bloques combinacionales page 14

Bloques Lógicos. Considere dos números binarios A = [a 3 a 2 a 1 a 0 ] y B = [b 3 b 2 b 1 b 0 ] positivos. Diseñe un circuito con tres salidas AeqB, AgtB, y AltB que se activen cuando A = B, A > B, y A < B, respectivamente. Definamos un conjunto de señales intermedias i 3, i 2, i 1,e i 0. Cada i k = 1 si los bits correspondientes de A y B son iguales (i.e. i k = a k b k. La salida AeqB queda definida como AeqB = i 3 i 2 i 1 i 0. Comparando los bits de A y B de izquierda a derecha, podemos saber si A > B. La posicion k en la cual los bits a k y b k difieren determina que A > B si a k = 1 y b k = 0. La salida AgtB queda definida como AgtB = a 3 b3 +i 3 a 2 b2 +i 3 i 2 a 1 b1 +i 3 i 2 i 1 a 0 b0. La salida AltB queda definida como AltB = AeqB +AgtB. Bloques combinacionales page 14

Bloques Lógicos Sumador y Restador. Sumador- Restador b 3 b 2 b 1 b 0 Signo-Magnitud Complemento Complemento a uno a dos 0111 +7 +7 +7 0110 +6 +6 +6 0101 +5 +5 +5 0100 +4 +4 +4 0011 +3 +3 +3 0010 +2 +2 +2 0001 +1 +1 +1 0000 +0 +0 +0 1000-0 -7-8 1001-1 -6-7 1010-2 -5-6 1011-3 -4-5 1100-4 -3-4 1101-5 -2-3 1110-6 -1-2 1111-7 -0-1 Bloques combinacionales page 15

Bloques Lógicos Sumador y Restador. Sumador- Restador Suma en complemento a uno. 0000 0010 (+5) 0101 ( -5) 1010 +(+2) +0010 +(+2) +0010 (+7) 0111 ( -3) 1100 1101 1000 (+5) 0101 ( -5) 1010 +( -2) +1101 +( -2) +1101 (+3) 10010 ( -7) 10111 1 1 0011 1000 Bloques combinacionales page 16

Bloques Lógicos Sumador y Restador. Sumador- Restador Suma en complemento a dos. 0000 0010 (+5) 0101 ( -5) 1011 +(+2) +0010 +(+2) +0010 (+7) 0111 ( -3) 1101 1100 1110 (+5) 0101 ( -5) 1011 +( -2) +1110 +( -2) +1110 (+3) 10011 ( -7) 11001 ignorar ignorar Bloques combinacionales page 17

Bloques Lógicos Sumador y Restador. Sumador- Restador Resta en complemento a dos. (+5) 0101 0101 (+5) 0101 0101 (+2) 0010 +1110 ( 2) 1110 +0010 (+3) 10011 (+7) 0111 ignorar ( 5) 1011 1011 ( 5) 1011 1011 (+2) 0010 +1110 ( 2) 1110 +0010 ( 7) 11001 ( 3) 1101 ignorar Bloques combinacionales page 18

Bloques Lógicos Sumador y Restador. Sumador- Restador Bloque sumador-restador de n bits Bloques combinacionales page 19

Bloques Lógicos Sumador y Restador. Sumador- Restador Resta decimal usando complemento a 10. Suponga que A = [a n 1,...,a 0 ] y B = [a n 1,...,b 0 ] son dos números decimales de n dígitos. La resta A B tiene las siguientes propiedades: Cuando a i > b i no se requrie de ningun prestamo y la resta de realiza normalmente. Cuando a i < b i se requiere de un prestamo de la columna i+1, lo cual transforma la resta en 10+a i b i. Este prestamo se refleja en el minuendo de la columna i+1 sumandole uno (i.e. b i+1 = b i+1 +1). Bloques combinacionales page 20

Bloques Lógicos Sumador y Restador. Sumador- Restador Existe un algoritmo mas sencillo que no involucra prestamos y se basa en el complemento a 10. El complemento a 10 de B se define como 10 n B, por lo que la resta A B puede expresarse como A B = A+(10 n B) 10 n Si A B, el término A+(10 n B) produce un acarreo que es cancelado con el término 10 n. Pero si A < B, no existe ningun acarreo, y tenemos A B = M 10 n 10 n (B A) = M. El termino M es el complemento a 10 de (B A), y representa el valor negativo obtenido de la resta A B cuando A < B. Bloques combinacionales page 21

Bloques Lógicos Sumador y Restador. Sumador- Restador Ejemplos: 74 36 = 74+(100 36) 100 = 74+(99 36)+1 100 = 74+63+1 100 = 138 100 = 38 Complemento a 9 027 045 = 027+(1000 045) 1000 = 027+(999 045)+1 1000 = 027+954+1 1000 = 982 1000 982 = 1000 (045 027) Complemento a 10 982 = 1000 (018) Bloques combinacionales page 22

Bloques Lógicos Sumador y Restador. Sumador- Restador Ejemplos: 045 027 = 045+(1000 027) 1000 = 045+(999 027)+1 1000 = 045+972+1 1000 = 1018 1000 = 018 955( 45) 973( 27) = 955+(1000 973) 1000 = 955+(999 973)+1 1000 = 955+026+1 1000 = 982 1000 Bloques combinacionales page 23

Bloques Lógicos Sumador y Restador. Sumador- Restador Ejemplos: 973 045 = 973+(1000 045) 1000 = 973+(999 045)+1 1000 = 973+954+1 1000 = 1928 1000 = 928( 72) Bloques combinacionales page 24

Bloques Lógicos Sumador y Restador. Sumador- Restador Bandera de sobreflujo. El resultado de una suma o resta debe de poder ser representado en los n bits destinados para su operación. Cuando esto no es posible, ocurre la condición de sobreflujo. c 4 c 3 c 2 c 1 c 4 c 3 c 2 c 1 0 1 1 0 0 0 0 0 (+7) 0 1 1 1 ( 7) 1 0 0 1 +(+2) + 0 0 1 0 +(+2) + 0 0 1 0 (+9) 1 0 0 1 ( 5) 1 0 1 1 c 4 c 3 c 2 c 1 c 4 c 3 c 2 c 1 1 1 1 0 1 0 0 0 (+7) 0 1 1 1 ( 7) 1 0 0 1 +( 2) + 1 1 1 0 +( 2) + 1 1 1 0 (+5) 1 0 1 0 1 ( 9) 1 0 1 1 1 Bloques combinacionales page 25

Bloques Lógicos Sumador y Restador. Sumador- Restador Bandera de sobreflujo. Para el caso de 4 bits: OV = c 3 c 4 + c 3 c 4 = c 3 c 4 Para n bits: OV = c n 1 c n Bloques combinacionales page 26

Bloques Lógicos Sumador con predicción de acarreos. Sumador- Restador El diagrama del sumador en rizo o sumador con acarreo en cascada es el siguiente de donde podemos inferir la funcion para el acarreo de salida de la i-ésima etapa como c i+1 = x i y i +x i c i +y i c i Bloques combinacionales page 27

Bloques Lógicos Sumador con predicción de acarreos. Sumador- Restador Si factorizamos el acarreo c i de la expresión anterior tenemos c i+1 = x i y i +(x i +y i )c i = g i +p i c i El término g i = x i y i se le conoce como de generación, ya que independientemente del valor del acarreo de entrada c i, generara un acarreo de salida c i+1 cuando ambas x i y y i sean igual a uno. El término p i = x i +y i se le conoce como de propagación, ya que propaga el acarreo de entrada c i cuando cualquiera de las entradas x i o y i sea igual a uno. Bloques combinacionales page 28

Bloques Lógicos Sumador con predicción de acarreos. Sumador- Restador Expandiendo la expresión anterior en terminos de la etapa i 1 tenemos c i+1 = g i +p i (g i 1 +p i 1 c i 1 ) y expandiendo hasta la etapa 0 = g i +p i g i 1 +p i p i 1 c i 1 c i+1 = g i +p i g i 1 +p i p i 1 g i 2 +...+p i p i 1...p 2 p 2 g 0 +p i p i 1...p 1 p 0 c 0 La ultima expresión representa un circuito de dos niveles implementado con compuertas AND y OR. Un sumador implementado de esta manera se conoce como sumador con predicción de acarreos o sumador con acarreo anticipado. Bloques combinacionales page 29

Bloques Lógicos Sumador con predicción de acarreos. Sumador en rizo c i+ 1 = g i +p i c i Retardo crítico de 2n+1 retardos de compuerta Bloques combinacionales page 30

Bloques Lógicos Sumador con predicción de acarreos. Sumador con predicción de acarreos Retardo crítico de 4 retardos de compuerta Su complejidad aumenta al incrementar el numero de bits Bloques combinacionales page 31

Bloques Lógicos Sumador con predicción de acarreos. Sumador- Restador Existen dos alternativas para reducir la complejidad del sumador con predicción de acarreos. Dividir el diseño en partes mas pequeñas y usar sumadores con predicción de acarreos conectados en rizo Bloques combinacionales page 32

Bloques Lógicos Sumador con predicción de acarreos. Sumador- Restador Usar un segundo nivel de predicción de acarreos Bloques combinacionales page 33

Bloques Lógicos Sumador con predicción de acarreos. Sumador- Restador Señales de generación G j y propagación P j. Analizando c 8 tenemos c 8 = g 7 +p 7 g 6 +p 7 p 6 g 5 +p 7 p 6 p 5 g 4 +p 7 p 6 p 5 p 4 g 3 +p 7 p 6 p 5 p 4 p 3 g 2 +p 7 p 6 p 5 p 4 p 3 p 2 g 1 +p 7 p 6 p 5 p 4 p 3 p 2 p 1 g 0 +p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 c 0 El último término en la expresión anterior define la propagación del acarreo de entrada c 0 P 0 = p 7 p 6 p 5 p 4 p 3 p 2 p 1 p 0 El resto de los términos definen la señal de generación G 0 = g 7 +p 7 g 6 +p 7 p 6 g 5 +...+p 7 p 6 p 5 p 4 p 3 p 2 p 1 g 0 Por lo que la expresión para el acarreo es c 8 = G 0 +P 0 c 0 Bloques combinacionales page 34

Bloques Lógicos Sumador con predicción de acarreos. Sumador- Restador Expandiendo para las demas señales G j = g 8j+7 +p 8j+7 g 8j+6 +p 8j+7 p 8j+6 g 8j+5 +... +p 8j+7 p 8j+6...p 8j+2 p 8j+1 g 8j P j = p 8j+7 p 8j+6 p 8j+5...p 8j c 8(j+1) = G j +P j c 8j Bloques combinacionales page 35

Estructura. En VHDL existen dos tipos de instrucciones: 1. Instrucciones concurrentes.- El orden en que aparecen en el código no afecta el comportamiento del diseo (i.e. son ejecutadas todas al mismo tiempo). 2. Instrucciones secuenciales.- Son ejecutadas una tras otra en el orden en que se listan (i.e. 3+2 = 1, +1 = 32 ), y solo pueden existir dentro de una estructura. [nombre_proceso:] -- etiqueta opcional [( nombre_se~nal {, nombre_se~nal} )] [declaración de variables] -- variables locales BEGIN [estructura WAIT] [asignación de se~nales] [asignación de variables] [estructura IF] [estructura CASE] [estructura LOOP] END [nombre_proceso]; Bloques combinacionales page 36

Estructuras IF, CASE, y LOOP. IF expresión_lógica THEN instrucción; {instrucción;} ELSEIF expresión_lógica THEN instrucción; {instrucción;} ELSE instrucción; {instrucción;} END IF; IF Sel = 0 THEN f <= x1; ELSE f<= x2; END IF; CASE expresión_lógica IS WHEN valor_constante => instrucción; {instrucción;} WHEN valor_constante => instrucción; {instrucción;} WHEN OTHERS = > instrucción; {instrucción;} END CASE; CASE Sel IS WHEN 0 => f <= x1; WHEN OTHERS => f <= x2; END CASE; Bloques combinacionales page 37

Estructuras IF, CASE, y LOOP. El comportamiento de la estructura LOOP es similar al de la estructura GENERATE. También contiene dos casos: [etiqueta loop:] FOR índice IN rango LOOP instrucción; {instrucción;} END LOOP [etiqueta loop]; [etiqueta loop:] WHILE expresión_lógica LOOP instrucción; {instrucción;} END LOOP [etiqueta loop]; Bloques combinacionales page 38

Estructuras IF, CASE, y LOOP. library ieee; use ieee.std_logic_1164.all; entity numbits is port ( x : in std_logic_vector(1 to 3); -- count : out integer range 0 to 3; count : BUFFER INTEGER RANGE 0 to 3 ); end numbits; architecture comportamiento of numbits is begin ( x ) -- cuenta el numero de unos en x -- variable tmp : integer ; BEGIN Count <= 0; -- tmp := 0; FOR i IN 1 to 3 LOOP IF x(i)= 1 THEN Count <= Count + 1; -- tmp := tmp +1; END IF; END LOOP; -- count <= tmp; EN ; end comportamiento; Bloques combinacionales page 39