Multiplexación de Display 7 Segmentos

28
Universidad Católica “Nuestra Señora de la Asunción” Sede Regional Asunción Facultad de Ciencias y Tecnología Departamento de Ingeniería Electrónica e Informática Carrera de Ingeniería Electrónica Sistemas Digitales 1 Díaz, Andrés Quiñonez, Bladimir Ramírez, Pedro <[email protected]> Práctica de Laboratorio III

Transcript of Multiplexación de Display 7 Segmentos

Page 1: Multiplexación de Display 7 Segmentos

Universidad Católica“Nuestra Señora de la Asunción”

Sede Regional AsunciónFacultad de Ciencias y Tecnología

Departamento de IngenieríaElectrónica e Informática

Carrera de Ingeniería Electrónica

Sistemas Digitales 1

Díaz, AndrésQuiñonez, Bladimir

Ramírez, Pedro <[email protected]>

Práctica de Laboratorio III

Page 2: Multiplexación de Display 7 Segmentos

1 Practica 1 2

1. Practica 1Diseñar un circuito con una entrada de datos de 8 bits, y una entrada deselección de 2 bits. El selector debe habilitar el conjunto de 7 segmentos alcual corresponde el dato en la entrada, similar al que se observa en la figura1. El circuito de funcionar a una frecuencia máxima de 1,5kHz. (vamos autilizar una frecuencia de 1kHz, pero establecemos una frecuencia mínimade funcionamiento como respaldo)

Figura 1: Circuito de selección de datos.

D0,1,2,3, display 7 segmentos. Indicar si son ánodo común, o cátodo común.Realizar los cambios pertinentes para en el caso de utilizar ánodo común.

Rlim, conjunto de 8 resistencias limitadoras. Indicar los cálculos realizadospara la selección de las mismas y los criterios que fueron tomados.

Transistores, indicar los criterios tomados para la selección de los mis-mos, y las características de los mismos que los hacen ideales para estaaplicación.

Demux1a4, indicar el demultiplexor utilizado para habilitar cada display.O el elemento utilizado en su lugar.

Incluir patillaje, lista de componentes y el circuito completo.

Indicar en la placa el grupo al que corresponde, y el grupo grande al quecorresponde.Ejemplo: GA-g1, la placa es del grupo 1 que a su vez pertenceal grupo A.

Page 3: Multiplexación de Display 7 Segmentos

1.1 Diseño del circuíto 3

1.1. Diseño del circuítoEl siguiente análisis se llevará a cabo para un display del tipo cátodo común,

realizando un circuíto equivalente de un led en serie con una resistencia(se eligióde antemano con el valor de 470Ω) el cual hace limitar la corriente que circulapor él, se tiene la siguente gráfica:

Figura 2: Circuíto equivalete de un led en estado activo

Las consideraciones son las siguientes, para que el led tratado como un diodoideal pase al estado de conducción tiene entre sus terminales una tensión de0.7[V], y una resistencia en directa que ronda los Rforward = 30Ω, ademásasumiendo que la tensión máxima de VCC = 5[V ], se tiene que la corriente quedebe circular por el circuíto es:

I =VCC − 0,7

470 +RforwardI = 8,6mA

entonces se asume que la corriente máxima es de:

Imáx 1 led = 10mA (1)

Como un 7segmentos tiene 8 de estos la corriente máxima que necesita unelemento tal es de:

Imáx 1 7seg = 80mA

Esta corriente, es la que circulará por el colector de cada transistor, por lotanto IC max = 80mA, para un transistor del tipo Q2N2222, se tiene que lacorriente máxima que soporta por el colector es de unos 800mA, por lo tantoeste transistor es elejido para el circuíto, por ser más que óptimo para ello.

Como este transistor será utilizado como un interruptor, debe operar en lazona de saturación y corte(ON-OFF), por lo tanto el siguiente cuestionamien-to es a partir de que corriente en la base(Ib mín) el debe entrar en saturación;volviendo al cálculo de la operación de un led (1), este debe ser la corrientecuando esta encendido solo un led del 7segmento, por lo tanto a esta corri-ente el transistor ya debe estar en ON(saturado), entonces se hace la siguiente

Page 4: Multiplexación de Display 7 Segmentos

1.1 Diseño del circuíto 4

consideración:Imín sat = 3mA

Y como el valor de β del transistor elegido es de aproximadamente β = 150,se halla la corriente mínima en la base del transistor para que entre en saturaciónde la siguiente manera:

Ib mín =Imín sat

βIb mín =

3mA

150

Ib mín = 20µA

Ahora se hace un circuíto equivalente de un transistor en zona de activa.

Figura 3: Transistor en estado activo

El valor de V es la salida del integrado TTL, como es sabido que el valormínimo de salida a nivel alto es de 2,4[V ] y el máximo de 5[V ], se procede ahallar el valor de la resistencia de base :

Rb =V − 0,7

20µA

Como a una tensión menor a 2.4[V], el debe estar en activo, se considera quea partir de una tensión mayor a 2[V] ya debe entrar en saturación, el valor deRb, es por lo tanto:

Rb =V − 0,7

20µARb =

2 − 0,7

20µA

Rb = 65kΩ

Como los segmentos a ser encendidos van a activarse uno a la vez, la corrientemáxima que circulará por cada resistencia de 470Ω es de unos 10mA, por lo tantotodas las resistencias serán de 1/4W de potencia.

Page 5: Multiplexación de Display 7 Segmentos

1.2 Lista de materiales 5

La corriente hallada para el transistor en la base es de Ib mín = 20µA, ycomo esta corriente no varía mucho con lo calculado, las resistencias de 65kΩtambién serán de 1/4W de potencia1

1.2. Lista de materiales4 Transistores 2N2222

4 Resistencias de 1/4[W ] de 68kΩ

9 Resistencias de 1/4[W ] de 470Ω

4 Display 7 segmentos tipo catodo común

1 Placa universal de 10cm× 10cm

10 Bloques de terminales de conección

1 TTL 74139 demultiplexor de 2 a 4

1 TTL 7404 inversor

1 Base de coneccíón para CI de 14 pines.

1 Base de coneccíón para CI de 16 pines.

Equipo de soldar, estaño, cables, etc.

1Todas estas consideraciones se hacen al suponer que la tensión a la cual operarán lasresistencias es de 5V como máximo.

Page 6: Multiplexación de Display 7 Segmentos

1.3 Patillaje 6

1.3. Patillaje

Figura 4: Patillaje del circuíto diseñado.

Figura 5: Diagrama del display y de los segmentos

El orden de las salidas en el código de VHDL es abcdefgh.

Page 7: Multiplexación de Display 7 Segmentos

1.4 Dispositivos elegidos 7

1.4. Dispositivos elegidos1.4.1. El 74139(DUAL 1-OF-4 DECODER/DEMULTIPLEXER)

Figura 6: Diagrama de conección del 74139(vista superior)

Tabla de verdadEntradas Salidas

E A1 A0 O0 O1 O2 O3

1 X X 1 1 1 10 0 0 0 1 1 10 0 1 1 0 1 10 1 0 1 1 0 10 1 1 1 1 1 0

Cuadro 1: Tabla de verdad del 74139

Símbolo Parámetro Nivel Límites Unidades Condicionesde retardo Min Típico Max de Testeo

tPLH Propagation Delay 3 18 29 VCC = 5VtPHL Address to Output 3 25 38 ηs CL = 15pFtPLH Propagation Delay 2 16 24tPHL Enable to Output 2 21 32

Cuadro 2: Características de conmutación

Page 8: Multiplexación de Display 7 Segmentos

1.4 Dispositivos elegidos 8

1.4.2. El 7404(SIX INVERTERS)

Figura 7: Diagrama de conecciones del 7404(vista superior)

Familia Std ALS AS F H L LS SPropagation Delay ηs 10 6 2.75 3.5 6 33 9.5 3Supply Current mA 12 2 8 6.9 26 1.2 3 23

Cuadro 3: Características de conmutación

1.4.3. Transistor 2N2222

Símbolo Parámetro Condiciones Mín. Max. UnidadesIC Corriente - 800 mAPtot Pot. máxima Tamb 6 25C - 500 mW

VCEsat I. de Saturación IC = 150mA; IB = 15mA - 400 mVts t. de establecimiento - 200 ηstr t. de subida - 25 ηston turn-on time ICon = 150mA; IBon = 15mA; IBoff = −15mA - 35 ηstoff turn-off time - 250 ηs

Cuadro 4: Características eléctricas del transistor 2N2222.

Page 9: Multiplexación de Display 7 Segmentos

1.4 Dispositivos elegidos 9

1.4.4. Cálculo de la frecuencia máxima

Considerando todas las tablas anteriores, se halla la frecuencia máxima a lacual puede ser expuesta el siguiente circuíto para que la respuesta sea la de-seada(de encender los segmentos), pues podría “saturarse” al ser una frecuenciamuy elevada.

Paso por el TTL 74139Considerando la tabla (2) del integrado, se puede ver que el tiempo deconmutación entre un estado y otro está dado por:

t74139 = tPLH + tPHL t74139 = 56ηs

Paso por el TTL 7404De acuerdo a la tabla (3), y el elegido fue de la familia 74HCU04AP setiene que:

t7404 = 6ηs

Paso por el transistor 2N2222Observando la tabla (4) se puede hallar el tiempo de respuesta al paso porel transistor:

t2N2222 = turn− on+ turn− off t2N2222 = 285ηs

Por lo tanto el tiempo máximo a la cual el circuíto puede tener la respuestadeseada, considerando un tiempo adicional de retardo entre las conecciones delos componentes terror, variaciones con la temperatura, etc., se tiene:

tcto = t74139 + t7404 + t2N2222 + terror tcto = 370ηs

Entonces la frecuencia límite de operación es:

fmáx = 1tcto

= 2,7MHz (2)

Page 10: Multiplexación de Display 7 Segmentos

2 Práctica 2 10

2. Práctica 2Realizar la descripción en VHDL del diagrama de estados de la figura (8),para controlar el circuito realizado en la práctica (1). Utilizar el métodode diseño de la figura 3.

Figura 8: FSM Moore

Incluir en el informe el diagrama del circuito digital, la descripción enVHDL, y la simulación funcional. Para la simulación utilizar un contadormás pequeño que el utilizado en la implementación. Realizar cambio dedatos y display a una frecuencia de 1kHz. Los registros en la figura (9)contienen los datos a ser mostrados en los display, los datos deben serdistintos.

Figura 9: Diagrama en bloques de circuito a implementar.

Page 11: Multiplexación de Display 7 Segmentos

2.1 Análisis y Diseño del FSM 11

2.1. Análisis y Diseño del FSMSe hace la siguiente igualdad AB = Cont, Z1Z0 = Selector

donde:B y Z0 son LSB

Tabla de estadosEntradas Salidas

AB = 00 AB = 01 AB = 10 AB = 11 Z1 Z0

D0 D0 D1 D0 D0 0 0D1 D1 D1 D2 D1 0 1D2 D2 D2 D2 D3 1 0D3 D0 D3 D3 D3 1 1

Cuadro 5: Tabla de estados del FSM

Asignación de Estados

Y1 Y0 Estado0 0 D0

0 1 D1

1 0 D2

1 1 D3

Cuadro 6: Asignación de estados para el FSM

Estado próximoEstado actual AB = 00 AB = 01 AB = 10 AB = 11Y1 Y0 Y1 Y0 Y1 Y0 Y1 Y0 Y1 Y0

1 D0 0 0 0 0 0 1 0 0 0 02 D1 0 1 0 1 0 1 1 0 0 13 D2 1 0 1 0 1 0 1 0 1 14 D3 1 1 0 0 1 1 1 1 1 1

Cuadro 7: Transiciónes de estados del FSM

Page 12: Multiplexación de Display 7 Segmentos

2.2 Tipo de flip flop 12

Flip-flop tipo DFlip-flop D1 Flip-flop D0

AB AB00 01 10 11 00 01 10 11

1 0 0 0 0 0 1 0 02 0 0 1 0 1 1 0 13 1 1 1 1 0 0 0 14 0 1 1 1 0 1 1 1

Cuadro 8: Elección de tabla de verdad y tipo de flip flop

2.2. Tipo de flip flop

D1 = f(A,B, Y1, Y0) :

00

01

12

03

04

05

16

17

08

19

110

111

012

013

114

115A

B

Y1

Y0

D1 = Y1Y0 +BY1 +ABY0

D0 = f(A,B, Y1, Y0) :

00

11

02

03

14

15

06

17

08

09

010

111

012

113

114

115A

B

Y1

Y0

D0 = BY0+ABY1+ABY1+AY1Y0+AY1Y0

2.3. SalidasDe acuerdo al cuadro (5), y considerando que en el modelo de MOORE, se

identifica la salidas sólo en términos del estado actual del dispositivo, se tiene

Z1 = f(Y1, Y0) :

00

01

12

13

Y1

Y0

Z1 = Y1

Z0 = f(Y1, Y0) :

00

11

02

13

Y1

Y0

Z0 = Y0

Page 13: Multiplexación de Display 7 Segmentos

2.4 Diagramas 13

2.4. DiagramasVer código VHL(2.7.1)

2.4.1. General

Figura 10: Diagrama del bloque principal del circuíto

2.4.2. Bloque de interconecciones entre componenetes

Ver código VHDL(2.7.2)

Figura 11: Interconexiones entre los distintos bloques del circuíto

Page 14: Multiplexación de Display 7 Segmentos

2.4 Diagramas 14

2.4.3. Divisor reloj

Ver código VHDL(2.7.3)

Figura 12: Dividor del reloj principal al deseado

2.4.4. Contador

Ver código VHDL(2.7.4)

Figura 13: Contador para los estados del FSM

Page 15: Multiplexación de Display 7 Segmentos

2.4 Diagramas 15

2.4.5. Flip-Flop tipo D

Ver código VHDL(2.7.5)

Figura 14: Flip-Flop tipo D del circuíto

2.4.6. Conecciones

Ver código VHDL(2.7.6)

Figura 15: Conecciones entre el cto. combinacional y la memoria

Page 16: Multiplexación de Display 7 Segmentos

2.4 Diagramas 16

2.4.7. Registro

Ver código VHDL(2.7.7)

Figura 16: Registro a ser mostrado al display

2.4.8. Display

Ver código VHDL(2.7.8)

Figura 17: Decodificador para el display 7 segmentos

Page 17: Multiplexación de Display 7 Segmentos

2.5 Simulación Funcional 17

2.5. Simulación Funcional

Figura 18: Dagirama funcional del circuíto

Page 18: Multiplexación de Display 7 Segmentos

2.6 Asignación de Pines del PLD 18

2.6. Asignación de Pines del PLD

Asignación de Pines de J1J1 Pin de 7128 E/S Variable1 83 clk2 44 clk_out3 45 sel_out[1]4 46 sel_out[0]7 48 dato_out[7]8 49 dato_out[6]9 50 dato_out[5]10 51 dato_out[4]13 52 dato_out[3]15 73 dato_out[2]16 74 dato_out[1]17 75 dato_out[0]

Cuadro 9: Asignación de Pines de J1 del PLD

Figura 19: Pines asignados a las E/S del FSM

Page 19: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 19

2.7. Descripción en VHDL2.7.1. Entidad Principal(four_display)

library ieee;use ieee.std_logic_1164.all;entity four_display is--Mapeamiento para obtener una ‘‘caja’’ única.port(-- Input portsclk : in std_logic;-- Output portsclk_out : out std_logic;dato_out : out std_logic_vector(7 downto 0);sel_out : out std_logic_vector (1 downto 0));end four_display;architecture estructural of four_display iscomponent four_display2 isport(-- Input portsclk0 : in std_logic;-- Output portsclk_out0 : out std_logic;dato_out0 : out std_logic_vector(7 downto 0);sel_out0 : out std_logic_vector (1 downto 0));end component;beginGeneral: four_display2 port map (clk0 => clk,clk_out0 => clk_out,dato_out0 => dato_out,sel_out0 => sel_out);end estructural;

Page 20: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 20

2.7.2. Entidad four_display2

library ieee;use ieee.std_logic_1164.all;entity four_display2 is--Entidad de mapeamiento de todos losgeneric(N: natural := 1);--componentes declarados en el cuerpo del códigoport(-- Input portsclk0 : in std_logic;-- Output portsclk_out0 : out std_logic;dato_out0 : out std_logic_vector(7 downto 0);sel_out0 : out std_logic_vector (1 downto 0));end four_display2;architecture estructural of four_display2 iscomponent DivisorReloj isport(clk1 : in std_logic;Reloj_out: out std_logic);end component;component contador isport(Reloj_out1: in std_logic;cont: out std_logic_vector(1 downto 0)

);end component;component biestD isport(Reloj_out2,d: in std_logic;q: out std_logic);end component;component coneccion is

port(

-- Input portsa: in std_logic;--MSB contadorb: in std_logic;--LSB contadory1: in std_logic;--MSB q flip-flopy0: in std_logic;--LSB q flip-flop

Page 21: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 21

--Output portsd1: out std_logic;--MSB d flip-flopd0: out std_logic --LSB d flip-flop);end component;

component registro isport(selector: in std_logic_vector(1 downto 0);bcd: out std_logic_vector(4 downto 0));end component;component display isport(svEntrada: in std_logic_vector(4 downto 0);svSalida: out std_logic_vector(7 downto 0));end component;signal reloj_princ : std_logic;signal bcd_princ : std_logic_vector(4 downto 0);signal contar_princ : std_logic_vector(1 downto 0);signal sel : std_logic_vector(1 downto 0);signal dd1 : std_logic;signal dd0 : std_logic;signal yy1 : std_logic;signal yy0 : std_logic;begin-- Divisor de frecuencia de 8MHZ a 1kHZ.DIV : DivisorReloj port map (clk1 => clk0,Reloj_out => reloj_princ);clk_out0 <= reloj_princ;--ContadorAB : contador port map (Reloj_out1 => reloj_princ ,cont => contar_princ);FF_D1 :for i in 0 to N generate

Bit_1 : if (i = 0) generateD1 : biestD port map (Reloj_out2 => reloj_princ,d => dd1,q => yy1);

Page 22: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 22

end generate;FF_D0 : if (i = N) generateD0 : biestD port map (Reloj_out2 => reloj_princ,d => dd0,q => yy0);end generate;end generate;Netlist : coneccion port map (a => contar_princ(1),b => contar_princ(0),y1 => yy1,y0 => yy0,d0 =>dd0,d1 => dd1);sel_out0 <= yy1&yy0;sel <= yy1&yy0;Reg : registro port map (selector => sel,bcd => bcd_princ);Disp : display port map (svEntrada => bcd_princ,svSalida => dato_out0);end estructural;

Page 23: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 23

2.7.3. Entidad DivisorReloj

library ieee;use ieee.std_logic_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity DivisorReloj is--Divide el reloj principal delport( --PLD entre una cantidad deseada.

clk1 : in std_logic;Reloj_out: out std_logic

);end DivisorReloj;architecture behavioral of DivisorReloj issignal count: integer range 0 to 100000;signal reloj_princ2 : std_logic;beginprocessbeginwait until clk1’event and clk1=’1’;if count < 8000 then--Divide la frecuencia principal entre 8000count <=count + 1;--para obtener 1kHzelsecount <=0;end if;if count = 8000 thenif reloj_princ2 = ’0’ thenreloj_princ2 <= ’1’;elsereloj_princ2 <= ’0’;end if;end if;end process;Reloj_out <= reloj_princ2;end behavioral;

Page 24: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 24

2.7.4. Entidad contador

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity contador is--Contador de ‘‘00’’,‘‘01’’,‘‘10’’,‘‘11’’

port(Reloj_out1: in std_logic;cont: out std_logic_vector(1 downto 0)

);end contador;architecture arquit of contador issignal contar : std_logic_vector(1 downto 0);beginprocess (Reloj_out1,contar) isbeginif Reloj_out1’event and Reloj_out1=’1’ then

if contar < "11" thencontar <= contar + 1;elsecontar <= "00";end if;end if;cont <= contar;end process;end arquit;

Page 25: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 25

2.7.5. Entidad biestD

library ieee;use ieee.std_logic_1164.all;entity biestD is--Descripción del flip-flop tipo Dport(Reloj_out2,d: in std_logic;q: out std_logic);end entity;architecture archbiestD of biestD isbeginp: process(Reloj_out2,d)beginif Reloj_out2’event and Reloj_out2=’1’ thenq <= d;end if;end process;end;

Page 26: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 26

2.7.6. Entidad coneccion

library ieee;use ieee.std_logic_1164.ALL;entity coneccion is--Conecciones hechas entre la memoria

port --y el circuito combinacional(-- Input ports

a: in std_logic;b: in std_logic;y1: in std_logic;y0: in std_logic;--Output portsd1: out std_logic;d0: out std_logic

);end coneccion;architecture arquitconecc of coneccion isbeginprocess (a,b,y1,y0) isbegind1 <= ((y1 and not(y0)) or (b and y1) or (a and not(b) and y0));d0 <= ((b and y0) or (not(a) and not(y1) and y0) or (not(a) and b and not(y1)) or(a and b and y1) or (a and y1 and y0));end process;end arquitconecc;

Page 27: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 27

2.7.7. Entidad registro

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity registro is--Valores a ser mostrados a los display’sport(selector: in std_logic_vector(1 downto 0);bcd: out std_logic_vector(4 downto 0));end registro;architecture arquit of registro isbeginprocess (selector) isbegincase selector is

when "11" => bcd <= "10000";--Hwhen "10" => bcd <= "00000";--Owhen "01" => bcd <= "10010";--Lwhen "00" => bcd <= "01010";--Awhen others=> bcd <= "10111";

end case;end process;end arquit;

Page 28: Multiplexación de Display 7 Segmentos

2.7 Descripción en VHDL 28

2.7.8. Entidad display

library ieee;use ieee.std_logic_1164.all;entity display is--decodificador para el display 7 segmentoport(svEntrada: in std_logic_vector(4 downto 0);svSalida: out std_logic_vector(7 downto 0));end display;architecture displayArch of display isbeginDec7seg: process (svEntrada)begin

case svEntrada is-- Orden de las salidas (segmentos) ŞabcdefghŤwhen "00000" => svSalida <= "11111100";--0when "00001" => svSalida <= "01100000";--1when "00010" => svSalida <= "11011010";--2when "00011" => svSalida <= "11110010";--3when "00100" => svSalida <= "01100110";--4when "00101" => svSalida <= "10110110";--5when "00110" => svSalida <= "10111110";--6when "00111" => svSalida <= "11100010";--7when "01000" => svSalida <= "11111110";--8when "01001" => svSalida <= "11110110";--9when "01010" => svSalida <= "11101110";--Awhen "01011" => svSalida <= "00111110";--Bwhen "01100" => svSalida <= "10011100";--Cwhen "01101" => svSalida <= "01111010";--Dwhen "01110" => svSalida <= "10011110";--Ewhen "01111" => svSalida <= "10001110";--Fwhen "10000" => svSalida <= "01101110";--Hwhen "10001" => svSalida <= "01111000";--Jwhen "10010" => svSalida <= "00011100";--Lwhen "10011" => svSalida <= "00111010";--owhen "10100" => svSalida <= "11001110";--Pwhen "10101" => svSalida <= "00001010";--Rwhen "10110" => svSalida <= "01111100";--Uwhen "10111" => svSalida <= "11110110";--.when others => svSalida <= "00000000";

end case;end process Dec7seg;end displayArch;