entity dos is
Port ( clk2 : in STD_LOGIC;
div44: inout STD_LOGIC_VECTOR (1 downto 0);
div4 : out STD_LOGIC;
selec: out STD_LOGIC_VECTOR (4 downto 0));
end dos;
architecture Behavioral of dos is
begin
BLOQUE TRES se obtiene un clock de periodo igual
a 1 segundo, para conseguirlo se necesita dividir la frecuencia
inicial de 1500Hz entre 1500, lo cual dará como resultado
1Hz, equivalente a 1 ciclo por segundo.
entity tres is
Port (div4 : in STD_LOGIC;
segun : inout STD_LOGIC);
end tres;
architecture Behavioral of tres is
signal a:integer;
begin
BLOQUE CUATRO empezará la secuencia del
reloj, el cual está conectado en cascada con los
siguientes bloques, este bloque será utilizado para
mostrar los segundos.
entity cuatro is
Port (segun : in STD_LOGIC;
dig00 : inout STD_LOGIC_VECTOR (3 downto 0);
dig1 : out STD_LOGIC;
sal1 : out STD_LOGIC_VECTOR (3 downto 0));
end cuatro;
architecture Behavioral of cuatro is
BLOQUE CINCO continúa la cuenta de los
segundos en decenas, así que solo llegará a la
cuenta de 5 y se reiniciará.
entity cinco is
Port (dig1 : in STD_LOGIC;
dig11 : inout STD_LOGIC_VECTOR (3 downto 0);
dig2 : out STD_LOGIC;
sal2 : out STD_LOGIC_VECTOR (3 downto 0));
end cinco;
architecture Behavioral of cinco is
BLOQUE SEIS inicia la cuenta de minutos una vez
que ya han transcurrido 60 segundo, para esto se utiliza la
señal que le proporciona el contador anterior.
entity seis is
Port (dig2 : in STD_LOGIC;
dig22 : inout STD_LOGIC_VECTOR (3 downto 0);
dig3 : out STD_LOGIC;
sal3 : out STD_LOGIC_VECTOR (3 downto 0));
end seis;
architecture Behavioral of seis is
BLOQUE SIETE es el ultimo contador, indica las
decenas de minutos que han transcurrido.
entity siete is
Port (dig3 : in STD_LOGIC;
dig33 : inout STD_LOGIC_VECTOR (3 downto 0);
sal4 : out STD_LOGIC_VECTOR (3 downto 0));
end siete;
architecture Behavioral of siete is
BLOQUE OCHO
entity ocho is
Port ( sal1,sal2,sal3,sal4: in STD_LOGIC_VECTOR (3
downto 0);
selec: in STD_LOGIC_VECTOR (4 downto 0);
aseg : out STD_LOGIC_VECTOR (3 downto 0));
end ocho;
architecture Behavioral of ocho is
end Behavioral;
BLOQUE NUEVE este es un demultiplexor que permite
llevar la información a cada display, el bloque dos
habilita el display de los segundo, y el demultiplexor deja pasar
la cuenta del de los segundos, haciendo lo mismo para cada
display, de esta manera estaremos enviando a cada display, la
cuenta correspondiente en segundos, decenas de segundos, minutos
y decenas de minutos cada 1/1500 parte de segundo, lo cual
será inapreciable para el ojo humano.
entity nueve is
Port ( aseg: in STD_LOGIC_VECTOR (3 downto
0);
adys : out STD_LOGIC_VECTOR (6 downto 0));
end nueve;
architecture Behavioral of nueve is
BLOQUE DIEZ este bloque es un acoplador digital
para impedir pérdidas de información, que
podrían ocurrir, multiplexar los display’s y al
mismo tiempo
multiplexar la información, este es transparente a al
bloque dos, ha diferencia de un flip-flop tipo "D", este no
necesita esperar un ciclo de reloj para actualizar la
salida.
entity diez is
Port ( idys: in STD_LOGIC_VECTOR (4 downto
0);
odys: out STD_LOGIC_VECTOR (4 downto 0));
end diez;
architecture Behavioral of diez is
Reloj en tiempo real (clic en la imagen para ver
video de
funcionamiento)
Para actualizar el refresh de los display’s
había tomado en cuenta una frecuencia de 1 cuarta parte de
segundo, con el cual se obtenía un parpadeo en cada
desplegado del display, así que se optó por elevar
la frecuencia a 1500 Hz y olvidarse de un problema subsecuente,
se observó que ha diferencia de una realización en
lenguaje AHDL,
la programación en VHDL permite, manipular el
sistema con el
clock de entrada para actualizar simultáneamente la
salida, ya se basa en lógica
combinacional.
BIBLIOGRAFÍA:
Circuit Design with VHDL
Volnei A. Pedroni
Designer's Guide to Vhdl
Peter J. Ashenden, Softcover
FPGA-based System Design
Wayne Wolf
NOTAS:
user guide spartan 3
Alberto Torres Gil
MÉXICO
INVESTIGADOR BUAP
MÉXICO, H.H.PUEBLA DE ZARAGOZA, 15 MARZO DE
2007
Página anterior | Volver al principio del trabajo | Página siguiente |