Documente Academic
Documente Profesional
Documente Cultură
INDICE
INTRODUCCION _________________________________________________________2
OBJETIVOS _______________________________________________________________3
MARCO TEORICO
o DECODIFICADORES ______________________________________________4
o FUNCIONES CON DECODIFICADORES __________________________6
o MULTIPLEXORES _______________________________________________11
o ESTRUCTURAS DE CIRCUITOS MULTIPLEXORES ___________ 12
DESARROLLO DE CIRCUITOS_________________________________________14
INVESTIGACION________________________________________________________32
OBSERVACIONES_______________________________________________________41
CONCLUSIONES ________________________________________________________42
BIBLIOGRAFIA_________________________________________________________ 43
INTRODUCCIÓN
Los circuitos electrónicos digitales se hacen generalmente de grandes montajes de puertas lógicas.
Las técnicas digitales son útiles debido a que es más fácil conseguir que un dispositivo electrónico
cambie a un estado de una serie de estados conocidos que reproducir con exactitud un rango
continuo de valores, es decir infinito número de valores.
El actual reporte de asignaciones “Simulación VHDL circuitos MSI” contiene una introducción
teórica al funcionamiento de los decodificadores, codificadores y multiplexores; conocimientos
necesarios para el diseño de circuitos digitales de MSI. Juntos con ellos se adhieren esquemas que
permiten “visualizar” su funcionamiento y comprender mejor sus conceptos.
Luego pasamos al desarrollo de los circuitos. En esta parte se podrán observar el proceso y
resultados de las asignaciones simuladas en TINA tales como un Full Adder o un multiplexor con 2
entradas de 4 bits y 1 variable de selección.
Se finaliza con el diseño de un circuito digital sumador y restador de 2 números de 4 bits, a través
de la implementación de 4 Full Adders en paralelo con un funcionamiento similar a un sumador
7483, estos en árbol con un multiplexor de 2 variables de entrada de 4 bits cada uno más un
habilitador a 1 variable de 4 bits de salida, implementado este último con 4 multiplexores más
pequeños en paralelo de 2 datos de 1 bit a un dato de 1 bit.
OBJETIVOS
OBJETIVOS GENERALES.
OBJETIVOS ESPECÍFICOS.
MARCO TEÓRICO.
DECODIFICADORES.
Un decodificador de n a es un
circuito que tiene n líneas o
variables de entrada y líneas o
variables de salida. Como se
muestra en la figura 1. Se puede
considerar este codificador como
un generador de min términos. Se
utiliza para direccionar datos,
convertir códigos etc.
Figura 1. Esquema de un
decodificador.
Figura 2.
La figura 3 es un circuito alternativo al primero pero utiliza compuertas NAND sin inversores:
Figura 3.
En este caso las salidas son bajas activas, lo que significa que se utiliza un 0 en la salida para
representar un evento significativo, y viceversa: un 1 en la salida para representar un evento no
significativo. El caso de Activas altas utiliza el valor 1 para una entrada significativa y el 0 para uno
no significativo.
Figura 4.
Podemos implantar una función de max términos o min términos con una correcta combinación
de un decodificador y una compuerta lógica. Por ejemplo:
1. Mediante un decodificador con salidas activas altas y una compuerta OR (figura 5).
2. Mediante un decodificador con salidas activas bajas y una compuerta NAND (figura 6).
Y existen otras.
Figura 5. Figura 6.
Por lo general los decodificadores contienen una entrada de activación. Sirve para inhibir la
función o para permitir que la realice. Cuando se inhibe la función de un decodificador las salidas
pasan al estado inactivo. Por ejemplo la salida del decodificador 2 a 4 de la figura 7 está dada
por ; Cuando E = 0 todas las salidas son 0, mientras que si E = 1 las salidas quedan
igual. Un uso común es utilizar esta función para conectar varios decodificadores en cascada.
Figura 7.
CODIFICADORES.
Es un código lógico combinatorio que asigna un código de salida único (numero binario) a cada
señal de entrada aplicada al dispositivo; como tal, es el opuesto al decodificador. Si un modulo
decodificador tiene n entradas, el número de salidas s debe satisfacer la expresión
Consideremos primero el caso en que las entradas son mutuamente excluyentes; es decir, una y
solo una de las líneas de entrada esta activa en un instante en particular; nunca están activas al
mismo tiempo dos o más líneas de entrada. En este caso, las combinaciones de entradas que
nunca ocurren se pueden utilizar como condiciones prescindibles.
Diseñar un codificador para cuatro líneas de entrada si una y solo una esta activa en cualquier
instante. Figura 8a.
Definamos el código:
subíndice de la variable de entrada. Las figuras 8b y 8c muestran la tabla de verdad y los mapas k
para el codificador. De los mapas k vemos que:
El codificador anterior requiere una y solo una de las entradas este activa en todo momento, una
condición única. Supongamos que relajamos las restricciones un poco y que diseñamos un
codificador que permita la ocurrencia de todas las combinaciones de entradas, pero cuya salida
sea un código distintos de cero solo si una de las líneas de entrada esta activa.
Figura 8d.
Figura 8b.
Figura 8c.
Diseñar un codificador de cuatro líneas cuya salida es un código distinto de cero a menos que
una y solo una de las líneas de entrada este activa.
Definamos el código:
Observar que la lógica para implantar el segundo codificador es más compleja que la del primero.
Figura 9a
Figura 9b
Figura 9c.
Figura 9d.
MULTIPLEXORES.
Figura 10 a.
Esta configuración de multiplexion/demultiplexion ilustra una forma de elegir y guiar los datos; la
figura 10 b muestra la configuración lógica. En este caso las señales a,b,…, k son señales de control
que eligen el conjunto de entradas/salidas que usara el “canal único”. El canal de esta
configuración podría estar contenido en un sistema de computo y podría ser un mecanismo con el
que dicha computadora se comunica con el mundo exterior.
Figura 10 b.
El código de selección forma los min-términos de dos variables, B y A. Por tanto, podemos escribir:
Donde los m1 son los min términos del código de selección. La figura 11 c muestra el diagrama
lógico del multiplexor 4 a 1. Podemos utilizar el multiplexor de 4 a 1 de la figura 11 en una red de
tipo árbol. Por ejemplo, usar cuatro multiplexores para alimentar otro multiplexor de 4 a 1, con lo
que creamos un multiplexor de 16 a 1. Podemos generar configuraciones de mayor tamaño de
manera similar.
Figura 11 a. Figura 11 b.
Figura 11 c.
Decoder de 3 a 8.
ENTITY cod IS
PORT(
a, b, c : IN BIT;
x0, x1, x2, x3, x4, x5, x6, x7 : OUT BIT
);
END ENTITY;
ARCHITECTURE cod OF cod IS
BEGIN
x0 <= NOT(a or b or c);
x1 <= NOT(a or b) and c;
x2 <= NOT(a or c) and b;
x3 <= NOT(a) and b and c;
x4 <= a and NOT(b or c);
x5 <= a and c and NOT(b);
x6 <= a and b and NOT(c);
x7 <= a and b and c;
END cod;
Captura 1.
Captura 2.
Captura 3.
Coder de 8 a 3.
ENTITY codii IS
PORT(
a, b, c, d, e, f, g, h : IN BIT;
x0, x1, x2 : OUT BIT );
END codii ;
ARCHITECTURE codii OF codii IS
BEGIN
x0 <= ((h and not(g or c or a)) or (g and not(c or a or h)) or (c and not(h or g or a)) or (a and not(h or
g or c))) and not(b or d or f or e) ;
x1 <= ((f and not(e or b or a)) or (e and not(b or a or f)) or (b and not(f or e or a)) or (a and not(f or
e or b))) and not(h or g or d or c) ;
x2 <= ((a and not(b or c or d)) or (b and not(a or c or d)) or (c and not(a or b or d)) or (d and not(a
or b or c))) and not(e or f or g or h) ;
END codii;
Captura 1.
Captura 2.
Captura 3.
ENTITY muxi IS
PORT(
a,b,m : IN BIT;
x0 : OUT BIT
);
END ENTITY;
ARCHITECTURE muxi OF muxi IS
BEGIN
x0 <= (a and not(m)) or (b and m);
END muxi ;
Captura 1.
Captura 2.
Captura 3.
ENTITY muxi IS
PORT(
a,m,n : IN BIT;
x0,x1,x2,x3 : OUT BIT
);
END ENTITY;
ARCHITECTURE muxi OF muxi IS
BEGIN
x0 <= (a and not(m or n));
x1 <= (a and not(m) and n);
x2 <= (a and m and not(n));
x3 <= (a and m and n);
END muxi ;
Captura 1.
Captura 2.
Captura 3.
Full Adder.
ENTITY fad IS
PORT(
a,b,ci : IN BIT;
);
END ENTITY;
BEGIN
x0 <= (ci and not(a or b)) or (b and not(a or ci)) or (a and b and ci) or (a and not(b or ci)) ;
END fad ;
Captura 1.
Captura 2.
Captura 3.
ENTITY muxii IS
PORT(
a0,a1,a2,a3,b0,b1,b2,b3,m : IN BIT;
x0,x1,x2,x3 : OUT BIT
);
END ENTITY;
ARCHITECTURE muxii OF muxii IS
BEGIN
x0 <= (m and a0) or (not(m) and b0 );
x1 <= (m and a1) or (not(m) and b1 );
x2 <= (m and a2) or (not(m) and b2 );
x3 <= (m and a3) or (not(m) and b3 );
END muxii ;
Captura 1.
Captura 2.
Captura 3.
Captura 1.
Captura 2.
Captura 3.
Se utilizaron 2 códigos:
ENTITY FA IS
PORT(
ci, a, b : IN BIT;
co, sum : OUT BIT );
END FA ;
ARCHITECTURE FA_ar OF FA IS
BEGIN
co <= ( ((ci) and (a)) or ((ci) and (b)) or ((a) and (b)) );
sum <= (((not ci) and (not a) and (b)) or
((not ci) and (a) and (not b)) or
((ci) and (not a) and (not b)) or
((ci) and (a) and (b)) );
END FA_ar;
ENTITY MUX IS
PORT(
s, a , b : IN BIT;
y : OUT BIT );
END MUX ;
ARCHITECTURE MUX_ar OF MUX IS
BEGIN
END MUX_ar;
Captura 1.
Captura 2.
Captura 3.
INVESTIGACION.
Librerias existentes para VHDL, las características, elementos q contiene, como accesar a estar y
como utilizarlas:
LIBRARY ieee;
Una de las bibliotecas más utilizadas en el mundo de la industria es la denominada ieee, la cual
contiene algunos tipos y funciones que completan a las que vienen por defecto en el propio
lenguaje
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
USE ieee.std_logic_signed.all;
USE ieee.std_logic_unsigned.all;
LIBRARY Synopsys
USE ieee.std_logic_arith: Especifica tipos de datos con y sin signo, operaciones aritméticas y de
comparación numérica y funciones para conversión de datos.
USE ieee.std_logic_signed: Permite operaciones con signo con datos tipo STD_LOGIC_VECTOR.
LIBRARY std;
Librería que no requiere ser declarada en un diseño.
Contiene declaraciones de tipos de datos y funciones de entrada-salida de texto entre otros.
USE std.standard.all;
USE std.textio.all;
LIBRARY work;
USE work.all;
library IEEE;
use IEEE.std_logic_1164.all;
Sumador:
El objetivo es crear un sumador que dadas dos entradas de datos devuelva la suma de
estos.
Entradas:
a: operando 1.
b: operando 2.
Salidas:
salida: suma de las entradas.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
ENTITY sum IS
PORT (a : IN std_logic_vector(3 DOWNTO 0);
b : IN std_logic_vector(3 DOWNTO 0);
salida : OUT std_logic_vector(4 DOWNTO 0));
END sum;
PROCESS (a, b) IS
BEGIN
salida<= a + b;
END PROCESS;
END synth;
Multiplexor
Entradas:
Salidas:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
ENTITY mux IS
PORT(c : IN std_logic_vector(3 DOWNTO 0);
sel : IN std_logic_vector(1 DOWNTO 0);
salida : OUT std_logic_vector(3 DOWNTO 0));
END mux;
PROCESS (sel, a, b, c) IS
BEGIN
CASE sel IS
WHEN "00" =>salida<= (others => '0');
WHEN "01" => salida <= a;
WHEN "10" => salida <= b;
WHEN "11" =>salida<= c;
WHEN OTHERS =>salida<= (others => '0');
END CASE;
END PROCESS;
END synth;
Este ejemplo simula un multiplexor de dos entradas. Es un ejemplo sencillo que muestra
como describir un elemento a partir de su funcionamiento.
entity MUX2a1 is
port( a:instd_logic;
b:instd_logic;
sel:instd_logic;
z:outstd_logic);
endentity
Decodificadores:
El decodificador 2/4 tiene dos señales de control, que en nuestra entidad, viene dada por la
señal de selección . Como salida un vector de longitud cuatro y dos entradas de
habilitación (enable).
library ieee;
use ieee.std_logic_1164.all;
usework.uno.all;
entity decoder is port (
seleccion:instd_logic_vector(1 downto 0);
enable1,enable2: in bit;
salida: outstd_logic_vector(3 downto 0));
end decoder;
libraryieee;
use ieee.std_logic_1164.all;
usework.std_arith.all;
packageunois
component
count port (
clk,reset:in bit;
conta :bufferstd_logic_vector(1 downto 0));
end component;
component
decoder port (
seleccion :instd_logic_vector(1 downto 0);
enable1,enable2:in bit;
salida :outstd_logic_vector(3 downto 0));
end component;
endpackage;
libraryieee;
use ieee.std_logic_1164.all;
usework.std_arith.all;
usework.uno.all;
entity count isport (
clk,reset:in bit;
conta:bufferstd_logic_vector(1 downto 0));
end count;
architecturearchicountof count is
begin
contador :process (clk,reset)
begin
if (reset='1') thenconta<= (others => '0') ;
architecturearchidecoderof decoder is
begin
decodificador:process(seleccion,enable1,enable2)
begin
if enable2='1' thensalida<=(others=>'0');
elsif enable2='0' and enable1='0' thensalida<=(others => '0');
elsif(enable1='1') then
caseseleccionis
when "00" =>salida<= "0001";
when "01" =>salida<= "0010";
when "10" =>salida<= "0100";
when "11" =>salida<= "1000";
whenothers =>salida<="1111";
endcase;
endif;
endprocessdecodificador;
endarchidecoder;
CODER:
library ieee;
use ieee.std_logic_1164.all;
usework.std_arith.all;
entity coder is port(
dentro: in std_logic_vector(7 downto 0);
fuera :out std_logic_vector(2 downto 0);
eo : out bit );
end coder;
La primera línea llama a la librería ieee, la cual contiene el paquete std_logic_1164, que lo
necesitamos para usar el tipo std_logic_vector, y dentro de este paquete está std_arith, que
nos proporciona la función std_match. Se usan los tipos bits y std_logic.
OBTENCION DE TINA
TINA tiene uno de los más poderosos motores simuladores basados en Spice en el mercado,
soportando la mayoría de dialectos Spice con procesamiento paralelizado y modelos pre-
compilados. En adición al largo componente de Spice en TINA, puedes crear nuevos componentes
en TINA desde cualquier subcircuito Spice, ya sea creado por tu cuenta, o descargado de internet,
obtenido del CD de un manofactura o de porciones de esquemas transformados en subcircuitos.
TINA automáticamente representa estos subcircuitos en un block rectangular, pero puedes crear
cualquier forma que quieras con el “TINA’s Schematic Symbol Editor”. También puedes utilizar el
programa de extractor de parámetros de TINA para calcular parámetros del modelo desde el
catalogo o medir datos y luego adherirlos a los dispositivos del catálogo.
Figura 12.
Entramos a la página oficial de la Texas Instrument a través del link mostrado, y se verá esta
página:
Figura 14.
Hacemos clic en el botón que muestra la flecha roja en la imagen de arriba (figura 13) y luego
aparecerá esta página:
Figura 15.
OBSERVACIONES
Haciendo uso de las librerías existentes en TINA se realizan los circuitos mucho más rápido
y con la utilización de menos componentes. Esto es útil ya que no solo es menos trabajoso
sino más económico.
Para el segundo circuito no se necesita código creado por el usuario por que se ocupo el
decodificador de fabrica en TINA de modelo SN7447.
CONCLUSIONES
TINA es un simulador potente y eficaz para el uso de ingenieros y estudiantes en el
estudio, diseño y aplicaciones de los sistemas digitales.
Los decodificadores tienen aplicaciones muy importantes, por ejemplo como codificadores
de direcciones de memoria en una computadora y los sistemas de entradas o salidas.
Consiguiendo designar operaciones especificas a diferentes dispositivos de la
computadora como también a memoria transmitiendo su dirección.
Los multiplexores son muy importantes pues permiten seleccionar y controlar datos. Una
aplicación básica importante es la aplicación de los “Full Adder” o “Half Adder”.
BIBLIOGRAFIA.
GUIA 2: “Convertidor de Códigos con Compuertas Básicas”
López Lacayo, Eddys Elías Albiñana Alfaro, Juan Ramón