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
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.
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
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.
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.
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.
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
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.
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)
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.
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
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
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
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
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
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
2.5 Simulación Funcional 17
2.5. Simulación Funcional
Figura 18: Dagirama funcional del circuíto
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
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;
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
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
);
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;
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;
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;
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;
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;
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;
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;

Multiplexación de Display 7 Segmentos

  • 1.
    Universidad Católica “Nuestra Señorade 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 12 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 delcircuí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 delcircuí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 demateriales 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 elegidos7 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 elegidos8 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 elegidos9 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 210 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 yDiseñ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 deflip 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 Funcional17 2.5. Simulación Funcional Figura 18: Dagirama funcional del circuíto
  • 18.
    2.6 Asignación dePines 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 enVHDL 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 enVHDL 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 enVHDL 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 enVHDL 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 enVHDL 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 enVHDL 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 enVHDL 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 enVHDL 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 enVHDL 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 enVHDL 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;