Detecter de secuencias que busca la secuencia 1101y al encontrarla activa la salida Z
library ieee ;
use ieee.std_logic_1164.all ;
entity det_sec is
port ( CLK, RESET, x : in std_logic ;
z : out std_logic );
end det_sec ;
architecture detector_1 of det_sec is
type tipo_estado is ( A, B, C, D ) ;
signal estado, siguiente_estado : tipo_estado ;
begin
process ( CLK, RESET )
begin
if ( RESET = '1' ) then
estado <= A ;
elsif ( CLK'event and CLK = '1' ) then
estado <= siguiente_estado ;
end if;
end process ;
process ( x, estado )
begin
case estado is
when A =>
if x = '1' then
siguiente_estado <= B ;
else
siguiente_estado <= A ;
end if ;
when B =>
if x = '1' then
siguiente_estado <= C ;
else
siguiente_estado <= A ;
end if ;
when C =>
if x = '1' then
siguiente_estado <= C ;
else
siguiente_estado <= D ;
end if;
when D =>
if x = '1' then
siguiente_estado <= B ;
else
siguiente_estado <= A ;
end if ;
end case ;
end process ;
process ( x, estado )
begin
case estado is
when A =>
z <= '0' ;
when B =>
z <= '0' ;
when C =>
z <= '0' ;
when D =>
if x = '1' then
z <= '1' ;
else
z <= '0' ;
end if ;
end case ;
end process ;
end detector_1 ;
Mostrando entradas con la etiqueta process. Mostrar todas las entradas
Mostrando entradas con la etiqueta process. Mostrar todas las entradas
sábado, 9 de julio de 2011
domingo, 19 de junio de 2011
VHDL. Decodificador 3 a 8
aqui les dejo el codigo en VHDL para un decodificador 3 a 8 utilizando process, case, if y vectores. Les recomiendo Geany para escribir el codigo y ModelSim para compilarlo y probarlo. exito
library ieee;
use ieee.std_logic_1164.all;
entity decodificador_3_a_8 is
port ( H : in std_logic;
S : in std_logic_vector(2 downto 0);
D : out std_logic_vector(7 downto 0));
end decodificador_3_a_8;
architecture estructural_1 of decodificador_3_a_8 is
begin
process(S,H)
begin
case s is
when "000" =>
if H ='1' then
D <= "00000001";
else
D <= "00000000";
end if;
when "001" =>
if H ='1' then
D <= "00000010";
else
D <= "00000000";
end if;
when "010" =>
if H ='1' then
D <= "00000100";
else
D <= "00000000";
end if;
when "011" =>
if H ='1' then
D <= "00001000";
else
D <= "00000000";
end if;
when "100" =>
if H ='1' then
D <= "00010000";
else
D <= "00000000";
end if;
when "101" =>
if H ='1' then
D <= "00100000";
else
D <= "00000000";
end if;
when "110" =>
if H ='1' then
D <= "01000000";
else
D <= "00000000";
end if;
when "111" =>
if H ='1' then
D <= "10000000";
else
D <= "00000000";
end if;
when others =>
D <= "00000000";
end case;
end process;
end estructural_1;
listo.
library ieee;
use ieee.std_logic_1164.all;
entity decodificador_3_a_8 is
port ( H : in std_logic;
S : in std_logic_vector(2 downto 0);
D : out std_logic_vector(7 downto 0));
end decodificador_3_a_8;
architecture estructural_1 of decodificador_3_a_8 is
begin
process(S,H)
begin
case s is
when "000" =>
if H ='1' then
D <= "00000001";
else
D <= "00000000";
end if;
when "001" =>
if H ='1' then
D <= "00000010";
else
D <= "00000000";
end if;
when "010" =>
if H ='1' then
D <= "00000100";
else
D <= "00000000";
end if;
when "011" =>
if H ='1' then
D <= "00001000";
else
D <= "00000000";
end if;
when "100" =>
if H ='1' then
D <= "00010000";
else
D <= "00000000";
end if;
when "101" =>
if H ='1' then
D <= "00100000";
else
D <= "00000000";
end if;
when "110" =>
if H ='1' then
D <= "01000000";
else
D <= "00000000";
end if;
when "111" =>
if H ='1' then
D <= "10000000";
else
D <= "00000000";
end if;
when others =>
D <= "00000000";
end case;
end process;
end estructural_1;
listo.
Suscribirse a:
Entradas (Atom)