Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniera Mecatrnica
Proyecto final
"Reloj digital"
Baeza Martnez, Jess Daniel
Nava Fausto, Luis Felipe
Resumen En las siguientes lneas se presentar al lector los patrones de solucin empleados en el diseo y
construccin de un reloj digital en el cual es posible leer no solo la hora configurada, sino tambin la fecha en
formato
Palabras Clave Mquina de estados, programacin de eventos, temporizacin.
I. MTODOS
El proyecto presentado en las siguientes lneas
consiste en el diseo y operacin de un reloj digital
en la arquitectura de la tarjeta FPGA Basys 3 que
cumpla con caractersticas especficas, tal como se
muestra en las figuras uno y dos
Reloj
Digital
Comportamiento y
definicin de los patrones
de tiempo
Vector de unidades de
segundo
Divisor de frecuencia
configurado a 1 segundo
Unidades de minuto
Decenas de minuto
Unidades de hora
Decenas de hora
M
P
L
E
X
O
R
Unidades de das
Decenas de das
Unidades de meses
Decenas de meses
Configuracin-aos
M
P
L
E
X
O
R
S
E
L
E
C
T
O
R
MPLEXOR
D
E
M
P
L
E
X
entity Reloj is
Port ( clk,fecha,mf,cent,inc,dec,cam :
STD_LOGIC;
sel : out STD_LOGIC_VECTOR
downto 0);
dis : out STD_LOGIC_VECTOR
downto 0);
segledu : out STD_LOGIC_VECTOR
downto 0);
segledd : out STD_LOGIC_VECTOR
downto 0));
end Reloj;
in
pulso<=not pulso;
pulso1<= not pulso1;
pulso2<= not pulso2;
end if;
if contmul<19999 then
contmul<= contmul+1;
else
contmul<=0;
end if;
if pulso='1' then
ant<=inc;
(3
if inc='1' and ant='0' then
cuenta<='1';
(6
else
cuenta<='0';
(8
end if;
end if;
(4
if pulso1='1' then
ant1<=dec;
if dec='1' and ant1='0' then
cuenta1<='1';
architecture Behavioral of Reloj is
else
signal cont : integer range 0 to 99999999:=0;
cuenta1<='0';
signal cnt : integer range 1 to 20000000:=1;
end if;
signal contmul : integer range 0 to 19999:=0;
end if;
signal segu : integer :=0;
if pulso2='1' then
signal segd : integer :=0;
ant2<=cam;
signal min1 : integer :=0;
if cam='1' and ant2='0' then
signal min2 : integer :=0;
cuenta2<='1';
signal hor1 : integer :=0;
else
signal hor2 : integer :=0;
cuenta2<='0';
signal dia1 : integer :=1;
end if;
signal dia2 : integer :=0;
end if;
signal mes1 : integer :=1;
if cont<99999999 then
signal mes2 : integer :=0;
cont<=cont+1;
signal ano : integer :=0;
else
signal cambios : integer :=0;
if segu<9 then
signal ano2 : integer :=1;
segu<=segu+1;
signal ant, pulso, cuenta, ant1, pulso1, cuenta1,
else
ant2, pulso2, cuenta2 : STD_LOGIC;
segu<=0;
if segd<5 then
begin
segd<=segd+1;
else
process(clk)
segd<=0;
begin
end if;
if clk'event and clk='1' then
end if;
if cnt<20000000 then
if segu>8 and segd=5 then
cnt<=cnt+1;
segu<=0;
else
segd<=0;
cnt<=1;
if min1<9 then
Ingeniera Mecatrnica; Electrnica Digital A; Diciembre 12, 2016
min1<=min1+1;
if ano<9 then
else
ano<=ano+1;
min1<=0;
else
if min2<5 then
ano<=0;
min2<=min2+1;
if ano2<5 then
else
ano2<=ano2+1;
min2<=0;
else
end if;
ano2<=0;
end if;
end if;
if min1>8 and min2=5 then
end if;
min1<=0;
end if;
min2<=0;
end if;
if hor1<9 then
end if;
hor1<=hor1+1;
end if;
else
end if;
hor1<=0;
cont<=0;
if hor2<1 then
end if;
hor2<=hor2+1;
if cuenta2='1' then
else
if cambios<4 then
hor2<=0;
cambios<=cambios+1;
end if;
else
end if;
cambios<=0;
if hor1>3 and hor2=2 then
end if;
hor1<=0;
end if;
hor2<=0;
if cambios=0 and cent='1' and cuenta='1' then
if dia1<9 then
min1<=min1+1;
dia1<=dia1+1;
end if;
else
if cambios=0 and cent='1' and cuenta1='1' then
dia1<=0;
min1<=min1-1;
if dia2<3 then
end if;
dia2<=dia2+1;
if cambios=1 and cent='1' and cuenta='1' then
else
hor1<=hor1+1;
dia2<=0;
end if;
end if;
if cambios=1 and cent='1' and cuenta1='1' then
end if;
hor1<=hor1-1;
if dia1=0 and dia2=3 then
end if;
dia1<=1;
if cambios=2 and cent='1' and cuenta='1' then
dia2<=0;
dia1<=dia1+1;
if mes1<9 then
end if;
mes1<=mes1+1;
if cambios=2 and cent='1' and cuenta1='1' then
else
dia1<=dia1-1;
mes1<=0;
end if;
if mes2<1 then
if cambios=3 and cent='1' and cuenta='1' then
mes2<=mes2+1;
mes1<=mes1+1;
else
end if;
mes2<=0;
if cambios=3 and cent='1' and cuenta1='1' then
end if;
mes1<=mes1-1;
end if;
end if;
if mes1>1 and mes2=1 then
if cambios=4 and cent='1' and cuenta='1' then
mes1<=1;
ano<=ano+1;
mes2<=0;
end if;
Ingeniera Mecatrnica; Electrnica Digital A; Diciembre 12, 2016
case segu is
when 1 => segledu<="000000001";
when 2 => segledu<="000000011";
when 3 => segledu<="000000111";
when 4 => segledu<="000001111";
when 5 => segledu<="000011111";
when 6 => segledu<="000111111";
when 7 => segledu<="001111111";
when 8 => segledu<="011111111";
when 9 => segledu<="111111111";
when others => segledu<="000000000";
II. RESULTADOS
.
Reporte
Reloj funcional
III. CONCLUSIONES
El trabajo realizado a lo largo del semestre queda
resumido en el presente documento junto con la
entrega del modelo funcional en la tarjeta Basys 3.
Los integrantes de este equipo lograron utilizar de
manera efectiva la mayora de los conceptos vistos
en clase y comprenden que cada elemento, cada
estructura y cada entidad declarada a lo largo de la
programacin en lenguaje de VHDL del reloj no es
ms que el fundamento, la base para el desarrollo de
proyectos con mayor grado de complejidad y ms
especficos, los cuales favorecern positivamente a la
formacin profesional del ingeniero futuro.
REFERENCIAS
[1] Maxinez, David; Alcal, Jessica. VHDL, El arte de
programar sistemas digitales. Grupo editorial
Patria, 6ta edicin. Ciudad de Mxico. 2008.