Resumen—En el presente documento, se pretende diseñar, construir y analizar circuitos de lógica combinacional con componentes MSI, aplicando herramientas de minimización para el diseño de funciones combinacionales haciendo uso de multiplexores. Se implementarán un decodificador de BCD a 7 segmentos, de manera que se pueda estudiar su funcionamiento. Se contará con la ayuda de simulaciones en VHDL de algunos de los circuitos resultantes.
Index Terms— Palabras Claves. Lógica combinacional con componentes MSI, decodificador de BCD a 7 segmentos, VHDL.
I. INTRODUCCIÓN
Un circuito que implementa la conexión de compuertas lógicas entre sí, con el fin de obtener cierta salida, utilizando combinaciones de niveles de entrada determinados, sin que se produzca almacenamiento de algún tipo, constituye lo que se conoce como lógica combinacional, en la cual sus salidas son función exclusiva de sus entradas para cierto momento.
Siguiendo con lo anterior, es importante decir que los codificadores y decodificadores son circuitos que realizan operaciones inversas, los primeros transforman la información usada en lenguaje natural (números en sistema decimal, letras) en una serie de ceros (0) y unos (1), de manera que sean procesados por un sistema digital. Por el contrario, los decodificadores, como su nombre lo indica, proporcionan a la salida información inteligible a partir de combinaciones binarias en la entrada, es decir traducen los ceros y unos en la entrada a lenguaje natural.
De igual forma, están los multiplexores y demultiplexores, los primeros (objeto de estudio en
el presente documento) se utilizan para enviar a su única salida la información de alguna de sus entradas, por el contrario los demultiplexores envían información de una única entrada a una de sus distintas salidas, para ambos es imprescindible una entrada de control con la que se realiza la selección.
II. PROCEDIMIENTO, ANÁLISIS Circuito para el conteo electrónico de votos Parte I
Teniendo en cuenta todos los requerimientos del cliente, se dispuso a diseñar el circuito que cuente el número de votos durante las reuniones de la junta directiva. Cada persona de la junta tiene acceso a un interruptor que se coloca en la posición cerrada cuando se vota SÍ, y en la posición cerrada cuando el voto es NO. En la imagen siguiente se logra apreciar el circuito del interruptor.
Figura 1.
Laboratorio 2 – Diseño de Circuitos
Combinacionales con Componentes MSI
Dalmiro Barrios (Cód. 200023586 , [email protected]) – Álvaro Acevedo (200024118 , [email protected]), Iván Yaber (Cód. 200023903, [email protected])
Para cumplir con cada una de las exigencias, y saber qué circuito combinacional utilizar, se realiza la tabla de verdad (Tabla 1) que se muestra a continuación:
Votación Suma Votos en binario
Display E N C J A3 A2 A1 A0 0 0 0 0 0 0 0 0 10 0 0 0 1 1 0 0 1 9 0 0 1 0 1 0 0 0 8 0 0 1 1 0 1 1 1 7 0 1 0 0 0 1 1 1 7 0 1 0 1 0 1 1 0 6 0 1 1 0 0 1 0 1 5 0 1 1 1 0 1 0 0 4 1 0 0 0 0 1 1 0 6 1 0 0 1 0 1 0 1 5 1 0 1 0 0 1 0 0 4 1 0 1 1 0 0 1 1 3 1 1 0 0 0 0 1 1 3 1 1 0 1 0 0 1 0 2 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 OFF Tabla 1.
La Tabla 1, permite construir los mapas de Karnaugh para cada una de las salidas y así llegar a la representación matemática del circuito lógico a efectuar. En esta tabla el cero (0) lógico representa un SI en los votos y el uno (1) a los votos NO.
Como se pidió en los requerimientos, si todos las personas votan SI, esto se representa en el display como un 0, pot otro lado cuando los votos son todos NO, el display permanece apagado.
Teniendo en cuenta que se escogieron como selectores ENC a continuación tenemos las funciones implementando MUX 8 a 1:
Salida A3 EN\CJ 00 01 11 10 00 0 1 0 1 01 0 0 0 0 11 0 0 1 0 10 0 0 0 0 I0: I1: I2: I3: I4: I5: I6: I7: J
Figura 2. Salida A3 implementando MUX 8 a 1
Salida A2 EN\CJ 00 01 11 10 00 0 0 1 0 01 1 1 1 1 11 0 0 1 0 10 1 1 0 1
Figura 3. Salida A2 implementando MUX 8 a 1
I0: I1:
I2: 1 I3: 1
I4: 1 I5:
Salida A1 EN\CJ 00 01 11 10 00 0 0 1 0 01 1 1 0 0 11 1 1 1 0 10 1 0 1 0
Figura 4. Salida A1 implementando MUX 8 a 1
Salida A0 EN\CJ 00 01 11 10 00 0 1 1 0 01 1 0 0 1 11 1 0 1 1 10 0 1 1 0
Figura 5. Salida A0 implementando MUX 8 a 1
Estas salidas se logran utilizando un multiplexor (MUX) 8:1 para cada una de ellas, por lo que tenemos un total de 4 MUX de referencia SN74LS151, el cual se caracteriza por ser activo en bajo, su símbolo lógico se aprecia en la siguiente figura:
Figura 6. SN74LS151 MUX 8 a 1 Y su diagrama de pines:
Figura 7. Diagrama de pines del SN74LS151 MUX 8 a 1
En el cual, el pin ENABLE INPUT es activo en bajo, por lo que se conecta a tierra.
Se tomaron como entradas selectoras , la entrada correspondiente a C, N y E. Además cabe decir también, que se utilizó un encapsulado de compuertas NOT para 2 casos, para negar la entrada J cuando fuese necesario y para conseguir un voltaje alto en la entrada sin necesidad de conectar dicha entrada a un voltaje de 5V, sino que se conectó la compuerta a tierra, de manera que al negarse la tensión 0V en la tierra se obtuviera un voltaje en alto (5V) correspondiente a un 1 lógico (requerimiento). Los encapsulados de compuerta NOT empleados son de referencia SN74LS06, cuyo diagrama de pines es:
I0: I1: I2: 1 I3: 0 I4: I5: I6: 1 I7: J I0: I1: I2: I3: I4: J I5: I6: I7: 1
Figura 8. Diagrama de pines del SN74LS06
Y su símbolo lógico viene dado:
Figura 9 símbolo lógico del SN74LS06
Las salidas del multiplexor, se conectan a la entrada de un decodificador BCD de 4 a 7 segmentos de referencia DM74LS47, el cual no se escogió de manera arbitraria, sino que por el contrario se tuvo en cuenta que debía ser al igual que el tipo de multiplexor escogido, activo en bajo, y que al igual que el display fueran ánodo común o cátodo común, en este caso en particular se escogieron ánodo común. El símbolo lógico de éste corresponde a la figura 10.
Figura 10.
Continuando con lo anterior, se procede a mostrar su diagrama de conexión y la descripción de sus pines.
Figura 11.
En este orden de ideas, la 7 salidas del decodificador BCD se conectan a un display de 7 segmentos que como ya se mencionó debía ser ánodo común, activo en bajo, dicha conexión no se realiza de manera directa sino que se utilizan resistencias para limitar la corriente, de tal forma que no se ocasionen daños al display, teniendo en cuenta los parámetros de FAN-IN y FAN OUT. Las resistencias empleadas son de un valor de 150 Ω.
El diagrama esquemático del circuito general se muestra a continuación
Figura 13. Diagrama esquemático del circuito general
El montaje correspondiente a dicho diagrama esquemático es:
Figura 14. Montaje
Parte II
A continuación, se muestra la descripción en VHDL en estilo algorítmico de un MUX de 8 a 1:
library IEEE; use IEEE.STD_LOGIC_1164.all; ENTITY mux_8a1 IS PORT (s0 : IN STD_LOGIC; s1 : IN STD_LOGIC; s2 : IN STD_LOGIC; in0 : IN STD_LOGIC; in1 : IN STD_LOGIC; in3 : IN STD_LOGIC; in4 : IN STD_LOGIC; in5 : IN STD_LOGIC; in6 : IN STD_LOGIC; in7 : IN STD_LOGIC; salida : OUT STD_LOGIC );
END mux_8a1;
ARCHITECTURE multiplexor OF mux_8a1 IS BEGIN
PROCESS(s0, s1, s2, in0, in1, in2, in3, in4, in5, in6, in7) BEGIN
IF (s0='0' AND s1='0' AND s2='0') THEN salida <= in0;
ELSIF (s0='0' AND s1='0' AND s2='1') THEN salida <= in1;
ELSIF (s0='0' AND s1='1' AND s2='0') THEN salida <= in2;
ELSIF (s0='0' AND s1='1' AND s2='1') THEN salida <= in3;
ELSIF (s0='1' AND s1='0' AND s2='0') THEN salida <= in4;
ELSIF (s0='1' AND s1='0' AND s2='1') THEN salida <= in5;
ELSIF (s0='1' AND s1='1' AND s2='0') THEN salida <= in6;
ELSIF (s0='1' AND s1='1' AND s2='1') THEN salida <= in7;
END IF; END PROCESS; END multiplexor;
De igual manera, se hizo para el decodificador BCD a 7 segmentos: library IEEE; use IEEE.STD_LOGIC_1164.all; ENTITY BCD_7SEG_P2 IS PORT (i0 : IN std_logic; i1 : IN std_logic; i2 : IN std_logic; i3 : IN std_logic; LT : IN std_logic; a : OUT std_logic; b : OUT std_logic; c : OUT std_logic; d : OUT std_logic; e : OUT std_logic; f : OUT std_logic; g : OUT std_logic ); END BCD_7SEG_P2;
ARCHITECTURE alg OF BCD_7SEG_P2 IS BEGIN
PROCESS (i0, i1, i2, i3,LT) BEGIN
IF LT='1' THEN
a<='0'; b<='0'; c<='0'; d<='0'; e<='0'; f<='0'; g<='1'; ELSIF (i0='0' AND i1='0' AND i2='0' AND i3='1') THEN a<='1'; b<='0'; c<='0'; d<='1'; e<='1'; f<='1'; g<='1'; ELSIF (i0='0' AND i1='0' AND i2='1' AND i3='0') THEN a<='0'; b<='0'; c<='1'; d<='0'; e<='0'; f<='1'; g<='0'; ELSIF (i0='0' AND i1='0' AND i2='1' AND i3='1') THEN a<='0'; b<='0'; c<='0'; d<='0'; e<='1'; f<='1'; g<='0'; ELSIF (i0='0' AND i1='1' AND i2='0' AND i3='0') THEN a<='1'; b<='0'; c<='0'; d<='1'; e<='1'; f<='0'; g<='0'; ELSIF (i0='0' AND i1='1' AND i2='0' AND i3='1') THEN a<='0'; b<='1'; c<='0'; d<='0'; e<='1'; f<='0'; g<='0'; ELSIF (i0='0' AND i1='1' AND i2='1' AND i3='0') THEN a<='1'; b<='1'; c<='0'; d<='0'; e<='0'; f<='0'; g<='0'; ELSIF (i0='0' AND i1='1' AND i2='1' AND i3='1') THEN a<='0'; b<='0'; c<='0'; d<='1'; e<='1'; f<='1'; g<='1'; ELSIF (i0='1' AND i1='0' AND i2='0' AND i3='0') THEN a<='0'; b<='0'; c<='0'; d<='0'; e<='0'; f<='0'; g<='0'; ELSIF (i0='1' AND i1='0' AND i2='0' AND i3='1') THEN a<='0'; b<='0'; c<='0'; d<='1'; e<='1'; f<='0'; g<='0'; ELSE a<='1'; b<='1'; c<='1'; d<='1'; e<='1'; f<='1'; g<='1'; END IF; END IF; IF LT='0'THEN a<='0'; b<='0'; c<='0'; d<='0'; e<='0'; f<='0'; g<='0'; END IF; END PROCESS; END alg;
Por último, se realizó la descripción pertinente en VHDL para el circuito completo, dicha descripción se realizó utilizando el estilo estructural y se verificó usando la tarjeta UP2:
library ieee;
use ieee.std_logic_1164.all; entity votos is
port( E,N,C,J,LAMP : in std_logic;
a,b,cled,d,eled,f,g : out std_logic); end votos;
architecture algoritmo of votos is signal a3,a2,a1,a0: std_logic; begin
U1: entity work.mux_8a1 PORT MAP (C,N,E,J,NOT J,'0','0','0','0','0',J,a3); U2: entity work.mux_8a1 PORT MAP (C,N,E,'0',J,'1','1','1',NOT J,'0',J,a2); U3: entity work.mux_8a1 PORT MAP (C,N,E,'0',J,'1','0',NOT J,J,'1',J,a1); U4: entity work.mux_8a1 PORT MAP (C,N,E,J,J,NOT J, NOT J, J, J, NOT J, '1',a0);
U5: entity work.BCD PORT MAP
(a3,a2,a1,a0,LAMP,a,b,cled,d,eled,f,g); end algoritmo;
Análisis de resultados
Teniendo en cuenta el diseño realizado y la simulación y descripción efectuada en VHDL, la cual se verificó usando la tarjeta ALTERA UP2, puede decirse que existe concordancia entre los resultados obtenidos en esta última y la tabla de verdad base para llevar a cabo la construcción del circuito.
Por otro lado, se logró diseñar el circuito mínimo posible que cumpliera con cada una de las especificaciones dadas por el cliente, lo que es signo inequívoco del correcto diseño del circuito encargado de controlar la lógica de la aplicación.
Conclusiones
De la anterior experiencia, se puede concluir en primera instancia, que los circuitos lógicos combinacionales son esenciales para la resolución de problemas diarios relativamente sencillos, solo basta con establecer las variables de entrada correctamente y de acuerdo a la finalidad del circuito, crear las salidas deseadas.
Por otro lado, es importante examinar el correcto funcionamiento de la tarjeta ALTERA UP2 a la hora de probar el análisis y descripción en VHDL del diseño, ya que si ésta no funciona correctamente, podría llevar a pensar que hubo un error en la fase previa, siendo esto erróneo.
Finalmente, se puede decir que la estabilidad, exactitud y precisión de las variables físicas de los circuitos, pueden verse alteradas por condiciones externas a ellos como la temperatura, la humedad, entre otras, que pueden provocar cambios con respecto a las presentadas en la hoja del fabricante; la tensión de alimentación, el ruido son agentes internos de los circuitos que también pueden provocar dichas fluctuaciones (mínimas) en los valores esperados.
REFERENCIAS
[1] Thomas L. Floyd, Fundamentos de sistemas digitales, Novena edicion ed., Miiguel Martin Romo, Ed.: Prentice Hall, 2006.
[2] John F. Wakerly, Diseno Digital, Principios y Practicas, Cuarta edicion ed.