CODIGO VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY secuencia IS Port ( reloj : reset : habent : habsal : cuentamax: selec: anodos: Display7 : in std_logic; in std_logic; in std_logic; out std_logic; in std_logic_vector (2 downto 0); in std_logic_vector (2 downto 0); out std_logic_vector (2 downto 0); out std_logic_vector (6 downto 0)); END secuencia; ARCHITECTURE Comportamiento OF secuencia IS SIGNAL clock: std_logic; SIGNAL MiSecuencia: std_logic_vector (2 downto 0); BEGIN PROCESS(reloj) variable cuenta_pasos : integer range 0 to 9 :=0; BEGIN if reloj = '1' and reloj'event then if cuenta_pasos = 9 then cuenta_pasos :=0; clock <='1'; else cuenta_pasos:=cuenta_pasos+1; clock<='0'; end if; end if; END PROCESS; PROCESS (cuentamax,clock, reset) variable cuenta: std_logic_vector (2 downto 0):="000"; BEGIN IF reset = '1' then MiSecuencia<="000"; ELSIF clock='1' and clock'event then if habent='0' then if MiSecuencia = cuentamax then MiSecuencia<="000"; else if MiSecuencia = "000" then MiSecuencia<="001"; elsif MiSecuencia = "001" then MiSecuencia<="011"; elsif MiSecuencia = "011" then MiSecuencia<="101"; elsif MiSecuencia = "101" then MiSecuencia<="111"; elsif MiSecuencia = "111" then MiSecuencia<="010"; elsif MiSecuencia = "010" then MiSecuencia<="100"; elsif MiSecuencia = "100" then MiSecuencia<="110"; end if; end if; end if; END IF; IF MiSecuencia=cuentamax AND habent = '0' AND clock = '1' THEN habsal<='0'; ELSE habsal<='1'; END IF; END PROCESS; WITH MiSecuencia SELECT Display7<="0000000" WHEN "000", "1111001" WHEN "001", "0110000" WHEN "011", "0010010" WHEN "101", "1111000" WHEN "111", "0100100" WHEN "010", "0011001" WHEN "100", "1111101" WHEN "110", "1000000" when others; anodos<=selec; END Comportamiento; CODIGO VHDL (Por mapeo) library ieee; use ieee.std_logic_1164.all; ENTITY Secuencia IS END Secuencia; ARCHITECTURE Prueba OF Secuencia IS COMPONENT UNAD_Secuencia PORT( q0, q1,q2: OUT STD_LOGIC ); END COMPONENT; SIGNAL q0, q1, q2: std_logic := '0'; BEGIN UUT: UNAD_Secuencia port map(q0, q1, q2); q0 <= '0', '0' after 1 ns, '1' after 2 ns, '1' after 3 ns, '1' after 4 ns, '1' after 5 ns, '0' after 6 ns, '1' after 7 ns, '1' after 8 ns, '0' after 9 ns; q1 <= '0', '0' after 1 ns, '0' after 2 ns, '1' after 3 ns, '0' after 4 ns, '1' after 5 ns, '1' after 6 ns, '0' after 7 ns, '1' after 8 ns, '0' after 9 ns; q2 <= '0', '0' after 1 ns, '0' after 2 ns, '0' after 3 ns, '1' after 4 ns, '1' after 5 ns, '0' after 6 ns, '0' after 7 ns, '0' after 8 ns, '0' after 9 ns; END Prueba; Se puede observar la señal de salida que crea el binario necesario para crear la secuencia: Mapear en 1, 2, 3, 4, 5, 6, 7, 8 ns Como Segundos, con un bucle for o while no incluido para visualizar el mapeo en Simili: 1) 2) 3) 4) 5) 6) 7) 8) 0 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 0 0 CODIGO VHDL library ieee; use ieee.std_logic_1164.all; ENTITY Latch_SR IS END Latch_SR; ARCHITECTURE Prueba OF Latch_SR is COMPONENT UNAD_SR PORT( s, r: in std_logic; q: out std_logic ); END COMPONENT; signal s, r: std_logic; signal q: std_logic := '0'; BEGIN UUT: UNAD_SR port map(s, r, q); s <= '0', '1' after 8 ns, '0' after 18 ns, '1' after 26 ns, '0' after 36 ns; r <= '0', '1' after 18 ns, '0' after 24 ns, '1' after 40 ns, '0' after 47 ns; q <= '0', '1' after 8 ns, '0' after 18 ns, '1' after 26 ns, '0' after 40 ns; END Prueba; Inicio de la simulación Evidencia de carga y compilación del código Señal de salida Línea de tiempo según Requerimiento Formas de onda agregadas a las señales Evidencia de simulación