CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
Multiplexación de Display 7 Segmentos
1. 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 <pedroramirez22@gmail.com>
Práctica de Laboratorio III
2. 1 Practica 1 2
1. Practica 1
Diseñar un circuito con una entrada de datos de 8 bits, y una entrada de
selección de 2 bits. El selector debe habilitar el conjunto de 7 segmentos al
cual corresponde el dato en la entrada, similar al que se observa en la figura
1. El circuito de funcionar a una frecuencia máxima de 1,5kHz. (vamos a
utilizar una frecuencia de 1kHz, pero establecemos una frecuencia mínima
de 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 realizados
para 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 esta
aplicació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 que
corresponde.Ejemplo: GA-g1, la placa es del grupo 1 que a su vez pertence
al grupo A.
3. 1.1 Diseño del circuíto 3
1.1. Diseño del circuíto
El 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 circula
por é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 diodo
ideal pase al estado de conducción tiene entre sus terminales una tensión de
0.7[V], y una resistencia en directa que ronda los Rforward = 30Ω, además
asumiendo que la tensión máxima de VCC = 5[V ], se tiene que la corriente que
debe circular por el circuíto es:
I =
VCC − 0,7
470 + Rforward
I = 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 un
elemento tal es de:
Imáx 1 7seg = 80mA
Esta corriente, es la que circulará por el colector de cada transistor, por lo
tanto IC max = 80mA, para un transistor del tipo Q2N2222, se tiene que la
corriente máxima que soporta por el colector es de unos 800mA, por lo tanto
este 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 la
zona 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 corriente
cuando 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
4. 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ón
de 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 valor
mínimo de salida a nivel alto es de 2,4[V ] y el máximo de 5[V ], se procede a
hallar 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 que
a partir de una tensión mayor a 2[V] ya debe entrar en saturación, el valor de
Rb, es por lo tanto:
Rb =
V − 0,7
20µA
Rb =
2 − 0,7
20µA
Rb = 65kΩ
Como los segmentos a ser encendidos van a activarse uno a la vez, la corriente
máxima que circulará por cada resistencia de 470Ω es de unos 10mA, por lo tanto
todas las resistencias serán de 1/4W de potencia.
5. 1.2 Lista de materiales 5
La corriente hallada para el transistor en la base es de Ib mín = 20µA, y
como 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 materiales
4 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 las
resistencias es de 5V como máximo.
6. 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.
7. 1.4 Dispositivos elegidos 7
1.4. Dispositivos elegidos
1.4.1. El 74139(DUAL 1-OF-4 DECODER/DEMULTIPLEXER)
Figura 6: Diagrama de conección del 74139(vista superior)
Tabla de verdad
Entradas Salidas
E A1 A0 O0 O1 O2 O3
1 X X 1 1 1 1
0 0 0 0 1 1 1
0 0 1 1 0 1 1
0 1 0 1 1 0 1
0 1 1 1 1 1 0
Cuadro 1: Tabla de verdad del 74139
Símbolo Parámetro Nivel Límites Unidades Condiciones
de retardo Min Típico Max de Testeo
tP LH Propagation Delay 3 18 29 VCC = 5V
tP HL Address to Output 3 25 38 ηs CL = 15pF
tP LH Propagation Delay 2 16 24
tP HL Enable to Output 2 21 32
Cuadro 2: Características de conmutación
8. 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 S
Propagation Delay ηs 10 6 2.75 3.5 6 33 9.5 3
Supply 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. Unidades
IC Corriente - 800 mA
Ptot Pot. máxima Tamb 25◦
C - 500 mW
VCEsat I. de Saturación IC = 150mA; IB = 15mA - 400 mV
ts t. de establecimiento - 200 ηs
tr t. de subida - 25 ηs
ton turn-on time ICon = 150mA; IBon = 15mA; IBoff = −15mA - 35 ηs
toff turn-off time - 250 ηs
Cuadro 4: Características eléctricas del transistor 2N2222.
9. 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 la
cual 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 frecuencia
muy elevada.
Paso por el TTL 74139
Considerando la tabla (2) del integrado, se puede ver que el tiempo de
conmutación entre un estado y otro está dado por:
t74139 = tP LH + tP HL t74139 = 56ηs
Paso por el TTL 7404
De acuerdo a la tabla (3), y el elegido fue de la familia 74HCU04AP se
tiene que:
t7404 = 6ηs
Paso por el transistor 2N2222
Observando la tabla (4) se puede hallar el tiempo de respuesta al paso por
el 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 respuesta
deseada, considerando un tiempo adicional de retardo entre las conecciones de
los 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 = 1
tcto
= 2,7MHz (2)
10. 2 Práctica 2 10
2. Práctica 2
Realizar 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étodo
de diseño de la figura 3.
Figura 8: FSM Moore
Incluir en el informe el diagrama del circuito digital, la descripción en
VHDL, y la simulación funcional. Para la simulación utilizar un contador
más pequeño que el utilizado en la implementación. Realizar cambio de
datos 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 ser
distintos.
Figura 9: Diagrama en bloques de circuito a implementar.
11. 2.1 Análisis y Diseño del FSM 11
2.1. Análisis y Diseño del FSM
Se hace la siguiente igualdad AB = Cont, Z1Z0 = Selector
donde:
B y Z0 son LSB
Tabla de estados
Entradas Salidas
AB = 00 AB = 01 AB = 10 AB = 11 Z1 Z0
D0 D0 D1 D0 D0 0 0
D1 D1 D1 D2 D1 0 1
D2 D2 D2 D2 D3 1 0
D3 D0 D3 D3 D3 1 1
Cuadro 5: Tabla de estados del FSM
Asignación de Estados
Y1 Y0 Estado
0 0 D0
0 1 D1
1 0 D2
1 1 D3
Cuadro 6: Asignación de estados para el FSM
Estado próximo
Estado actual AB = 00 AB = 01 AB = 10 AB = 11
Y1 Y0 Y1 Y0 Y1 Y0 Y1 Y0 Y1 Y0
1 D0 0 0 0 0 0 1 0 0 0 0
2 D1 0 1 0 1 0 1 1 0 0 1
3 D2 1 0 1 0 1 0 1 0 1 1
4 D3 1 1 0 0 1 1 1 1 1 1
Cuadro 7: Transiciónes de estados del FSM
12. 2.2 Tipo de flip flop 12
Flip-flop tipo D
Flip-flop D1 Flip-flop D0
AB AB
00 01 10 11 00 01 10 11
1 0 0 0 0 0 1 0 0
2 0 0 1 0 1 1 0 1
3 1 1 1 1 0 0 0 1
4 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) :
0
0
0
1
1
2
0
3
0
4
0
5
1
6
1
7
0
8
1
9
1
10
1
11
0
12
0
13
1
14
1
15
A
B
Y1
Y0
D1 = Y1Y0 + BY1 + ABY0
D0 = f(A, B, Y1, Y0) :
0
0
1
1
0
2
0
3
1
4
1
5
0
6
1
7
0
8
0
9
0
10
1
11
0
12
1
13
1
14
1
15
A
B
Y1
Y0
D0 = BY0+ABY1+ABY1+AY1Y0+A Y1Y0
2.3. Salidas
De 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) :
0
0
0
1
1
2
1
3
Y1
Y0
Z1 = Y1
Z0 = f(Y1, Y0) :
0
0
1
1
0
2
1
3
Y1
Y0
Z0 = Y0
13. 2.4 Diagramas 13
2.4. Diagramas
Ver 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
14. 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
15. 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
16. 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
17. 2.5 Simulación Funcional 17
2.5. Simulación Funcional
Figura 18: Dagirama funcional del circuíto
18. 2.6 Asignación de Pines del PLD 18
2.6. Asignación de Pines del PLD
Asignación de Pines de J1
J1 Pin de 7128 E/S Variable
1 83 clk
2 44 clk_out
3 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
19. 2.7 Descripción en VHDL 19
2.7. Descripción en VHDL
2.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 ports
clk : in std_logic;
-- Output ports
clk_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 is
component four_display2 is
port
(
-- Input ports
clk0 : in std_logic;
-- Output ports
clk_out0 : out std_logic;
dato_out0 : out std_logic_vector(7 downto 0);
sel_out0 : out std_logic_vector (1 downto 0)
);
end component;
begin
General: four_display2 port map (
clk0 => clk,
clk_out0 => clk_out,
dato_out0 => dato_out,
sel_out0 => sel_out
);
end estructural;
20. 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 los
generic(N: natural := 1);--componentes declarados en el cuerpo del código
port
(
-- Input ports
clk0 : in std_logic;
-- Output ports
clk_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 is
component DivisorReloj is
port
(
clk1 : in std_logic;
Reloj_out: out std_logic
);
end component;
component contador is
port
(
Reloj_out1: in std_logic;
cont: out std_logic_vector(1 downto 0)
);
end component;
component biestD is
port
(
Reloj_out2,d: in std_logic;
q: out std_logic
);
end component;
component coneccion is
port
(
-- Input ports
a: in std_logic;--MSB contador
b: in std_logic;--LSB contador
y1: in std_logic;--MSB q flip-flop
y0: in std_logic;--LSB q flip-flop
21. 2.7 Descripción en VHDL 21
--Output ports
d1: out std_logic;--MSB d flip-flop
d0: out std_logic --LSB d flip-flop
);
end component;
component registro is
port
(
selector: in std_logic_vector(1 downto 0);
bcd: out std_logic_vector(4 downto 0)
);
end component;
component display is
port
(
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;
--Contador
AB : contador port map (
Reloj_out1 => reloj_princ ,
cont => contar_princ
);
FF_D1 :for i in 0 to N generate
Bit_1 : if (i = 0) generate
D1 : biestD port map (
Reloj_out2 => reloj_princ,
d => dd1,
q => yy1
);
22. 2.7 Descripción en VHDL 22
end generate;
FF_D0 : if (i = N) generate
D0 : 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;
23. 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 del
port( --PLD entre una cantidad deseada.
clk1 : in std_logic;
Reloj_out: out std_logic
);
end DivisorReloj;
architecture behavioral of DivisorReloj is
signal count: integer range 0 to 100000;
signal reloj_princ2 : std_logic;
begin
process
begin
wait until clk1’event and clk1=’1’;
if count < 8000 then--Divide la frecuencia principal entre 8000
count <=count + 1;--para obtener 1kHz
else
count <=0;
end if;
if count = 8000 then
if reloj_princ2 = ’0’ then
reloj_princ2 <= ’1’;
else
reloj_princ2 <= ’0’;
end if;
end if;
end process;
Reloj_out <= reloj_princ2;
end behavioral;
24. 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 is
signal contar : std_logic_vector(1 downto 0);
begin
process (Reloj_out1,contar) is
begin
if Reloj_out1’event and Reloj_out1=’1’ then
if contar < "11" then
contar <= contar + 1;
else
contar <= "00";
end if;
end if;
cont <= contar;
end process;
end arquit;
25. 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 D
port
(
Reloj_out2,d: in std_logic;
q: out std_logic
);
end entity;
architecture archbiestD of biestD is
begin
p: process(Reloj_out2,d)
begin
if Reloj_out2’event and Reloj_out2=’1’ then
q <= d;
end if;
end process;
end;
26. 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 ports
d1: out std_logic;
d0: out std_logic
);
end coneccion;
architecture arquitconecc of coneccion is
begin
process (a,b,y1,y0) is
begin
d1 <= ((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;
27. 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’s
port
(
selector: in std_logic_vector(1 downto 0);
bcd: out std_logic_vector(4 downto 0)
);
end registro;
architecture arquit of registro is
begin
process (selector) is
begin
case selector is
when "11" => bcd <= "10000";--H
when "10" => bcd <= "00000";--O
when "01" => bcd <= "10010";--L
when "00" => bcd <= "01010";--A
when others=> bcd <= "10111";
end case;
end process;
end arquit;
28. 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 segmento
port
(
svEntrada: in std_logic_vector(4 downto 0);
svSalida: out std_logic_vector(7 downto 0)
);
end display;
architecture displayArch of display is
begin
Dec7seg: process (svEntrada)
begin
case svEntrada is
-- Orden de las salidas (segmentos) ŞabcdefghŤ
when "00000" => svSalida <= "11111100";--0
when "00001" => svSalida <= "01100000";--1
when "00010" => svSalida <= "11011010";--2
when "00011" => svSalida <= "11110010";--3
when "00100" => svSalida <= "01100110";--4
when "00101" => svSalida <= "10110110";--5
when "00110" => svSalida <= "10111110";--6
when "00111" => svSalida <= "11100010";--7
when "01000" => svSalida <= "11111110";--8
when "01001" => svSalida <= "11110110";--9
when "01010" => svSalida <= "11101110";--A
when "01011" => svSalida <= "00111110";--B
when "01100" => svSalida <= "10011100";--C
when "01101" => svSalida <= "01111010";--D
when "01110" => svSalida <= "10011110";--E
when "01111" => svSalida <= "10001110";--F
when "10000" => svSalida <= "01101110";--H
when "10001" => svSalida <= "01111000";--J
when "10010" => svSalida <= "00011100";--L
when "10011" => svSalida <= "00111010";--o
when "10100" => svSalida <= "11001110";--P
when "10101" => svSalida <= "00001010";--R
when "10110" => svSalida <= "01111100";--U
when "10111" => svSalida <= "11110110";--.
when others => svSalida <= "00000000";
end case;
end process Dec7seg;
end displayArch;