Skip to main content

Cronometro (codigo) vhdl

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity cronometro is
    Port ( display : out  STD_LOGIC_VECTOR (7 downto 0);
           clk, reset, enc : in  STD_LOGIC;
           An  : out  STD_LOGIC_VECTOR (3 downto 0));
end cronometro;

architecture Behavioral of cronometro is
signal contador: std_logic_vector  (3 downto 0) :="0000";
signal segundos: std_logic_vector  (13 downto 0) :="00000000000000";
signal contador1: std_logic_vector  (3 downto 0) :="0000";
signal DecSeg: std_logic_vector  (9 downto 0) :="0000000000";
signal contador2: std_logic_vector  (3 downto 0) :="0000";
signal CentSeg: std_logic_vector  (7 downto 0) :="00000000";
signal Anodos: std_logic_vector (1 downto 0 ):="00";

begin
Process (clk, reset, contador, segundos)
begin
if (clk'event and clk = '1') then
if reset= '0' then
contador <="0000";
segundos <="00000000000000";
contador1 <="0000";
DecSeg   <="0000000000";
else
Anodos <= Anodos + 1 ;
if Anodos="11" then
Anodos<= "00";
end if;
case Anodos is
when "00"=> if segundos = "10011100010000" then
contador <= contador + 1 ;
segundos <= "00000000000000";
if contador = "1001" then
contador <= "0000";
end if;
else
segundos <= segundos + 1;
end if;
An <= "1011";
case contador is
when "0000" => display  <= "00000010";
when "0001" => display  <= "10011110";
when "0010" => display  <= "00100100";
when "0011" => display  <= "00001100";
when "0100" => display  <= "10011000";
when "0101" => display  <= "01001000";
when "0110" => display  <= "01000000";
when "0111" => display  <= "00011110";
when "1000" => display  <= "00000000";
when others => display  <= "00011000";
end case;
when "01"=> if CentSeg = "00111000" then
contador2 <= contador2 + 1 ;
CentSeg <= "00000000";
if contador2 = "1001" then
contador2 <= "0000";
end if;
else
CentSeg <= CentSeg + 1;
end if;
An <= "1110";
case contador2 is
when "0000" => display  <= "00000010";
when "0001" => display  <= "10011110";
when "0010" => display  <= "00100100";
when "0011" => display  <= "00001100";
when "0100" => display  <= "10011000";
when "0101" => display  <= "01001000";
when "0110" => display  <= "01000000";
when "0111" => display  <= "00011110";
when "1000" => display  <= "00000000";
when others => display  <= "00011000";
end case;
when others=> if DecSeg = "1111101000" then
contador1 <= contador1 + 1 ;
DecSeg <= "0000000000";
if contador1 = "1001" then
contador1 <= "0000";
end if;
else
DecSeg <= DecSeg + 1;
end if;
An <= "1101";
case contador1 is
when "0000" => display  <= "00000010";
when "0001" => display  <= "10011110";
when "0010" => display  <= "00100100";
when "0011" => display  <= "00001100";
when "0100" => display  <= "10011000";
when "0101" => display  <= "01001000";
when "0110" => display  <= "01000000";
when "0111" => display  <= "00011110";
when "1000" => display  <= "00000000";
when others => display  <= "00011000";
end case;
end case;
end if;
end if;
end process;
end Behavioral;

Comments

Popular posts from this blog

Llamar a 1 800 en USA desde Mexico

Cómo llamar números gratis en USA [toll free] desde México Ok, resulta que alguna vez los números gratis, se llamaban números 1- 800 (01-800 desde México). Pero lo malo de los números es que se acaban, Sobre todo en USA que les encanta vender todo. Ahora los Números gratis pueden ser 1 - 800, 1 - 877, 1 - 866 Para los americanos es cuestion de acostumbrarse, pero para nosotros los usuarios de telmex ¿cómo le hacemos si queremos marcar? Pues en primera pagando, los números gratis en USA usualmente no son gratis desde otros paises. Y en segunda, marcando correctamente. Muchos ya se saben el de los 800, es nada mas cuestion de cambiar el 01 - 800 por 001 - 881, pero y los 1 - 866 ? y los 1 - 877 ? Ahhh pues en mi otro blog ya tenía una entrada con una tablita que lo explica: Si el numero comienza con 1 888 se marca: 001 881 Si el numero comienza con 1 877 se marca: 001 882 Si el numero comienza con 1 866 se marca: 001 883 ¿Por qué? No tengo la más mínima idea, supongo que...

Lectura de la cara de una Llanta

Lectura De La Pared Lateral Externa De La Llanta Hay una gran cantidad de información amoldada en la pared lateral externa de una llanta. Muestra el nombre de la llanta, su tamaño, si es del tipo sellomática o no, el grado de la llanta, la clasificación de velocidad, la carga máxima, el inflado máximo, una advertencia de seguridad importante, y más. Haga "click" sobre un área dentro de la ilustración de la llanta para aprender acerca de los campos individuales de información. (El seguimiento de la ilustración es un resumen de esta información). Información En El Costado De La Llanta De Pasajero Para Información sobre la Pared Lateral Externa de las Llantas de Camiones Ligeros, haga click aquí. P-metric es la versión de E.U. de un sistema métrico de medidas de llanta. "P" es la inicial de pasajero. "215" representa el ancho de la llanta en milímetros. "65" es la proporción dimensional; la proporción de altura y ancho; la altura de esta llanta es 6...

Multimetro ( codigo ) vhdl

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Multimetro is port( clk: in std_logic; tst: inout std_logic_vector (3 downto 0); display: out std_logic_vector (7 downto 0):="00000000"; leds, anodos: out std_logic_vector (3 downto 0):="0000"); end Multimetro; architecture Behavioral of Multimetro is signal barrido: std_logic_vector (1 downto 0):="00"; signal anodo: std_logic_vector (3 downto 0):="0000"; signal contador: std_logic_vector (3 downto 0):="0000"; signal disp,disp1,disp2,disp3: std_logic_vector (7 downto 0):="00000010"; signal x,y,z,w: std_logic_vector (3 downto 0):="0000"; begin process(clk) begin if(clk'event and clk='1') then barrido<=barrido+'1'; if contador contador<=contador+'1'; elsif contador>tst then contador<="0000...