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 |